Changeset 326

Show
Ignore:
Timestamp:
09/10/08 17:21:20 (4 months ago)
Author:
wolf
Message:

[NEW] IronCoderLiveTally?: add twitter direct voting support. Had to remove hard-wired password :-)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/cocoa/IronCoderLiveTally/IronCoderLiveTally.xcodeproj/project.pbxproj

    r245 r326  
    1010                770B37ED0679A11B001EADE2 /* IronCoderLiveTally_DataModel.xcdatamodel in Sources */ = {isa = PBXBuildFile; fileRef = 770B37EC0679A11B001EADE2 /* IronCoderLiveTally_DataModel.xcdatamodel */; }; 
    1111                77C8280E06725ACE000B614F /* IronCoderLiveTally_AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 77C8280C06725ACE000B614F /* IronCoderLiveTally_AppDelegate.m */; }; 
     12                794877500E743C070061B85C /* MGTwitterEngine.m in Sources */ = {isa = PBXBuildFile; fileRef = 794877310E743C070061B85C /* MGTwitterEngine.m */; }; 
     13                794877510E743C070061B85C /* MGTwitterHTTPURLConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 794877350E743C070061B85C /* MGTwitterHTTPURLConnection.m */; }; 
     14                794877520E743C070061B85C /* MGTwitterLibXMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 794877370E743C070061B85C /* MGTwitterLibXMLParser.m */; }; 
     15                794877530E743C070061B85C /* MGTwitterMessagesLibXMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 794877390E743C070061B85C /* MGTwitterMessagesLibXMLParser.m */; }; 
     16                794877540E743C070061B85C /* MGTwitterMessagesParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 7948773B0E743C070061B85C /* MGTwitterMessagesParser.m */; }; 
     17                794877550E743C070061B85C /* MGTwitterMiscLibXMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 7948773D0E743C070061B85C /* MGTwitterMiscLibXMLParser.m */; }; 
     18                794877560E743C070061B85C /* MGTwitterMiscParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 7948773F0E743C070061B85C /* MGTwitterMiscParser.m */; }; 
     19                794877570E743C070061B85C /* MGTwitterStatusesLibXMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 794877430E743C070061B85C /* MGTwitterStatusesLibXMLParser.m */; }; 
     20                794877580E743C070061B85C /* MGTwitterStatusesParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 794877450E743C070061B85C /* MGTwitterStatusesParser.m */; }; 
     21                794877590E743C070061B85C /* MGTwitterUsersLibXMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 794877470E743C070061B85C /* MGTwitterUsersLibXMLParser.m */; }; 
     22                7948775A0E743C070061B85C /* MGTwitterUsersParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 794877490E743C070061B85C /* MGTwitterUsersParser.m */; }; 
     23                7948775B0E743C070061B85C /* MGTwitterXMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 7948774B0E743C070061B85C /* MGTwitterXMLParser.m */; }; 
     24                7948775C0E743C070061B85C /* NSData+Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = 7948774D0E743C070061B85C /* NSData+Base64.m */; }; 
     25                7948775D0E743C070061B85C /* NSString+UUID.m in Sources */ = {isa = PBXBuildFile; fileRef = 7948774F0E743C070061B85C /* NSString+UUID.m */; }; 
     26                794877610E743D480061B85C /* RegexKitLite.m in Sources */ = {isa = PBXBuildFile; fileRef = 794877600E743D480061B85C /* RegexKitLite.m */; }; 
     27                794877690E743DAE0061B85C /* libxml2.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 794877670E743DAE0061B85C /* libxml2.2.dylib */; }; 
     28                7948776A0E743DAE0061B85C /* libicucore.A.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 794877680E743DAE0061B85C /* libicucore.A.dylib */; }; 
     29                7948793A0E78D82F0061B85C /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 794879390E78D82F0061B85C /* Security.framework */; }; 
     30                794879700E78DC830061B85C /* EMKeychainItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 7948796D0E78DC830061B85C /* EMKeychainItem.m */; }; 
     31                794879710E78DC830061B85C /* EMKeychainProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7948796F0E78DC830061B85C /* EMKeychainProxy.m */; }; 
    1232                8D11072A0486CEB800E47090 /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 29B97318FDCFA39411CA2CEA /* MainMenu.nib */; }; 
    1333                8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; 
     
    2848                77C8280B06725ACE000B614F /* IronCoderLiveTally_AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IronCoderLiveTally_AppDelegate.h; sourceTree = "<group>"; }; 
    2949                77C8280C06725ACE000B614F /* IronCoderLiveTally_AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IronCoderLiveTally_AppDelegate.m; sourceTree = "<group>"; }; 
     50                794877300E743C070061B85C /* MGTwitterEngine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGTwitterEngine.h; sourceTree = "<group>"; }; 
     51                794877310E743C070061B85C /* MGTwitterEngine.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGTwitterEngine.m; sourceTree = "<group>"; }; 
     52                794877320E743C070061B85C /* MGTwitterEngineDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGTwitterEngineDelegate.h; sourceTree = "<group>"; }; 
     53                794877330E743C070061B85C /* MGTwitterEngineGlobalHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGTwitterEngineGlobalHeader.h; sourceTree = "<group>"; }; 
     54                794877340E743C070061B85C /* MGTwitterHTTPURLConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGTwitterHTTPURLConnection.h; sourceTree = "<group>"; }; 
     55                794877350E743C070061B85C /* MGTwitterHTTPURLConnection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGTwitterHTTPURLConnection.m; sourceTree = "<group>"; }; 
     56                794877360E743C070061B85C /* MGTwitterLibXMLParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGTwitterLibXMLParser.h; sourceTree = "<group>"; }; 
     57                794877370E743C070061B85C /* MGTwitterLibXMLParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGTwitterLibXMLParser.m; sourceTree = "<group>"; }; 
     58                794877380E743C070061B85C /* MGTwitterMessagesLibXMLParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGTwitterMessagesLibXMLParser.h; sourceTree = "<group>"; }; 
     59                794877390E743C070061B85C /* MGTwitterMessagesLibXMLParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGTwitterMessagesLibXMLParser.m; sourceTree = "<group>"; }; 
     60                7948773A0E743C070061B85C /* MGTwitterMessagesParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGTwitterMessagesParser.h; sourceTree = "<group>"; }; 
     61                7948773B0E743C070061B85C /* MGTwitterMessagesParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGTwitterMessagesParser.m; sourceTree = "<group>"; }; 
     62                7948773C0E743C070061B85C /* MGTwitterMiscLibXMLParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGTwitterMiscLibXMLParser.h; sourceTree = "<group>"; }; 
     63                7948773D0E743C070061B85C /* MGTwitterMiscLibXMLParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGTwitterMiscLibXMLParser.m; sourceTree = "<group>"; }; 
     64                7948773E0E743C070061B85C /* MGTwitterMiscParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGTwitterMiscParser.h; sourceTree = "<group>"; }; 
     65                7948773F0E743C070061B85C /* MGTwitterMiscParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGTwitterMiscParser.m; sourceTree = "<group>"; }; 
     66                794877400E743C070061B85C /* MGTwitterParserDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGTwitterParserDelegate.h; sourceTree = "<group>"; }; 
     67                794877410E743C070061B85C /* MGTwitterRequestTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGTwitterRequestTypes.h; sourceTree = "<group>"; }; 
     68                794877420E743C070061B85C /* MGTwitterStatusesLibXMLParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGTwitterStatusesLibXMLParser.h; sourceTree = "<group>"; }; 
     69                794877430E743C070061B85C /* MGTwitterStatusesLibXMLParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGTwitterStatusesLibXMLParser.m; sourceTree = "<group>"; }; 
     70                794877440E743C070061B85C /* MGTwitterStatusesParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGTwitterStatusesParser.h; sourceTree = "<group>"; }; 
     71                794877450E743C070061B85C /* MGTwitterStatusesParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGTwitterStatusesParser.m; sourceTree = "<group>"; }; 
     72                794877460E743C070061B85C /* MGTwitterUsersLibXMLParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGTwitterUsersLibXMLParser.h; sourceTree = "<group>"; }; 
     73                794877470E743C070061B85C /* MGTwitterUsersLibXMLParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGTwitterUsersLibXMLParser.m; sourceTree = "<group>"; }; 
     74                794877480E743C070061B85C /* MGTwitterUsersParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGTwitterUsersParser.h; sourceTree = "<group>"; }; 
     75                794877490E743C070061B85C /* MGTwitterUsersParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGTwitterUsersParser.m; sourceTree = "<group>"; }; 
     76                7948774A0E743C070061B85C /* MGTwitterXMLParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGTwitterXMLParser.h; sourceTree = "<group>"; }; 
     77                7948774B0E743C070061B85C /* MGTwitterXMLParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGTwitterXMLParser.m; sourceTree = "<group>"; }; 
     78                7948774C0E743C070061B85C /* NSData+Base64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+Base64.h"; sourceTree = "<group>"; }; 
     79                7948774D0E743C070061B85C /* NSData+Base64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+Base64.m"; sourceTree = "<group>"; }; 
     80                7948774E0E743C070061B85C /* NSString+UUID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+UUID.h"; sourceTree = "<group>"; }; 
     81                7948774F0E743C070061B85C /* NSString+UUID.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+UUID.m"; sourceTree = "<group>"; }; 
     82                7948775F0E743D480061B85C /* RegexKitLite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegexKitLite.h; sourceTree = "<group>"; }; 
     83                794877600E743D480061B85C /* RegexKitLite.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RegexKitLite.m; sourceTree = "<group>"; }; 
     84                794877670E743DAE0061B85C /* libxml2.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libxml2.2.dylib; path = /usr/lib/libxml2.2.dylib; sourceTree = "<absolute>"; }; 
     85                794877680E743DAE0061B85C /* libicucore.A.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libicucore.A.dylib; path = /usr/lib/libicucore.A.dylib; sourceTree = "<absolute>"; }; 
     86                794879390E78D82F0061B85C /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; 
     87                7948796C0E78DC830061B85C /* EMKeychainItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EMKeychainItem.h; sourceTree = "<group>"; }; 
     88                7948796D0E78DC830061B85C /* EMKeychainItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EMKeychainItem.m; sourceTree = "<group>"; }; 
     89                7948796E0E78DC830061B85C /* EMKeychainProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EMKeychainProxy.h; sourceTree = "<group>"; }; 
     90                7948796F0E78DC830061B85C /* EMKeychainProxy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EMKeychainProxy.m; sourceTree = "<group>"; }; 
    3091                79624FCE0C6F502A0024904A /* nsenumerate.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = nsenumerate.h; sourceTree = "<group>"; }; 
    3192                8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; }; 
     
    39100                        files = ( 
    40101                                8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */, 
     102                                794877690E743DAE0061B85C /* libxml2.2.dylib in Frameworks */, 
     103                                7948776A0E743DAE0061B85C /* libicucore.A.dylib in Frameworks */, 
     104                                7948793A0E78D82F0061B85C /* Security.framework in Frameworks */, 
    41105                        ); 
    42106                        runOnlyForDeploymentPostprocessing = 0; 
     
    49113                        children = ( 
    50114                                77C8280C06725ACE000B614F /* IronCoderLiveTally_AppDelegate.m */, 
     115                                77C8280B06725ACE000B614F /* IronCoderLiveTally_AppDelegate.h */, 
     116                                7948796C0E78DC830061B85C /* EMKeychainItem.h */, 
     117                                7948796D0E78DC830061B85C /* EMKeychainItem.m */, 
     118                                7948796E0E78DC830061B85C /* EMKeychainProxy.h */, 
     119                                7948796F0E78DC830061B85C /* EMKeychainProxy.m */, 
    51120                                79624FCE0C6F502A0024904A /* nsenumerate.h */, 
    52                                 77C8280B06725ACE000B614F /* IronCoderLiveTally_AppDelegate.h */, 
     121                                7948775F0E743D480061B85C /* RegexKitLite.h */, 
     122                                794877600E743D480061B85C /* RegexKitLite.m */, 
    53123                        ); 
    54124                        name = Classes; 
     
    58128                        isa = PBXGroup; 
    59129                        children = ( 
     130                                794879390E78D82F0061B85C /* Security.framework */, 
     131                                794877670E743DAE0061B85C /* libxml2.2.dylib */, 
     132                                794877680E743DAE0061B85C /* libicucore.A.dylib */, 
    60133                                1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, 
    61134                        ); 
     
    86159                                7756732906782D8800D1FEB8 /* Models */, 
    87160                                080E96DDFE201D6D7F000001 /* Classes */, 
     161                                7948772F0E743BF30061B85C /* MGTwitterEngine */, 
    88162                                29B97315FDCFA39411CA2CEA /* Other Sources */, 
    89163                                29B97317FDCFA39411CA2CEA /* Resources */, 
     
    128202                        ); 
    129203                        name = Models; 
     204                        sourceTree = "<group>"; 
     205                }; 
     206                7948772F0E743BF30061B85C /* MGTwitterEngine */ = { 
     207                        isa = PBXGroup; 
     208                        children = ( 
     209                                794877300E743C070061B85C /* MGTwitterEngine.h */, 
     210                                794877310E743C070061B85C /* MGTwitterEngine.m */, 
     211                                794877320E743C070061B85C /* MGTwitterEngineDelegate.h */, 
     212                                794877330E743C070061B85C /* MGTwitterEngineGlobalHeader.h */, 
     213                                794877340E743C070061B85C /* MGTwitterHTTPURLConnection.h */, 
     214                                794877350E743C070061B85C /* MGTwitterHTTPURLConnection.m */, 
     215                                794877360E743C070061B85C /* MGTwitterLibXMLParser.h */, 
     216                                794877370E743C070061B85C /* MGTwitterLibXMLParser.m */, 
     217                                794877380E743C070061B85C /* MGTwitterMessagesLibXMLParser.h */, 
     218                                794877390E743C070061B85C /* MGTwitterMessagesLibXMLParser.m */, 
     219                                7948773A0E743C070061B85C /* MGTwitterMessagesParser.h */, 
     220                                7948773B0E743C070061B85C /* MGTwitterMessagesParser.m */, 
     221                                7948773C0E743C070061B85C /* MGTwitterMiscLibXMLParser.h */, 
     222                                7948773D0E743C070061B85C /* MGTwitterMiscLibXMLParser.m */, 
     223                                7948773E0E743C070061B85C /* MGTwitterMiscParser.h */, 
     224                                7948773F0E743C070061B85C /* MGTwitterMiscParser.m */, 
     225                                794877400E743C070061B85C /* MGTwitterParserDelegate.h */, 
     226                                794877410E743C070061B85C /* MGTwitterRequestTypes.h */, 
     227                                794877420E743C070061B85C /* MGTwitterStatusesLibXMLParser.h */, 
     228                                794877430E743C070061B85C /* MGTwitterStatusesLibXMLParser.m */, 
     229                                794877440E743C070061B85C /* MGTwitterStatusesParser.h */, 
     230                                794877450E743C070061B85C /* MGTwitterStatusesParser.m */, 
     231                                794877460E743C070061B85C /* MGTwitterUsersLibXMLParser.h */, 
     232                                794877470E743C070061B85C /* MGTwitterUsersLibXMLParser.m */, 
     233                                794877480E743C070061B85C /* MGTwitterUsersParser.h */, 
     234                                794877490E743C070061B85C /* MGTwitterUsersParser.m */, 
     235                                7948774A0E743C070061B85C /* MGTwitterXMLParser.h */, 
     236                                7948774B0E743C070061B85C /* MGTwitterXMLParser.m */, 
     237                                7948774C0E743C070061B85C /* NSData+Base64.h */, 
     238                                7948774D0E743C070061B85C /* NSData+Base64.m */, 
     239                                7948774E0E743C070061B85C /* NSString+UUID.h */, 
     240                                7948774F0E743C070061B85C /* NSString+UUID.m */, 
     241                        ); 
     242                        name = MGTwitterEngine; 
    130243                        sourceTree = "<group>"; 
    131244                }; 
     
    157270                        isa = PBXProject; 
    158271                        buildConfigurationList = 26FC0A880875C7B200E6366F /* Build configuration list for PBXProject "IronCoderLiveTally" */; 
     272                        compatibilityVersion = "Xcode 2.4"; 
    159273                        hasScannedForEncodings = 1; 
    160274                        mainGroup = 29B97314FDCFA39411CA2CEA /* IronCoderLiveTally */; 
    161275                        projectDirPath = ""; 
     276                        projectRoot = ""; 
    162277                        targets = ( 
    163278                                8D1107260486CEB800E47090 /* IronCoderLiveTally */, 
     
    186301                                77C8280E06725ACE000B614F /* IronCoderLiveTally_AppDelegate.m in Sources */, 
    187302                                770B37ED0679A11B001EADE2 /* IronCoderLiveTally_DataModel.xcdatamodel in Sources */, 
     303                                794877500E743C070061B85C /* MGTwitterEngine.m in Sources */, 
     304                                794877510E743C070061B85C /* MGTwitterHTTPURLConnection.m in Sources */, 
     305                                794877520E743C070061B85C /* MGTwitterLibXMLParser.m in Sources */, 
     306                                794877530E743C070061B85C /* MGTwitterMessagesLibXMLParser.m in Sources */, 
     307                                794877540E743C070061B85C /* MGTwitterMessagesParser.m in Sources */, 
     308                                794877550E743C070061B85C /* MGTwitterMiscLibXMLParser.m in Sources */, 
     309                                794877560E743C070061B85C /* MGTwitterMiscParser.m in Sources */, 
     310                                794877570E743C070061B85C /* MGTwitterStatusesLibXMLParser.m in Sources */, 
     311                                794877580E743C070061B85C /* MGTwitterStatusesParser.m in Sources */, 
     312                                794877590E743C070061B85C /* MGTwitterUsersLibXMLParser.m in Sources */, 
     313                                7948775A0E743C070061B85C /* MGTwitterUsersParser.m in Sources */, 
     314                                7948775B0E743C070061B85C /* MGTwitterXMLParser.m in Sources */, 
     315                                7948775C0E743C070061B85C /* NSData+Base64.m in Sources */, 
     316                                7948775D0E743C070061B85C /* NSString+UUID.m in Sources */, 
     317                                794877610E743D480061B85C /* RegexKitLite.m in Sources */, 
     318                                794879700E78DC830061B85C /* EMKeychainItem.m in Sources */, 
     319                                794879710E78DC830061B85C /* EMKeychainProxy.m in Sources */, 
    188320                        ); 
    189321                        runOnlyForDeploymentPostprocessing = 0; 
     
    256388                                GCC_WARN_ABOUT_RETURN_TYPE = YES; 
    257389                                GCC_WARN_UNUSED_VARIABLE = YES; 
     390                                HEADER_SEARCH_PATHS = /usr/include/libxml2; 
    258391                                PREBINDING = NO; 
    259392                                SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; 
     
    266399                                GCC_WARN_ABOUT_RETURN_TYPE = YES; 
    267400                                GCC_WARN_UNUSED_VARIABLE = YES; 
     401                                HEADER_SEARCH_PATHS = /usr/include/libxml2; 
    268402                                PREBINDING = NO; 
    269403                                SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; 
  • trunk/cocoa/IronCoderLiveTally/IronCoderLiveTally_AppDelegate.h

    r245 r326  
    88 
    99#import <Cocoa/Cocoa.h> 
     10#import "MGTwitterEngine.h" 
    1011 
    1112@interface IronCoderLiveTally_AppDelegate : NSObject  
     
    1415        IBOutlet NSArrayController *hacksArrayController; 
    1516        IBOutlet NSTableView *hacksTable; 
     17     
     18    MGTwitterEngine *twitterEngine; 
     19    int lastDirectMessageID; 
     20    double pollInterval; 
     21    NSMutableSet    *seenDirectMessageIDs; 
    1622     
    1723    NSPersistentStoreCoordinator *persistentStoreCoordinator; 
  • trunk/cocoa/IronCoderLiveTally/IronCoderLiveTally_AppDelegate.m

    r245 r326  
    11#import "IronCoderLiveTally_AppDelegate.h" 
    22#import "nsenumerate.h" 
     3#import "RegexKitLite.h" 
     4#import "EMKeychainItem.h" 
     5#import "EMKeychainProxy.h" 
    36 
    47@interface NSSortDescriptor (descriptorWithKeyascending) 
     
    1316@implementation IronCoderLiveTally_AppDelegate 
    1417 
     18- (void)addVote:(NSString*)voteIDStr { 
     19    if (!voteIDStr) return; 
     20     
     21    int voteID = [voteIDStr intValue]; 
     22     
     23    nsenumerate ([hacksArrayController arrangedObjects], NSManagedObject, hack) { 
     24                if ([[hack valueForKey:@"number"] intValue] == voteID) { 
     25                        [hack setValue:[NSNumber numberWithInt:[[hack valueForKey:@"votes"] intValue] + 1] 
     26                                        forKey:@"votes"]; 
     27            return; 
     28                } 
     29        } 
     30    NSLog(@"unknown hack number: <%@>", voteIDStr); 
     31} 
     32 
     33#define TWITTER_USER_NAME @"c4" 
    1534- (void)awakeFromNib { 
    16 #if 1 
     35    lastDirectMessageID = -1; 
     36    seenDirectMessageIDs = [[NSMutableSet alloc] init]; 
     37     
    1738        [hacksArrayController performSelector:@selector(setSortDescriptors:) 
    1839                                                           withObject:[NSArray arrayWithObjects: 
     
    2142                                                                   nil] 
    2243                                                           afterDelay:0.0f]; 
    23 #else 
    24         [hacksArrayController setSortDescriptors:[NSArray arrayWithObjects: 
    25                 [NSSortDescriptor descriptorWithKey:@"votes" ascending:NO], 
    26                 [NSSortDescriptor descriptorWithKey:@"number" ascending:YES], 
    27                 nil]]; 
    28 #endif 
     44     
     45    NSString *password = nil; 
     46    { 
     47        EMKeychainItem *keychainItem = [[EMKeychainProxy sharedProxy] genericKeychainItemForService:@"twitter" withUsername:@"c4"]; 
     48        if (keychainItem) { 
     49            password = [keychainItem password]; 
     50        } else { 
     51            password = [[NSUserDefaults standardUserDefaults] stringForKey:@"twitter_password"]; 
     52            if (password) { 
     53                keychainItem = [[EMKeychainProxy sharedProxy] addGenericKeychainItemForService:@"twitter" 
     54                                                                                  withUsername:TWITTER_USER_NAME 
     55                                                                                      password:password]; 
     56            } else { 
     57                NSLog(@"please run the following command: `defaults write %@ twitter_password <myPassword>`", [[NSBundle mainBundle] bundleIdentifier]); 
     58                [NSApp terminate:nil]; 
     59            } 
     60        } 
     61    } 
     62    twitterEngine = [[MGTwitterEngine alloc] initWithDelegate:self]; 
     63    [twitterEngine setUsername:@"c4" password:password]; 
     64    [twitterEngine getRateLimitStatus]; 
    2965} 
    3066 
     
    3874         
    3975} 
     76 
     77#pragma mark MGTwitterEngineDelegate methods 
     78 
     79- (void)requestSucceeded:(NSString *)requestIdentifier 
     80{ 
     81    NSLog(@"Request succeeded (%@)", requestIdentifier); 
     82} 
     83 
     84- (void)requestFailed:(NSString *)requestIdentifier withError:(NSError *)error 
     85{ 
     86    NSLog(@"Twitter request failed! (%@) Error: %@ (%@)",  
     87          requestIdentifier,  
     88          [error localizedDescription],  
     89          [[error userInfo] objectForKey:NSErrorFailingURLStringKey]); 
     90} 
     91 
     92- (void)pollReplies:(id)z { 
     93    assert(-1 != lastDirectMessageID); 
     94    NSLog(@"pollReplies getDirectMessagesSinceID:%d startingAtPage:0", lastDirectMessageID); 
     95    [twitterEngine getDirectMessagesSinceID:lastDirectMessageID startingAtPage:0]; 
     96} 
     97 
     98- (void)statusesReceived:(NSArray *)statuses forRequest:(NSString *)identifier 
     99{ 
     100    NSLog(@"Got statuses:\r%@", statuses); 
     101} 
     102 
     103- (void)directMessagesReceived:(NSArray *)messages forRequest:(NSString *)identifier 
     104{ 
     105    NSLog(@"Got direct messages:\r%@", messages); 
     106    if (![messages count]) return; 
     107     
     108    if (-1 == lastDirectMessageID) { 
     109        seenDirectMessageIDs = [[NSMutableSet alloc] init]; 
     110        nsenumerate (messages, NSDictionary, message) { 
     111            [seenDirectMessageIDs addObject:[message objectForKey:@"id"]]; 
     112        } 
     113        [NSTimer scheduledTimerWithTimeInterval:pollInterval target:self selector:@selector(pollReplies:) userInfo:nil repeats:YES]; 
     114    } else { 
     115        NSMutableArray *filteredDirectMessages = [NSMutableArray array]; 
     116        nsenumerate (messages, NSDictionary, directMessage) { 
     117            if ([seenDirectMessageIDs containsObject:[directMessage objectForKey:@"id"]]) { 
     118                NSLog(@"ignoring seen direct message %@ %@", [directMessage objectForKey:@"id"], directMessage); 
     119            } else { 
     120                [seenDirectMessageIDs addObject:[directMessage objectForKey:@"id"]]; 
     121                [filteredDirectMessages addObject:directMessage]; 
     122            } 
     123        } 
     124        nsenumerate (filteredDirectMessages, NSDictionary, directMessage) { 
     125            NSString *directMessageText = [directMessage objectForKey:@"text"]; 
     126            NSString *voteRegex = @"vote (\\d+) ?(\\d+)? ?(\\d+)?"; 
     127            NSString *vote1 = [directMessageText stringByMatching:voteRegex capture:1]; 
     128            if (vote1) { 
     129                [self addVote:vote1]; 
     130                 
     131                NSString *vote2 = [directMessageText stringByMatching:voteRegex capture:2]; 
     132                [self addVote:vote2]; 
     133                 
     134                NSString *vote3 = [directMessageText stringByMatching:voteRegex capture:3]; 
     135                [self addVote:vote3]; 
     136            } else { 
     137                NSLog(@"ignoring 'vote': %@", directMessage); 
     138            } 
     139            [hacksArrayController rearrangeObjects]; 
     140        } 
     141    } 
     142     
     143    lastDirectMessageID = [[[messages objectAtIndex:0] objectForKey:@"id"] intValue]; 
     144    NSLog(@"lastDirectMessageID <= %d", lastDirectMessageID); 
     145} 
     146 
     147 
     148- (void)userInfoReceived:(NSArray *)userInfo forRequest:(NSString *)identifier 
     149{ 
     150    NSLog(@"Got user info:\r%@", userInfo); 
     151} 
     152 
     153 
     154- (void)miscInfoReceived:(NSArray *)miscInfo forRequest:(NSString *)identifier 
     155{ 
     156        NSLog(@"Got misc info:\r%@", miscInfo); 
     157     
     158    double allowedHitsPerHour = [[[miscInfo objectAtIndex:0] objectForKey:@"hourly-limit"] doubleValue]; 
     159    NSLog(@"allowedHitsPerHour: %f", allowedHitsPerHour); 
     160     
     161    allowedHitsPerHour *= 0.90; 
     162    NSLog(@"allowedHitsPerHour (reduced): %f", allowedHitsPerHour); 
     163     
     164    pollInterval = (60.0/allowedHitsPerHour)*60.0; 
     165    NSLog(@"pollInterval: %f", pollInterval); 
     166     
     167    [twitterEngine getDirectMessagesSinceID:0 startingAtPage:0]; 
     168} 
     169 
     170 
     171- (void)imageReceived:(NSImage *)image forRequest:(NSString *)identifier 
     172{ 
     173    NSLog(@"Got an image: %@", image); 
     174     
     175    // Save image to the Desktop. 
     176    NSString *path = [[NSString stringWithFormat:@"~/Desktop/%@.tiff", identifier]  
     177                      stringByExpandingTildeInPath]; 
     178    [[image TIFFRepresentation] writeToFile:path atomically:NO]; 
     179} 
     180 
     181#pragma mark - 
    40182 
    41183- (IBAction)addVoteAction:(NSTextField*)sender_ {