Changeset 326
- Timestamp:
- 09/10/08 17:21:20 (4 months ago)
- Files:
-
- trunk/cocoa/IronCoderLiveTally/EMKeychainItem.h (added)
- trunk/cocoa/IronCoderLiveTally/EMKeychainItem.m (added)
- trunk/cocoa/IronCoderLiveTally/EMKeychainProxy.h (added)
- trunk/cocoa/IronCoderLiveTally/EMKeychainProxy.m (added)
- trunk/cocoa/IronCoderLiveTally/IronCoderLiveTally.xcodeproj/project.pbxproj (modified) (11 diffs)
- trunk/cocoa/IronCoderLiveTally/IronCoderLiveTally_AppDelegate.h (modified) (2 diffs)
- trunk/cocoa/IronCoderLiveTally/IronCoderLiveTally_AppDelegate.m (modified) (4 diffs)
- trunk/cocoa/IronCoderLiveTally/MGTwitterEngine.h (added)
- trunk/cocoa/IronCoderLiveTally/MGTwitterEngine.m (added)
- trunk/cocoa/IronCoderLiveTally/MGTwitterEngineDelegate.h (added)
- trunk/cocoa/IronCoderLiveTally/MGTwitterEngineGlobalHeader.h (added)
- trunk/cocoa/IronCoderLiveTally/MGTwitterHTTPURLConnection.h (added)
- trunk/cocoa/IronCoderLiveTally/MGTwitterHTTPURLConnection.m (added)
- trunk/cocoa/IronCoderLiveTally/MGTwitterLibXMLParser.h (added)
- trunk/cocoa/IronCoderLiveTally/MGTwitterLibXMLParser.m (added)
- trunk/cocoa/IronCoderLiveTally/MGTwitterMessagesLibXMLParser.h (added)
- trunk/cocoa/IronCoderLiveTally/MGTwitterMessagesLibXMLParser.m (added)
- trunk/cocoa/IronCoderLiveTally/MGTwitterMessagesParser.h (added)
- trunk/cocoa/IronCoderLiveTally/MGTwitterMessagesParser.m (added)
- trunk/cocoa/IronCoderLiveTally/MGTwitterMiscLibXMLParser.h (added)
- trunk/cocoa/IronCoderLiveTally/MGTwitterMiscLibXMLParser.m (added)
- trunk/cocoa/IronCoderLiveTally/MGTwitterMiscParser.h (added)
- trunk/cocoa/IronCoderLiveTally/MGTwitterMiscParser.m (added)
- trunk/cocoa/IronCoderLiveTally/MGTwitterParserDelegate.h (added)
- trunk/cocoa/IronCoderLiveTally/MGTwitterRequestTypes.h (added)
- trunk/cocoa/IronCoderLiveTally/MGTwitterStatusesLibXMLParser.h (added)
- trunk/cocoa/IronCoderLiveTally/MGTwitterStatusesLibXMLParser.m (added)
- trunk/cocoa/IronCoderLiveTally/MGTwitterStatusesParser.h (added)
- trunk/cocoa/IronCoderLiveTally/MGTwitterStatusesParser.m (added)
- trunk/cocoa/IronCoderLiveTally/MGTwitterUsersLibXMLParser.h (added)
- trunk/cocoa/IronCoderLiveTally/MGTwitterUsersLibXMLParser.m (added)
- trunk/cocoa/IronCoderLiveTally/MGTwitterUsersParser.h (added)
- trunk/cocoa/IronCoderLiveTally/MGTwitterUsersParser.m (added)
- trunk/cocoa/IronCoderLiveTally/MGTwitterXMLParser.h (added)
- trunk/cocoa/IronCoderLiveTally/MGTwitterXMLParser.m (added)
- trunk/cocoa/IronCoderLiveTally/NSData+Base64.h (added)
- trunk/cocoa/IronCoderLiveTally/NSData+Base64.m (added)
- trunk/cocoa/IronCoderLiveTally/NSString+UUID.h (added)
- trunk/cocoa/IronCoderLiveTally/NSString+UUID.m (added)
- trunk/cocoa/IronCoderLiveTally/RegexKitLite.h (added)
- trunk/cocoa/IronCoderLiveTally/RegexKitLite.m (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/cocoa/IronCoderLiveTally/IronCoderLiveTally.xcodeproj/project.pbxproj
r245 r326 10 10 770B37ED0679A11B001EADE2 /* IronCoderLiveTally_DataModel.xcdatamodel in Sources */ = {isa = PBXBuildFile; fileRef = 770B37EC0679A11B001EADE2 /* IronCoderLiveTally_DataModel.xcdatamodel */; }; 11 11 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 */; }; 12 32 8D11072A0486CEB800E47090 /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 29B97318FDCFA39411CA2CEA /* MainMenu.nib */; }; 13 33 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; … … 28 48 77C8280B06725ACE000B614F /* IronCoderLiveTally_AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IronCoderLiveTally_AppDelegate.h; sourceTree = "<group>"; }; 29 49 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>"; }; 30 91 79624FCE0C6F502A0024904A /* nsenumerate.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = nsenumerate.h; sourceTree = "<group>"; }; 31 92 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; }; … … 39 100 files = ( 40 101 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 */, 41 105 ); 42 106 runOnlyForDeploymentPostprocessing = 0; … … 49 113 children = ( 50 114 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 */, 51 120 79624FCE0C6F502A0024904A /* nsenumerate.h */, 52 77C8280B06725ACE000B614F /* IronCoderLiveTally_AppDelegate.h */, 121 7948775F0E743D480061B85C /* RegexKitLite.h */, 122 794877600E743D480061B85C /* RegexKitLite.m */, 53 123 ); 54 124 name = Classes; … … 58 128 isa = PBXGroup; 59 129 children = ( 130 794879390E78D82F0061B85C /* Security.framework */, 131 794877670E743DAE0061B85C /* libxml2.2.dylib */, 132 794877680E743DAE0061B85C /* libicucore.A.dylib */, 60 133 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, 61 134 ); … … 86 159 7756732906782D8800D1FEB8 /* Models */, 87 160 080E96DDFE201D6D7F000001 /* Classes */, 161 7948772F0E743BF30061B85C /* MGTwitterEngine */, 88 162 29B97315FDCFA39411CA2CEA /* Other Sources */, 89 163 29B97317FDCFA39411CA2CEA /* Resources */, … … 128 202 ); 129 203 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; 130 243 sourceTree = "<group>"; 131 244 }; … … 157 270 isa = PBXProject; 158 271 buildConfigurationList = 26FC0A880875C7B200E6366F /* Build configuration list for PBXProject "IronCoderLiveTally" */; 272 compatibilityVersion = "Xcode 2.4"; 159 273 hasScannedForEncodings = 1; 160 274 mainGroup = 29B97314FDCFA39411CA2CEA /* IronCoderLiveTally */; 161 275 projectDirPath = ""; 276 projectRoot = ""; 162 277 targets = ( 163 278 8D1107260486CEB800E47090 /* IronCoderLiveTally */, … … 186 301 77C8280E06725ACE000B614F /* IronCoderLiveTally_AppDelegate.m in Sources */, 187 302 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 */, 188 320 ); 189 321 runOnlyForDeploymentPostprocessing = 0; … … 256 388 GCC_WARN_ABOUT_RETURN_TYPE = YES; 257 389 GCC_WARN_UNUSED_VARIABLE = YES; 390 HEADER_SEARCH_PATHS = /usr/include/libxml2; 258 391 PREBINDING = NO; 259 392 SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; … … 266 399 GCC_WARN_ABOUT_RETURN_TYPE = YES; 267 400 GCC_WARN_UNUSED_VARIABLE = YES; 401 HEADER_SEARCH_PATHS = /usr/include/libxml2; 268 402 PREBINDING = NO; 269 403 SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; trunk/cocoa/IronCoderLiveTally/IronCoderLiveTally_AppDelegate.h
r245 r326 8 8 9 9 #import <Cocoa/Cocoa.h> 10 #import "MGTwitterEngine.h" 10 11 11 12 @interface IronCoderLiveTally_AppDelegate : NSObject … … 14 15 IBOutlet NSArrayController *hacksArrayController; 15 16 IBOutlet NSTableView *hacksTable; 17 18 MGTwitterEngine *twitterEngine; 19 int lastDirectMessageID; 20 double pollInterval; 21 NSMutableSet *seenDirectMessageIDs; 16 22 17 23 NSPersistentStoreCoordinator *persistentStoreCoordinator; trunk/cocoa/IronCoderLiveTally/IronCoderLiveTally_AppDelegate.m
r245 r326 1 1 #import "IronCoderLiveTally_AppDelegate.h" 2 2 #import "nsenumerate.h" 3 #import "RegexKitLite.h" 4 #import "EMKeychainItem.h" 5 #import "EMKeychainProxy.h" 3 6 4 7 @interface NSSortDescriptor (descriptorWithKeyascending) … … 13 16 @implementation IronCoderLiveTally_AppDelegate 14 17 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" 15 34 - (void)awakeFromNib { 16 #if 1 35 lastDirectMessageID = -1; 36 seenDirectMessageIDs = [[NSMutableSet alloc] init]; 37 17 38 [hacksArrayController performSelector:@selector(setSortDescriptors:) 18 39 withObject:[NSArray arrayWithObjects: … … 21 42 nil] 22 43 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]; 29 65 } 30 66 … … 38 74 39 75 } 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 - 40 182 41 183 - (IBAction)addVoteAction:(NSTextField*)sender_ {
