├── .gitignore ├── .gitignore.orig ├── License.rtf ├── README.md ├── UAGithubEngine.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcuserdata │ │ ├── orhunt.xcuserdatad │ │ └── WorkspaceSettings.xcsettings │ │ └── owainhunt.xcuserdatad │ │ ├── WorkspaceSettings.xcsettings │ │ └── WorkspaceState.xcuserstate └── xcuserdata │ └── owainhunt.xcuserdatad │ ├── xcbreakpoints │ └── Breakpoints.xcbkptlist │ └── xcschemes │ └── xcschememanagement.plist └── UAGithubEngine ├── NSArray+Utilities.h ├── NSArray+Utilities.m ├── NSData+Base64.h ├── NSData+Base64.m ├── NSInvocation+Blocks.h ├── NSInvocation+Blocks.m ├── NSString+UAGithubEngineUtilities.h ├── NSString+UAGithubEngineUtilities.m ├── NSString+UUID.h ├── NSString+UUID.m ├── UAGithubEngine-Info.plist ├── UAGithubEngine-Prefix.pch ├── UAGithubEngine.h ├── UAGithubEngine.m ├── UAGithubEngineConstants.h ├── UAGithubEngineConstants.m ├── UAGithubEngineRequestTypes.h ├── UAGithubJSONParser.h ├── UAGithubJSONParser.m ├── UAGithubURLConnection.h ├── UAGithubURLConnection.m ├── UAReachability.h ├── UAReachability.m └── en.lproj └── InfoPlist.strings /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.swp 3 | *~.nib 4 | 5 | build/ 6 | 7 | *.pbxuser 8 | *.perspective 9 | *.perspectivev3 10 | 11 | *.mode1v3 12 | *.mode2v3 13 | /UAGithubEngine.xcodeproj/xcuserdata/owainhunt.xcuserdatad/xcschemes/UAGithubEngine.xcscheme 14 | /UAGithubEngine.xcodeproj/project.xcworkspace/xcuserdata/owainhunt.xcuserdatad/UserInterfaceState.xcuserstate 15 | /UAGithubEngine.xcodeproj/xcuserdata/mlussier.xcuserdatad/ 16 | /UAGithubEngine.xcodeproj/xcuserdata/orhunt.xcuserdatad/ 17 | /UAGithubEngine.xcodeproj/project.xcworkspace/xcuserdata/orhunt.xcuserdatad/ 18 | /AppController.m -------------------------------------------------------------------------------- /.gitignore.orig: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.swp 3 | *~.nib 4 | 5 | build/ 6 | 7 | *.pbxuser 8 | *.perspective 9 | *.perspectivev3 10 | 11 | *.mode1v3 12 | *.mode2v3 13 | /UAGithubEngine.xcodeproj/xcuserdata/owainhunt.xcuserdatad/xcschemes/UAGithubEngine.xcscheme 14 | /UAGithubEngine.xcodeproj/project.xcworkspace/xcuserdata/owainhunt.xcuserdatad/UserInterfaceState.xcuserstate 15 | /UAGithubEngine.xcodeproj/xcuserdata/mlussier.xcuserdatad/ 16 | <<<<<<< HEAD 17 | UserInterfaceState.xcuserstate 18 | ======= 19 | /UAGithubEngine.xcodeproj/xcuserdata/orhunt.xcuserdatad/ 20 | /UAGithubEngine.xcodeproj/project.xcworkspace/xcuserdata/orhunt.xcuserdatad/ 21 | /AppController.m 22 | >>>>>>> refs/heads/api3-blocks-arc 23 | -------------------------------------------------------------------------------- /License.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 2 | {\fonttbl\f0\fswiss\fcharset0 Helvetica;} 3 | {\colortbl;\red255\green255\blue255;} 4 | \paperw11905\paperh16837\margl1440\margr1440\vieww20460\viewh13960\viewkind0 5 | \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural 6 | 7 | \f0\b\fs24 \cf0 UAGithubEngine License 8 | \b0 \ 9 | Copyright (c) 2010, Owain R Hunt. All rights reserved.\ 10 | \ 11 | 12 | \b The Short Version\ 13 | 14 | \b0 Use the code however you like, pass it around, change it, tweak it, build on it, release it, just make sure you include the line 15 | \b Includes UAGithubEngine by Owain R Hunt 16 | \b0 , preferably in your app's About box or equivalent.\ 17 | \ 18 | 19 | \b The Full Legalese 20 | \b0 \ 21 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\ 22 | * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\ 23 | * Redistributions in binary form must include the following notice, preferably in the software's About box or suitable equivalent:\ 24 | 25 | \b Includes UAGithubEngine by Owain R Hunt 26 | \b0 \ 27 | * Neither the name Owain R Hunt nor the names of contributors to the code may be used to endorse or promote products derived from this software without specific prior written permission.\ 28 | \ 29 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL OWAIN R HUNT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.} -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # UAGithubEngine 2 | by [Owain R Hunt](http://owainrhunt.com) 3 | 4 | UAGithubEngine is a wrapper around the Github API. Check out the [API documentation](http://developer.github.com/) for full details of what the API can do. 5 | 6 | UAGithubEngine is compatible with Mac OS X 10.7 and above, and iOS 5.0. 7 | 8 | ## Note 9 | 10 | The `master` branch is built on version 3 of the API, and uses up-to-date technologies such as blocks and ARC. Version 1 of UAGE, found in the branch `v1`, was built on version 2 of the API, and may be more suited to your uses if you need to support earlier versions of OS X or iOS. This branch is no longer under active development. 11 | 12 | ## How do I use it? 13 | 14 | * UAGithubEngine is available from [CocoaPods](http://cocoapods.org). Just add the following to your Podfile: 15 | 16 | `dependency 'UAGithubEngine'` 17 | 18 | Then run `pod install`. 19 | 20 | * The easiest way to use the engine is with the framework - build and link against the `UAGithubEngine` framework, and `#import ` where you want to use the framework. 21 | 22 | * If you don't fancy using CocoaPods or the framework, either copy across all the files in the 'UAGithubEngine' group from the UAGithubEngine project into your app's project, or add the entire project to your workspace. Use `#import "UAGithubEngine.h"` where you want to use the engine. 23 | 24 | * Instantiate an engine, passing a username and password. If you want to receive notifications when reachability status changes (`UAGithubReachabilityStatusDidChangeNotification`), pass `YES` as the final argument. 25 | 26 | * Call some methods. 27 | 28 | ## Code speaks louder than words. 29 | ```objective-c 30 | UAGithubEngine *engine = [[UAGithubEngine alloc] initWithUsername:@"aUser" password:@"aPassword" withReachability:YES]; 31 | 32 | [engine repositoriesWithSuccess:^(id response) { 33 | NSLog(@"Got an array of repos: %@", obj); 34 | } failure:^(NSError *error) { 35 | NSLog(@"Oops: %@", error); 36 | }]; 37 | 38 | [engine user:@"this_guy" isCollaboratorForRepository:@"UAGithubEngine" success:^(BOOL collaborates) { 39 | NSLog(@"%d", collaborates); 40 | } failure:^(NSError *error){ 41 | NSLog(@"D'oh: %@", error); 42 | }]; 43 | ``` 44 | 45 | Any questions, comments, improvements and so on, either open an issue, find me on Twitter (@orhunt) or send me an email (owain@underscoreapps.com). 46 | -------------------------------------------------------------------------------- /UAGithubEngine.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | CC52FF9F15378566005A767A /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC52FF9E15378566005A767A /* Cocoa.framework */; }; 11 | CC52FFA615378566005A767A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = CC52FFA415378566005A767A /* InfoPlist.strings */; }; 12 | CC52FFC3153785F3005A767A /* NSArray+Utilities.h in Headers */ = {isa = PBXBuildFile; fileRef = CC52FFAE153785F3005A767A /* NSArray+Utilities.h */; }; 13 | CC52FFC4153785F3005A767A /* NSArray+Utilities.m in Sources */ = {isa = PBXBuildFile; fileRef = CC52FFAF153785F3005A767A /* NSArray+Utilities.m */; }; 14 | CC52FFC5153785F3005A767A /* NSData+Base64.h in Headers */ = {isa = PBXBuildFile; fileRef = CC52FFB0153785F3005A767A /* NSData+Base64.h */; }; 15 | CC52FFC6153785F3005A767A /* NSData+Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = CC52FFB1153785F3005A767A /* NSData+Base64.m */; }; 16 | CC52FFC7153785F3005A767A /* NSInvocation+Blocks.h in Headers */ = {isa = PBXBuildFile; fileRef = CC52FFB2153785F3005A767A /* NSInvocation+Blocks.h */; }; 17 | CC52FFC8153785F3005A767A /* NSInvocation+Blocks.m in Sources */ = {isa = PBXBuildFile; fileRef = CC52FFB3153785F3005A767A /* NSInvocation+Blocks.m */; }; 18 | CC52FFC9153785F3005A767A /* NSString+UAGithubEngineUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = CC52FFB4153785F3005A767A /* NSString+UAGithubEngineUtilities.h */; }; 19 | CC52FFCA153785F3005A767A /* NSString+UAGithubEngineUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = CC52FFB5153785F3005A767A /* NSString+UAGithubEngineUtilities.m */; }; 20 | CC52FFCB153785F3005A767A /* NSString+UUID.h in Headers */ = {isa = PBXBuildFile; fileRef = CC52FFB6153785F3005A767A /* NSString+UUID.h */; }; 21 | CC52FFCC153785F3005A767A /* NSString+UUID.m in Sources */ = {isa = PBXBuildFile; fileRef = CC52FFB7153785F3005A767A /* NSString+UUID.m */; }; 22 | CC52FFCD153785F3005A767A /* UAGithubEngine.h in Headers */ = {isa = PBXBuildFile; fileRef = CC52FFB8153785F3005A767A /* UAGithubEngine.h */; settings = {ATTRIBUTES = (Public, ); }; }; 23 | CC52FFCE153785F3005A767A /* UAGithubEngine.m in Sources */ = {isa = PBXBuildFile; fileRef = CC52FFB9153785F3005A767A /* UAGithubEngine.m */; }; 24 | CC52FFCF153785F3005A767A /* UAGithubEngineConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = CC52FFBA153785F3005A767A /* UAGithubEngineConstants.h */; }; 25 | CC52FFD0153785F3005A767A /* UAGithubEngineConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = CC52FFBB153785F3005A767A /* UAGithubEngineConstants.m */; }; 26 | CC52FFD1153785F3005A767A /* UAGithubEngineRequestTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = CC52FFBC153785F3005A767A /* UAGithubEngineRequestTypes.h */; }; 27 | CC52FFD2153785F3005A767A /* UAGithubJSONParser.h in Headers */ = {isa = PBXBuildFile; fileRef = CC52FFBD153785F3005A767A /* UAGithubJSONParser.h */; }; 28 | CC52FFD3153785F3005A767A /* UAGithubJSONParser.m in Sources */ = {isa = PBXBuildFile; fileRef = CC52FFBE153785F3005A767A /* UAGithubJSONParser.m */; }; 29 | CC52FFD4153785F3005A767A /* UAGithubURLConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = CC52FFBF153785F3005A767A /* UAGithubURLConnection.h */; }; 30 | CC52FFD5153785F3005A767A /* UAGithubURLConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = CC52FFC0153785F3005A767A /* UAGithubURLConnection.m */; }; 31 | CC52FFD6153785F3005A767A /* UAReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = CC52FFC1153785F3005A767A /* UAReachability.h */; }; 32 | CC52FFD7153785F3005A767A /* UAReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = CC52FFC2153785F3005A767A /* UAReachability.m */; }; 33 | CC52FFD815378612005A767A /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 681F4113134C9310002DD87D /* SystemConfiguration.framework */; }; 34 | /* End PBXBuildFile section */ 35 | 36 | /* Begin PBXFileReference section */ 37 | 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; 38 | 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 39 | 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 40 | 681F4113134C9310002DD87D /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; 41 | CC52FF9D15378566005A767A /* UAGithubEngine.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = UAGithubEngine.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 42 | CC52FF9E15378566005A767A /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; 43 | CC52FFA015378566005A767A /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; 44 | CC52FFA315378566005A767A /* UAGithubEngine-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "UAGithubEngine-Info.plist"; sourceTree = ""; }; 45 | CC52FFA515378566005A767A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 46 | CC52FFA715378566005A767A /* UAGithubEngine-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UAGithubEngine-Prefix.pch"; sourceTree = ""; }; 47 | CC52FFAE153785F3005A767A /* NSArray+Utilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSArray+Utilities.h"; sourceTree = ""; }; 48 | CC52FFAF153785F3005A767A /* NSArray+Utilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSArray+Utilities.m"; sourceTree = ""; }; 49 | CC52FFB0153785F3005A767A /* NSData+Base64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+Base64.h"; sourceTree = ""; }; 50 | CC52FFB1153785F3005A767A /* NSData+Base64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+Base64.m"; sourceTree = ""; }; 51 | CC52FFB2153785F3005A767A /* NSInvocation+Blocks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSInvocation+Blocks.h"; sourceTree = ""; }; 52 | CC52FFB3153785F3005A767A /* NSInvocation+Blocks.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSInvocation+Blocks.m"; sourceTree = ""; }; 53 | CC52FFB4153785F3005A767A /* NSString+UAGithubEngineUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+UAGithubEngineUtilities.h"; sourceTree = ""; }; 54 | CC52FFB5153785F3005A767A /* NSString+UAGithubEngineUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+UAGithubEngineUtilities.m"; sourceTree = ""; }; 55 | CC52FFB6153785F3005A767A /* NSString+UUID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+UUID.h"; sourceTree = ""; }; 56 | CC52FFB7153785F3005A767A /* NSString+UUID.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+UUID.m"; sourceTree = ""; }; 57 | CC52FFB8153785F3005A767A /* UAGithubEngine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UAGithubEngine.h; sourceTree = ""; }; 58 | CC52FFB9153785F3005A767A /* UAGithubEngine.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UAGithubEngine.m; sourceTree = ""; }; 59 | CC52FFBA153785F3005A767A /* UAGithubEngineConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UAGithubEngineConstants.h; sourceTree = ""; }; 60 | CC52FFBB153785F3005A767A /* UAGithubEngineConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UAGithubEngineConstants.m; sourceTree = ""; }; 61 | CC52FFBC153785F3005A767A /* UAGithubEngineRequestTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UAGithubEngineRequestTypes.h; sourceTree = ""; }; 62 | CC52FFBD153785F3005A767A /* UAGithubJSONParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UAGithubJSONParser.h; sourceTree = ""; }; 63 | CC52FFBE153785F3005A767A /* UAGithubJSONParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UAGithubJSONParser.m; sourceTree = ""; }; 64 | CC52FFBF153785F3005A767A /* UAGithubURLConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UAGithubURLConnection.h; sourceTree = ""; }; 65 | CC52FFC0153785F3005A767A /* UAGithubURLConnection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UAGithubURLConnection.m; sourceTree = ""; }; 66 | CC52FFC1153785F3005A767A /* UAReachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UAReachability.h; sourceTree = ""; }; 67 | CC52FFC2153785F3005A767A /* UAReachability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UAReachability.m; sourceTree = ""; }; 68 | /* End PBXFileReference section */ 69 | 70 | /* Begin PBXFrameworksBuildPhase section */ 71 | CC52FF9915378566005A767A /* Frameworks */ = { 72 | isa = PBXFrameworksBuildPhase; 73 | buildActionMask = 2147483647; 74 | files = ( 75 | CC52FFD815378612005A767A /* SystemConfiguration.framework in Frameworks */, 76 | CC52FF9F15378566005A767A /* Cocoa.framework in Frameworks */, 77 | ); 78 | runOnlyForDeploymentPostprocessing = 0; 79 | }; 80 | /* End PBXFrameworksBuildPhase section */ 81 | 82 | /* Begin PBXGroup section */ 83 | 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = { 84 | isa = PBXGroup; 85 | children = ( 86 | 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, 87 | ); 88 | name = "Linked Frameworks"; 89 | sourceTree = ""; 90 | }; 91 | 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = { 92 | isa = PBXGroup; 93 | children = ( 94 | 681F4113134C9310002DD87D /* SystemConfiguration.framework */, 95 | 29B97324FDCFA39411CA2CEA /* AppKit.framework */, 96 | 29B97325FDCFA39411CA2CEA /* Foundation.framework */, 97 | CC52FFA015378566005A767A /* CoreData.framework */, 98 | ); 99 | name = "Other Frameworks"; 100 | sourceTree = ""; 101 | }; 102 | 19C28FACFE9D520D11CA2CBB /* Products */ = { 103 | isa = PBXGroup; 104 | children = ( 105 | CC52FF9D15378566005A767A /* UAGithubEngine.framework */, 106 | ); 107 | name = Products; 108 | sourceTree = ""; 109 | }; 110 | 29B97314FDCFA39411CA2CEA /* UAGithubEngine */ = { 111 | isa = PBXGroup; 112 | children = ( 113 | CC52FFA115378566005A767A /* UAGithubEngine */, 114 | 29B97323FDCFA39411CA2CEA /* Frameworks */, 115 | 19C28FACFE9D520D11CA2CBB /* Products */, 116 | ); 117 | name = UAGithubEngine; 118 | sourceTree = ""; 119 | }; 120 | 29B97323FDCFA39411CA2CEA /* Frameworks */ = { 121 | isa = PBXGroup; 122 | children = ( 123 | 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */, 124 | CC52FF9E15378566005A767A /* Cocoa.framework */, 125 | 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */, 126 | ); 127 | name = Frameworks; 128 | sourceTree = ""; 129 | }; 130 | CC52FFA115378566005A767A /* UAGithubEngine */ = { 131 | isa = PBXGroup; 132 | children = ( 133 | CC52FFB8153785F3005A767A /* UAGithubEngine.h */, 134 | CC73E2151551DA590094AFE6 /* Engine */, 135 | CC52FFA215378566005A767A /* Supporting Files */, 136 | ); 137 | path = UAGithubEngine; 138 | sourceTree = ""; 139 | }; 140 | CC52FFA215378566005A767A /* Supporting Files */ = { 141 | isa = PBXGroup; 142 | children = ( 143 | CC52FFA315378566005A767A /* UAGithubEngine-Info.plist */, 144 | CC52FFA415378566005A767A /* InfoPlist.strings */, 145 | CC52FFA715378566005A767A /* UAGithubEngine-Prefix.pch */, 146 | ); 147 | name = "Supporting Files"; 148 | sourceTree = ""; 149 | }; 150 | CC73E2151551DA590094AFE6 /* Engine */ = { 151 | isa = PBXGroup; 152 | children = ( 153 | CC52FFB9153785F3005A767A /* UAGithubEngine.m */, 154 | CC52FFAE153785F3005A767A /* NSArray+Utilities.h */, 155 | CC52FFAF153785F3005A767A /* NSArray+Utilities.m */, 156 | CC52FFB0153785F3005A767A /* NSData+Base64.h */, 157 | CC52FFB1153785F3005A767A /* NSData+Base64.m */, 158 | CC52FFB2153785F3005A767A /* NSInvocation+Blocks.h */, 159 | CC52FFB3153785F3005A767A /* NSInvocation+Blocks.m */, 160 | CC52FFB4153785F3005A767A /* NSString+UAGithubEngineUtilities.h */, 161 | CC52FFB5153785F3005A767A /* NSString+UAGithubEngineUtilities.m */, 162 | CC52FFB6153785F3005A767A /* NSString+UUID.h */, 163 | CC52FFB7153785F3005A767A /* NSString+UUID.m */, 164 | CC52FFBA153785F3005A767A /* UAGithubEngineConstants.h */, 165 | CC52FFBB153785F3005A767A /* UAGithubEngineConstants.m */, 166 | CC52FFBC153785F3005A767A /* UAGithubEngineRequestTypes.h */, 167 | CC52FFBD153785F3005A767A /* UAGithubJSONParser.h */, 168 | CC52FFBE153785F3005A767A /* UAGithubJSONParser.m */, 169 | CC52FFBF153785F3005A767A /* UAGithubURLConnection.h */, 170 | CC52FFC0153785F3005A767A /* UAGithubURLConnection.m */, 171 | CC52FFC1153785F3005A767A /* UAReachability.h */, 172 | CC52FFC2153785F3005A767A /* UAReachability.m */, 173 | ); 174 | name = Engine; 175 | sourceTree = ""; 176 | }; 177 | /* End PBXGroup section */ 178 | 179 | /* Begin PBXHeadersBuildPhase section */ 180 | CC52FF9A15378566005A767A /* Headers */ = { 181 | isa = PBXHeadersBuildPhase; 182 | buildActionMask = 2147483647; 183 | files = ( 184 | CC52FFCD153785F3005A767A /* UAGithubEngine.h in Headers */, 185 | CC52FFC3153785F3005A767A /* NSArray+Utilities.h in Headers */, 186 | CC52FFC5153785F3005A767A /* NSData+Base64.h in Headers */, 187 | CC52FFC7153785F3005A767A /* NSInvocation+Blocks.h in Headers */, 188 | CC52FFC9153785F3005A767A /* NSString+UAGithubEngineUtilities.h in Headers */, 189 | CC52FFCB153785F3005A767A /* NSString+UUID.h in Headers */, 190 | CC52FFCF153785F3005A767A /* UAGithubEngineConstants.h in Headers */, 191 | CC52FFD1153785F3005A767A /* UAGithubEngineRequestTypes.h in Headers */, 192 | CC52FFD2153785F3005A767A /* UAGithubJSONParser.h in Headers */, 193 | CC52FFD4153785F3005A767A /* UAGithubURLConnection.h in Headers */, 194 | CC52FFD6153785F3005A767A /* UAReachability.h in Headers */, 195 | ); 196 | runOnlyForDeploymentPostprocessing = 0; 197 | }; 198 | /* End PBXHeadersBuildPhase section */ 199 | 200 | /* Begin PBXNativeTarget section */ 201 | CC52FF9C15378566005A767A /* UAGithubEngine */ = { 202 | isa = PBXNativeTarget; 203 | buildConfigurationList = CC52FFAB15378566005A767A /* Build configuration list for PBXNativeTarget "UAGithubEngine" */; 204 | buildPhases = ( 205 | CC52FF9815378566005A767A /* Sources */, 206 | CC52FF9915378566005A767A /* Frameworks */, 207 | CC52FF9A15378566005A767A /* Headers */, 208 | CC52FF9B15378566005A767A /* Resources */, 209 | ); 210 | buildRules = ( 211 | ); 212 | dependencies = ( 213 | ); 214 | name = UAGithubEngine; 215 | productName = UAGithubEngine; 216 | productReference = CC52FF9D15378566005A767A /* UAGithubEngine.framework */; 217 | productType = "com.apple.product-type.framework"; 218 | }; 219 | /* End PBXNativeTarget section */ 220 | 221 | /* Begin PBXProject section */ 222 | 29B97313FDCFA39411CA2CEA /* Project object */ = { 223 | isa = PBXProject; 224 | attributes = { 225 | LastUpgradeCheck = 0440; 226 | }; 227 | buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "UAGithubEngine" */; 228 | compatibilityVersion = "Xcode 3.2"; 229 | developmentRegion = English; 230 | hasScannedForEncodings = 1; 231 | knownRegions = ( 232 | en, 233 | ); 234 | mainGroup = 29B97314FDCFA39411CA2CEA /* UAGithubEngine */; 235 | projectDirPath = ""; 236 | projectRoot = ""; 237 | targets = ( 238 | CC52FF9C15378566005A767A /* UAGithubEngine */, 239 | ); 240 | }; 241 | /* End PBXProject section */ 242 | 243 | /* Begin PBXResourcesBuildPhase section */ 244 | CC52FF9B15378566005A767A /* Resources */ = { 245 | isa = PBXResourcesBuildPhase; 246 | buildActionMask = 2147483647; 247 | files = ( 248 | CC52FFA615378566005A767A /* InfoPlist.strings in Resources */, 249 | ); 250 | runOnlyForDeploymentPostprocessing = 0; 251 | }; 252 | /* End PBXResourcesBuildPhase section */ 253 | 254 | /* Begin PBXSourcesBuildPhase section */ 255 | CC52FF9815378566005A767A /* Sources */ = { 256 | isa = PBXSourcesBuildPhase; 257 | buildActionMask = 2147483647; 258 | files = ( 259 | CC52FFC4153785F3005A767A /* NSArray+Utilities.m in Sources */, 260 | CC52FFC6153785F3005A767A /* NSData+Base64.m in Sources */, 261 | CC52FFC8153785F3005A767A /* NSInvocation+Blocks.m in Sources */, 262 | CC52FFCA153785F3005A767A /* NSString+UAGithubEngineUtilities.m in Sources */, 263 | CC52FFCC153785F3005A767A /* NSString+UUID.m in Sources */, 264 | CC52FFCE153785F3005A767A /* UAGithubEngine.m in Sources */, 265 | CC52FFD0153785F3005A767A /* UAGithubEngineConstants.m in Sources */, 266 | CC52FFD3153785F3005A767A /* UAGithubJSONParser.m in Sources */, 267 | CC52FFD5153785F3005A767A /* UAGithubURLConnection.m in Sources */, 268 | CC52FFD7153785F3005A767A /* UAReachability.m in Sources */, 269 | ); 270 | runOnlyForDeploymentPostprocessing = 0; 271 | }; 272 | /* End PBXSourcesBuildPhase section */ 273 | 274 | /* Begin PBXVariantGroup section */ 275 | CC52FFA415378566005A767A /* InfoPlist.strings */ = { 276 | isa = PBXVariantGroup; 277 | children = ( 278 | CC52FFA515378566005A767A /* en */, 279 | ); 280 | name = InfoPlist.strings; 281 | sourceTree = ""; 282 | }; 283 | /* End PBXVariantGroup section */ 284 | 285 | /* Begin XCBuildConfiguration section */ 286 | C01FCF4F08A954540054247B /* Debug */ = { 287 | isa = XCBuildConfiguration; 288 | buildSettings = { 289 | ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; 290 | CLANG_ENABLE_OBJC_ARC = YES; 291 | COMBINE_HIDPI_IMAGES = YES; 292 | GCC_C_LANGUAGE_STANDARD = "compiler-default"; 293 | GCC_OPTIMIZATION_LEVEL = 0; 294 | GCC_VERSION = 4.2; 295 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 296 | GCC_WARN_UNUSED_VARIABLE = YES; 297 | MACOSX_DEPLOYMENT_TARGET = 10.7; 298 | ONLY_ACTIVE_ARCH = YES; 299 | SDKROOT = macosx; 300 | }; 301 | name = Debug; 302 | }; 303 | C01FCF5008A954540054247B /* Release */ = { 304 | isa = XCBuildConfiguration; 305 | buildSettings = { 306 | ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; 307 | CLANG_ENABLE_OBJC_ARC = YES; 308 | COMBINE_HIDPI_IMAGES = YES; 309 | GCC_C_LANGUAGE_STANDARD = "compiler-default"; 310 | GCC_VERSION = 4.2; 311 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 312 | GCC_WARN_UNUSED_VARIABLE = YES; 313 | MACOSX_DEPLOYMENT_TARGET = 10.7; 314 | ONLY_ACTIVE_ARCH = YES; 315 | SDKROOT = macosx; 316 | }; 317 | name = Release; 318 | }; 319 | CC52FFAC15378566005A767A /* Debug */ = { 320 | isa = XCBuildConfiguration; 321 | buildSettings = { 322 | ALWAYS_SEARCH_USER_PATHS = NO; 323 | ARCHS = "$(ARCHS_STANDARD_64_BIT)"; 324 | COPY_PHASE_STRIP = NO; 325 | DYLIB_COMPATIBILITY_VERSION = 1; 326 | DYLIB_CURRENT_VERSION = 1; 327 | FRAMEWORK_VERSION = A; 328 | GCC_C_LANGUAGE_STANDARD = gnu99; 329 | GCC_DYNAMIC_NO_PIC = NO; 330 | GCC_ENABLE_OBJC_EXCEPTIONS = YES; 331 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 332 | GCC_PREFIX_HEADER = "UAGithubEngine/UAGithubEngine-Prefix.pch"; 333 | GCC_PREPROCESSOR_DEFINITIONS = ( 334 | "DEBUG=1", 335 | "$(inherited)", 336 | ); 337 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 338 | GCC_VERSION = com.apple.compilers.llvm.clang.1_0; 339 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 340 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 341 | INFOPLIST_FILE = "UAGithubEngine/UAGithubEngine-Info.plist"; 342 | INSTALL_PATH = "@executable_path/../Frameworks"; 343 | PRODUCT_NAME = "$(TARGET_NAME)"; 344 | SKIP_INSTALL = YES; 345 | WRAPPER_EXTENSION = framework; 346 | }; 347 | name = Debug; 348 | }; 349 | CC52FFAD15378566005A767A /* Release */ = { 350 | isa = XCBuildConfiguration; 351 | buildSettings = { 352 | ALWAYS_SEARCH_USER_PATHS = NO; 353 | ARCHS = "$(ARCHS_STANDARD_64_BIT)"; 354 | COPY_PHASE_STRIP = YES; 355 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 356 | DYLIB_COMPATIBILITY_VERSION = 1; 357 | DYLIB_CURRENT_VERSION = 1; 358 | FRAMEWORK_VERSION = A; 359 | GCC_C_LANGUAGE_STANDARD = gnu99; 360 | GCC_ENABLE_OBJC_EXCEPTIONS = YES; 361 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 362 | GCC_PREFIX_HEADER = "UAGithubEngine/UAGithubEngine-Prefix.pch"; 363 | GCC_VERSION = com.apple.compilers.llvm.clang.1_0; 364 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 365 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 366 | INFOPLIST_FILE = "UAGithubEngine/UAGithubEngine-Info.plist"; 367 | INSTALL_PATH = "@executable_path/../Frameworks"; 368 | PRODUCT_NAME = "$(TARGET_NAME)"; 369 | SKIP_INSTALL = YES; 370 | WRAPPER_EXTENSION = framework; 371 | }; 372 | name = Release; 373 | }; 374 | /* End XCBuildConfiguration section */ 375 | 376 | /* Begin XCConfigurationList section */ 377 | C01FCF4E08A954540054247B /* Build configuration list for PBXProject "UAGithubEngine" */ = { 378 | isa = XCConfigurationList; 379 | buildConfigurations = ( 380 | C01FCF4F08A954540054247B /* Debug */, 381 | C01FCF5008A954540054247B /* Release */, 382 | ); 383 | defaultConfigurationIsVisible = 0; 384 | defaultConfigurationName = Release; 385 | }; 386 | CC52FFAB15378566005A767A /* Build configuration list for PBXNativeTarget "UAGithubEngine" */ = { 387 | isa = XCConfigurationList; 388 | buildConfigurations = ( 389 | CC52FFAC15378566005A767A /* Debug */, 390 | CC52FFAD15378566005A767A /* Release */, 391 | ); 392 | defaultConfigurationIsVisible = 0; 393 | defaultConfigurationName = Release; 394 | }; 395 | /* End XCConfigurationList section */ 396 | }; 397 | rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; 398 | } 399 | -------------------------------------------------------------------------------- /UAGithubEngine.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /UAGithubEngine.xcodeproj/project.xcworkspace/xcuserdata/orhunt.xcuserdatad/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEWorkspaceUserSettings_HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges 6 | 7 | IDEWorkspaceUserSettings_SnapshotAutomaticallyBeforeSignificantChanges 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /UAGithubEngine.xcodeproj/project.xcworkspace/xcuserdata/owainhunt.xcuserdatad/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEWorkspaceUserSettings_BuildFolderLocationStyle 6 | 0 7 | IDEWorkspaceUserSettings_BuildFolderNameStyle 8 | 0 9 | IDEWorkspaceUserSettings_SnapshotAutomaticallyBeforeSignificantChanges 10 | 11 | IDEWorkspaceUserSettings_SnapshotLocationStyle 12 | 0 13 | IDEWorkspaceUserSettings_UseBuildFolder 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /UAGithubEngine.xcodeproj/project.xcworkspace/xcuserdata/owainhunt.xcuserdatad/WorkspaceState.xcuserstate: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $archiver 6 | NSKeyedArchiver 7 | $objects 8 | 9 | $null 10 | 11 | $class 12 | 13 | CF$UID 14 | 32 15 | 16 | NS.keys 17 | 18 | 19 | CF$UID 20 | 2 21 | 22 | 23 | CF$UID 24 | 3 25 | 26 | 27 | NS.objects 28 | 29 | 30 | CF$UID 31 | 4 32 | 33 | 34 | CF$UID 35 | 190 36 | 37 | 38 | 39 | IDEWorkspaceWindowController_0 40 | IDEWorkspaceDocument 41 | 42 | $class 43 | 44 | CF$UID 45 | 36 46 | 47 | NS.keys 48 | 49 | 50 | CF$UID 51 | 5 52 | 53 | 54 | CF$UID 55 | 6 56 | 57 | 58 | CF$UID 59 | 7 60 | 61 | 62 | CF$UID 63 | 8 64 | 65 | 66 | CF$UID 67 | 9 68 | 69 | 70 | NS.objects 71 | 72 | 73 | CF$UID 74 | 10 75 | 76 | 77 | CF$UID 78 | 12 79 | 80 | 81 | CF$UID 82 | 9 83 | 84 | 85 | CF$UID 86 | 13 87 | 88 | 89 | CF$UID 90 | 14 91 | 92 | 93 | 94 | IDEOrderedWorkspaceTabControllers 95 | IDEUserWantsMiniDebuggingConsole 96 | IDEActiveWorkspaceTabController 97 | IDEWindowFrame 98 | IDEWorkspaceTabController_0 99 | 100 | $class 101 | 102 | CF$UID 103 | 11 104 | 105 | NS.objects 106 | 107 | 108 | CF$UID 109 | 9 110 | 111 | 112 | 113 | 114 | $classes 115 | 116 | NSArray 117 | NSObject 118 | 119 | $classname 120 | NSArray 121 | 122 | 123 | {{1, 4}, {1680, 1024}} 124 | 125 | $class 126 | 127 | CF$UID 128 | 36 129 | 130 | NS.keys 131 | 132 | 133 | CF$UID 134 | 15 135 | 136 | 137 | CF$UID 138 | 16 139 | 140 | 141 | CF$UID 142 | 17 143 | 144 | 145 | CF$UID 146 | 18 147 | 148 | 149 | CF$UID 150 | 19 151 | 152 | 153 | CF$UID 154 | 20 155 | 156 | 157 | CF$UID 158 | 21 159 | 160 | 161 | NS.objects 162 | 163 | 164 | CF$UID 165 | 22 166 | 167 | 168 | CF$UID 169 | 23 170 | 171 | 172 | CF$UID 173 | 24 174 | 175 | 176 | CF$UID 177 | 37 178 | 179 | 180 | CF$UID 181 | 117 182 | 183 | 184 | CF$UID 185 | 12 186 | 187 | 188 | CF$UID 189 | 126 190 | 191 | 192 | 193 | IDETabLabel 194 | IDEShowNavigator 195 | IDEWorkspaceTabControllerUtilityAreaSplitView 196 | IDENavigatorArea 197 | IDEWorkspaceTabControllerDesignAreaSplitView 198 | IDEShowUtilities 199 | IDEEditorArea 200 | UAGithubEngine.m 201 | 202 | 203 | $class 204 | 205 | CF$UID 206 | 36 207 | 208 | NS.keys 209 | 210 | 211 | CF$UID 212 | 25 213 | 214 | 215 | NS.objects 216 | 217 | 218 | CF$UID 219 | 26 220 | 221 | 222 | 223 | DVTSplitViewItems 224 | 225 | $class 226 | 227 | CF$UID 228 | 35 229 | 230 | NS.objects 231 | 232 | 233 | CF$UID 234 | 27 235 | 236 | 237 | CF$UID 238 | 33 239 | 240 | 241 | 242 | 243 | $class 244 | 245 | CF$UID 246 | 32 247 | 248 | NS.keys 249 | 250 | 251 | CF$UID 252 | 28 253 | 254 | 255 | CF$UID 256 | 29 257 | 258 | 259 | NS.objects 260 | 261 | 262 | CF$UID 263 | 30 264 | 265 | 266 | CF$UID 267 | 31 268 | 269 | 270 | 271 | DVTIdentifier 272 | DVTViewMagnitude 273 | 274 | 810 275 | 276 | $classes 277 | 278 | NSDictionary 279 | NSObject 280 | 281 | $classname 282 | NSDictionary 283 | 284 | 285 | $class 286 | 287 | CF$UID 288 | 32 289 | 290 | NS.keys 291 | 292 | 293 | CF$UID 294 | 28 295 | 296 | 297 | CF$UID 298 | 29 299 | 300 | 301 | NS.objects 302 | 303 | 304 | CF$UID 305 | 30 306 | 307 | 308 | CF$UID 309 | 34 310 | 311 | 312 | 313 | 141 314 | 315 | $classes 316 | 317 | NSMutableArray 318 | NSArray 319 | NSObject 320 | 321 | $classname 322 | NSMutableArray 323 | 324 | 325 | $classes 326 | 327 | NSMutableDictionary 328 | NSDictionary 329 | NSObject 330 | 331 | $classname 332 | NSMutableDictionary 333 | 334 | 335 | $class 336 | 337 | CF$UID 338 | 36 339 | 340 | NS.keys 341 | 342 | 343 | CF$UID 344 | 38 345 | 346 | 347 | CF$UID 348 | 39 349 | 350 | 351 | CF$UID 352 | 40 353 | 354 | 355 | CF$UID 356 | 41 357 | 358 | 359 | CF$UID 360 | 42 361 | 362 | 363 | CF$UID 364 | 43 365 | 366 | 367 | NS.objects 368 | 369 | 370 | CF$UID 371 | 44 372 | 373 | 374 | CF$UID 375 | 66 376 | 377 | 378 | CF$UID 379 | 80 380 | 381 | 382 | CF$UID 383 | 38 384 | 385 | 386 | CF$UID 387 | 85 388 | 389 | 390 | CF$UID 391 | 102 392 | 393 | 394 | 395 | Xcode.IDEKit.Navigator.Structure 396 | Xcode.IDEKit.Navigator.BatchFind 397 | Xcode.DebuggerKit.ThreadsStacksNavigator 398 | SelectedNavigator 399 | Xcode.IDEKit.Navigator.Logs 400 | Xcode.IDEKit.Navigator.Issues 401 | 402 | $class 403 | 404 | CF$UID 405 | 36 406 | 407 | NS.keys 408 | 409 | 410 | CF$UID 411 | 45 412 | 413 | 414 | CF$UID 415 | 46 416 | 417 | 418 | CF$UID 419 | 47 420 | 421 | 422 | CF$UID 423 | 48 424 | 425 | 426 | CF$UID 427 | 49 428 | 429 | 430 | CF$UID 431 | 50 432 | 433 | 434 | NS.objects 435 | 436 | 437 | CF$UID 438 | 12 439 | 440 | 441 | CF$UID 442 | 51 443 | 444 | 445 | CF$UID 446 | 62 447 | 448 | 449 | CF$UID 450 | 12 451 | 452 | 453 | CF$UID 454 | 12 455 | 456 | 457 | CF$UID 458 | 63 459 | 460 | 461 | 462 | IDEUnsavedDocumentFilteringEnabled 463 | IDEExpandedItems 464 | IDEVisibleRect 465 | IDERecentDocumentFilteringEnabled 466 | IDESCMStatusFilteringEnabled 467 | IDESelectedObjects 468 | 469 | $class 470 | 471 | CF$UID 472 | 35 473 | 474 | NS.objects 475 | 476 | 477 | CF$UID 478 | 52 479 | 480 | 481 | CF$UID 482 | 54 483 | 484 | 485 | CF$UID 486 | 57 487 | 488 | 489 | CF$UID 490 | 58 491 | 492 | 493 | CF$UID 494 | 60 495 | 496 | 497 | 498 | 499 | $class 500 | 501 | CF$UID 502 | 35 503 | 504 | NS.objects 505 | 506 | 507 | CF$UID 508 | 53 509 | 510 | 511 | 512 | UAGithubEngine 513 | 514 | $class 515 | 516 | CF$UID 517 | 35 518 | 519 | NS.objects 520 | 521 | 522 | CF$UID 523 | 53 524 | 525 | 526 | CF$UID 527 | 55 528 | 529 | 530 | CF$UID 531 | 56 532 | 533 | 534 | 535 | Classes 536 | Engine 537 | 538 | $class 539 | 540 | CF$UID 541 | 35 542 | 543 | NS.objects 544 | 545 | 546 | CF$UID 547 | 53 548 | 549 | 550 | CF$UID 551 | 55 552 | 553 | 554 | 555 | 556 | $class 557 | 558 | CF$UID 559 | 35 560 | 561 | NS.objects 562 | 563 | 564 | CF$UID 565 | 53 566 | 567 | 568 | CF$UID 569 | 55 570 | 571 | 572 | CF$UID 573 | 59 574 | 575 | 576 | 577 | App 578 | 579 | $class 580 | 581 | CF$UID 582 | 35 583 | 584 | NS.objects 585 | 586 | 587 | CF$UID 588 | 53 589 | 590 | 591 | CF$UID 592 | 55 593 | 594 | 595 | CF$UID 596 | 56 597 | 598 | 599 | CF$UID 600 | 61 601 | 602 | 603 | 604 | XMLParsers 605 | {{0, 0}, {259, 907}} 606 | 607 | $class 608 | 609 | CF$UID 610 | 35 611 | 612 | NS.objects 613 | 614 | 615 | CF$UID 616 | 64 617 | 618 | 619 | 620 | 621 | $class 622 | 623 | CF$UID 624 | 35 625 | 626 | NS.objects 627 | 628 | 629 | CF$UID 630 | 53 631 | 632 | 633 | CF$UID 634 | 55 635 | 636 | 637 | CF$UID 638 | 56 639 | 640 | 641 | CF$UID 642 | 65 643 | 644 | 645 | 646 | UAGithubEngine.m 647 | 648 | $class 649 | 650 | CF$UID 651 | 36 652 | 653 | NS.keys 654 | 655 | 656 | CF$UID 657 | 67 658 | 659 | 660 | CF$UID 661 | 68 662 | 663 | 664 | CF$UID 665 | 69 666 | 667 | 668 | CF$UID 669 | 70 670 | 671 | 672 | CF$UID 673 | 71 674 | 675 | 676 | CF$UID 677 | 72 678 | 679 | 680 | CF$UID 681 | 73 682 | 683 | 684 | NS.objects 685 | 686 | 687 | CF$UID 688 | 12 689 | 690 | 691 | CF$UID 692 | 74 693 | 694 | 695 | CF$UID 696 | 12 697 | 698 | 699 | CF$UID 700 | 75 701 | 702 | 703 | CF$UID 704 | 74 705 | 706 | 707 | CF$UID 708 | 77 709 | 710 | 711 | CF$UID 712 | 78 713 | 714 | 715 | 716 | IDEBatchFindNavigatorShowsOptions 717 | IDEBatchFindNavigatorReplaceString 718 | IDEBatchFindNavigatorShowsReplacePreview 719 | IDEBatchFindNavigatorSelectedRowIndexes 720 | IDEBatchFindNavigatorFindString 721 | IDEBatchFindNavigatorFindMode 722 | IDEBatchFindNavigatorCollapsedGroups 723 | 724 | 725 | $class 726 | 727 | CF$UID 728 | 76 729 | 730 | NSRangeCount 731 | 0 732 | 733 | 734 | $classes 735 | 736 | NSIndexSet 737 | NSObject 738 | 739 | $classname 740 | NSIndexSet 741 | 742 | 0 743 | 744 | $class 745 | 746 | CF$UID 747 | 79 748 | 749 | NSRangeCount 750 | 0 751 | 752 | 753 | $classes 754 | 755 | NSMutableIndexSet 756 | NSIndexSet 757 | NSObject 758 | 759 | $classname 760 | NSMutableIndexSet 761 | 762 | 763 | $class 764 | 765 | CF$UID 766 | 36 767 | 768 | NS.keys 769 | 770 | 771 | CF$UID 772 | 81 773 | 774 | 775 | CF$UID 776 | 82 777 | 778 | 779 | CF$UID 780 | 83 781 | 782 | 783 | NS.objects 784 | 785 | 786 | CF$UID 787 | 84 788 | 789 | 790 | CF$UID 791 | 77 792 | 793 | 794 | CF$UID 795 | 12 796 | 797 | 798 | 799 | IDEStackCompressionValue 800 | IDEThreadsOrQueuesMode 801 | IDEHideAncestorIfAllFramesHaveNoSymbols 802 | 2 803 | 804 | $class 805 | 806 | CF$UID 807 | 36 808 | 809 | NS.keys 810 | 811 | 812 | CF$UID 813 | 86 814 | 815 | 816 | CF$UID 817 | 87 818 | 819 | 820 | CF$UID 821 | 88 822 | 823 | 824 | CF$UID 825 | 89 826 | 827 | 828 | NS.objects 829 | 830 | 831 | CF$UID 832 | 90 833 | 834 | 835 | CF$UID 836 | 91 837 | 838 | 839 | CF$UID 840 | 98 841 | 842 | 843 | CF$UID 844 | 101 845 | 846 | 847 | 848 | IDEExpandedItems 849 | IDEFilterConfigurationController 850 | IDESelectedObjects 851 | IDEVisibleRect 852 | 853 | $class 854 | 855 | CF$UID 856 | 35 857 | 858 | NS.objects 859 | 860 | 861 | 862 | $class 863 | 864 | CF$UID 865 | 36 866 | 867 | NS.keys 868 | 869 | 870 | CF$UID 871 | 92 872 | 873 | 874 | CF$UID 875 | 93 876 | 877 | 878 | CF$UID 879 | 94 880 | 881 | 882 | CF$UID 883 | 95 884 | 885 | 886 | NS.objects 887 | 888 | 889 | CF$UID 890 | 12 891 | 892 | 893 | CF$UID 894 | 96 895 | 896 | 897 | CF$UID 898 | 12 899 | 900 | 901 | CF$UID 902 | 97 903 | 904 | 905 | 906 | IDELogNamePatternMatchingEnabled 907 | IDEPredicateCombinationTag 908 | IDEFilterLogsContainingIssuesEnabled 909 | IDEFilterModifierTag 910 | 200 911 | 10 912 | 913 | $class 914 | 915 | CF$UID 916 | 35 917 | 918 | NS.objects 919 | 920 | 921 | CF$UID 922 | 99 923 | 924 | 925 | 926 | 927 | $class 928 | 929 | CF$UID 930 | 35 931 | 932 | NS.objects 933 | 934 | 935 | CF$UID 936 | 100 937 | 938 | 939 | 940 | Debug UAGithubEngine 941 | {{0, 0}, {259, 854}} 942 | 943 | $class 944 | 945 | CF$UID 946 | 36 947 | 948 | NS.keys 949 | 950 | 951 | CF$UID 952 | 103 953 | 954 | 955 | CF$UID 956 | 89 957 | 958 | 959 | CF$UID 960 | 104 961 | 962 | 963 | CF$UID 964 | 105 965 | 966 | 967 | CF$UID 968 | 106 969 | 970 | 971 | CF$UID 972 | 107 973 | 974 | 975 | CF$UID 976 | 108 977 | 978 | 979 | CF$UID 980 | 109 981 | 982 | 983 | NS.objects 984 | 985 | 986 | CF$UID 987 | 12 988 | 989 | 990 | CF$UID 991 | 110 992 | 993 | 994 | CF$UID 995 | 111 996 | 997 | 998 | CF$UID 999 | 113 1000 | 1001 | 1002 | CF$UID 1003 | 12 1004 | 1005 | 1006 | CF$UID 1007 | 114 1008 | 1009 | 1010 | CF$UID 1011 | 115 1012 | 1013 | 1014 | CF$UID 1015 | 116 1016 | 1017 | 1018 | 1019 | IDEErrorFilteringEnabled 1020 | IDECollapsedFiles 1021 | IDEExpandedIssues 1022 | IDEShowsByType 1023 | IDESelectedNavigables 1024 | IDECollapsedTypes 1025 | IDECollapsedGroups 1026 | {{0, 0}, {259, 885}} 1027 | 1028 | $class 1029 | 1030 | CF$UID 1031 | 112 1032 | 1033 | NS.objects 1034 | 1035 | 1036 | 1037 | $classes 1038 | 1039 | NSMutableSet 1040 | NSSet 1041 | NSObject 1042 | 1043 | $classname 1044 | NSMutableSet 1045 | 1046 | 1047 | $class 1048 | 1049 | CF$UID 1050 | 112 1051 | 1052 | NS.objects 1053 | 1054 | 1055 | 1056 | $class 1057 | 1058 | CF$UID 1059 | 112 1060 | 1061 | NS.objects 1062 | 1063 | 1064 | 1065 | $class 1066 | 1067 | CF$UID 1068 | 112 1069 | 1070 | NS.objects 1071 | 1072 | 1073 | 1074 | $class 1075 | 1076 | CF$UID 1077 | 112 1078 | 1079 | NS.objects 1080 | 1081 | 1082 | 1083 | $class 1084 | 1085 | CF$UID 1086 | 36 1087 | 1088 | NS.keys 1089 | 1090 | 1091 | CF$UID 1092 | 25 1093 | 1094 | 1095 | NS.objects 1096 | 1097 | 1098 | CF$UID 1099 | 118 1100 | 1101 | 1102 | 1103 | 1104 | $class 1105 | 1106 | CF$UID 1107 | 35 1108 | 1109 | NS.objects 1110 | 1111 | 1112 | CF$UID 1113 | 119 1114 | 1115 | 1116 | CF$UID 1117 | 121 1118 | 1119 | 1120 | CF$UID 1121 | 123 1122 | 1123 | 1124 | 1125 | 1126 | $class 1127 | 1128 | CF$UID 1129 | 32 1130 | 1131 | NS.keys 1132 | 1133 | 1134 | CF$UID 1135 | 28 1136 | 1137 | 1138 | CF$UID 1139 | 29 1140 | 1141 | 1142 | NS.objects 1143 | 1144 | 1145 | CF$UID 1146 | 18 1147 | 1148 | 1149 | CF$UID 1150 | 120 1151 | 1152 | 1153 | 1154 | 260 1155 | 1156 | $class 1157 | 1158 | CF$UID 1159 | 32 1160 | 1161 | NS.keys 1162 | 1163 | 1164 | CF$UID 1165 | 28 1166 | 1167 | 1168 | CF$UID 1169 | 29 1170 | 1171 | 1172 | NS.objects 1173 | 1174 | 1175 | CF$UID 1176 | 21 1177 | 1178 | 1179 | CF$UID 1180 | 122 1181 | 1182 | 1183 | 1184 | 1420 1185 | 1186 | $class 1187 | 1188 | CF$UID 1189 | 32 1190 | 1191 | NS.keys 1192 | 1193 | 1194 | CF$UID 1195 | 28 1196 | 1197 | 1198 | CF$UID 1199 | 29 1200 | 1201 | 1202 | NS.objects 1203 | 1204 | 1205 | CF$UID 1206 | 124 1207 | 1208 | 1209 | CF$UID 1210 | 125 1211 | 1212 | 1213 | 1214 | IDEUtilitiesArea 1215 | 260 1216 | 1217 | $class 1218 | 1219 | CF$UID 1220 | 36 1221 | 1222 | NS.keys 1223 | 1224 | 1225 | CF$UID 1226 | 127 1227 | 1228 | 1229 | CF$UID 1230 | 128 1231 | 1232 | 1233 | CF$UID 1234 | 129 1235 | 1236 | 1237 | CF$UID 1238 | 130 1239 | 1240 | 1241 | CF$UID 1242 | 131 1243 | 1244 | 1245 | CF$UID 1246 | 132 1247 | 1248 | 1249 | NS.objects 1250 | 1251 | 1252 | CF$UID 1253 | 133 1254 | 1255 | 1256 | CF$UID 1257 | 164 1258 | 1259 | 1260 | CF$UID 1261 | 171 1262 | 1263 | 1264 | CF$UID 1265 | 181 1266 | 1267 | 1268 | CF$UID 1269 | 23 1270 | 1271 | 1272 | CF$UID 1273 | 77 1274 | 1275 | 1276 | 1277 | IDEEditorMode_Standard 1278 | IDEEditorArea_DebuggerSplitView 1279 | IDEEDitorArea_DebugArea 1280 | IDEEditorMode_Genius 1281 | ShowDebuggerArea 1282 | EditorMode 1283 | 1284 | $class 1285 | 1286 | CF$UID 1287 | 36 1288 | 1289 | NS.keys 1290 | 1291 | 1292 | CF$UID 1293 | 134 1294 | 1295 | 1296 | NS.objects 1297 | 1298 | 1299 | CF$UID 1300 | 135 1301 | 1302 | 1303 | 1304 | EditorStates 1305 | 1306 | $class 1307 | 1308 | CF$UID 1309 | 32 1310 | 1311 | NS.keys 1312 | 1313 | 1314 | CF$UID 1315 | 134 1316 | 1317 | 1318 | CF$UID 1319 | 136 1320 | 1321 | 1322 | NS.objects 1323 | 1324 | 1325 | CF$UID 1326 | 137 1327 | 1328 | 1329 | CF$UID 1330 | 77 1331 | 1332 | 1333 | 1334 | SelectedEditorState 1335 | 1336 | $class 1337 | 1338 | CF$UID 1339 | 35 1340 | 1341 | NS.objects 1342 | 1343 | 1344 | CF$UID 1345 | 138 1346 | 1347 | 1348 | 1349 | 1350 | $class 1351 | 1352 | CF$UID 1353 | 36 1354 | 1355 | NS.keys 1356 | 1357 | 1358 | CF$UID 1359 | 139 1360 | 1361 | 1362 | CF$UID 1363 | 140 1364 | 1365 | 1366 | CF$UID 1367 | 141 1368 | 1369 | 1370 | CF$UID 1371 | 142 1372 | 1373 | 1374 | CF$UID 1375 | 143 1376 | 1377 | 1378 | CF$UID 1379 | 144 1380 | 1381 | 1382 | NS.objects 1383 | 1384 | 1385 | CF$UID 1386 | 145 1387 | 1388 | 1389 | CF$UID 1390 | 152 1391 | 1392 | 1393 | CF$UID 1394 | 158 1395 | 1396 | 1397 | CF$UID 1398 | 161 1399 | 1400 | 1401 | CF$UID 1402 | 162 1403 | 1404 | 1405 | CF$UID 1406 | 163 1407 | 1408 | 1409 | 1410 | EditorState 1411 | ArchivableRepresentation 1412 | DocumentURL 1413 | FileDataType 1414 | DocumentExtensionIdentifier 1415 | HistoryMenuDescription 1416 | 1417 | $class 1418 | 1419 | CF$UID 1420 | 32 1421 | 1422 | NS.keys 1423 | 1424 | 1425 | CF$UID 1426 | 146 1427 | 1428 | 1429 | CF$UID 1430 | 147 1431 | 1432 | 1433 | CF$UID 1434 | 148 1435 | 1436 | 1437 | NS.objects 1438 | 1439 | 1440 | CF$UID 1441 | 149 1442 | 1443 | 1444 | CF$UID 1445 | 150 1446 | 1447 | 1448 | CF$UID 1449 | 151 1450 | 1451 | 1452 | 1453 | PrimaryDocumentSelectedCharacterRange 1454 | PrimaryDocumentTimestamp 1455 | PrimaryDocumentVisibleCharacterRange 1456 | {5530, 0} 1457 | 301946237.995336 1458 | {5530, 892} 1459 | 1460 | $class 1461 | 1462 | CF$UID 1463 | 157 1464 | 1465 | DocumentLocation 1466 | 1467 | CF$UID 1468 | 156 1469 | 1470 | DomainIdentifier 1471 | 1472 | CF$UID 1473 | 153 1474 | 1475 | IdentifierPath 1476 | 1477 | CF$UID 1478 | 154 1479 | 1480 | 1481 | Xcode.IDENavigableItemDomain.WorkspaceStructure 1482 | 1483 | $class 1484 | 1485 | CF$UID 1486 | 11 1487 | 1488 | NS.objects 1489 | 1490 | 1491 | CF$UID 1492 | 65 1493 | 1494 | 1495 | CF$UID 1496 | 56 1497 | 1498 | 1499 | CF$UID 1500 | 55 1501 | 1502 | 1503 | CF$UID 1504 | 155 1505 | 1506 | 1507 | 1508 | UAGithubEngine 1509 | $null 1510 | 1511 | $classes 1512 | 1513 | IDENavigableItemArchivableRepresentation 1514 | NSObject 1515 | 1516 | $classname 1517 | IDENavigableItemArchivableRepresentation 1518 | 1519 | 1520 | $class 1521 | 1522 | CF$UID 1523 | 160 1524 | 1525 | NS.base 1526 | 1527 | CF$UID 1528 | 0 1529 | 1530 | NS.relative 1531 | 1532 | CF$UID 1533 | 159 1534 | 1535 | 1536 | file://localhost/Users/owainhunt/CocoaDev/Github/UAGithubEngine/UAGithubEngine.m 1537 | 1538 | $classes 1539 | 1540 | NSURL 1541 | NSObject 1542 | 1543 | $classname 1544 | NSURL 1545 | 1546 | public.objective-c-source 1547 | Xcode.IDEKit.EditorDocument.SourceCode 1548 | -parseDataForConnection: 1549 | 1550 | $class 1551 | 1552 | CF$UID 1553 | 36 1554 | 1555 | NS.keys 1556 | 1557 | 1558 | CF$UID 1559 | 25 1560 | 1561 | 1562 | NS.objects 1563 | 1564 | 1565 | CF$UID 1566 | 165 1567 | 1568 | 1569 | 1570 | 1571 | $class 1572 | 1573 | CF$UID 1574 | 35 1575 | 1576 | NS.objects 1577 | 1578 | 1579 | CF$UID 1580 | 166 1581 | 1582 | 1583 | CF$UID 1584 | 168 1585 | 1586 | 1587 | 1588 | 1589 | $class 1590 | 1591 | CF$UID 1592 | 32 1593 | 1594 | NS.keys 1595 | 1596 | 1597 | CF$UID 1598 | 28 1599 | 1600 | 1601 | CF$UID 1602 | 29 1603 | 1604 | 1605 | NS.objects 1606 | 1607 | 1608 | CF$UID 1609 | 30 1610 | 1611 | 1612 | CF$UID 1613 | 167 1614 | 1615 | 1616 | 1617 | 403 1618 | 1619 | $class 1620 | 1621 | CF$UID 1622 | 32 1623 | 1624 | NS.keys 1625 | 1626 | 1627 | CF$UID 1628 | 28 1629 | 1630 | 1631 | CF$UID 1632 | 29 1633 | 1634 | 1635 | NS.objects 1636 | 1637 | 1638 | CF$UID 1639 | 169 1640 | 1641 | 1642 | CF$UID 1643 | 170 1644 | 1645 | 1646 | 1647 | IDEDebuggerArea 1648 | 548 1649 | 1650 | $class 1651 | 1652 | CF$UID 1653 | 36 1654 | 1655 | NS.keys 1656 | 1657 | 1658 | CF$UID 1659 | 172 1660 | 1661 | 1662 | CF$UID 1663 | 173 1664 | 1665 | 1666 | CF$UID 1667 | 174 1668 | 1669 | 1670 | CF$UID 1671 | 175 1672 | 1673 | 1674 | NS.objects 1675 | 1676 | 1677 | CF$UID 1678 | 84 1679 | 1680 | 1681 | CF$UID 1682 | 176 1683 | 1684 | 1685 | CF$UID 1686 | 178 1687 | 1688 | 1689 | CF$UID 1690 | 179 1691 | 1692 | 1693 | 1694 | LayoutFocusMode 1695 | console 1696 | LayoutMode 1697 | variables 1698 | 1699 | $class 1700 | 1701 | CF$UID 1702 | 36 1703 | 1704 | NS.keys 1705 | 1706 | 1707 | CF$UID 1708 | 177 1709 | 1710 | 1711 | NS.objects 1712 | 1713 | 1714 | CF$UID 1715 | 77 1716 | 1717 | 1718 | 1719 | ConsoleFilterMode 1720 | 3 1721 | 1722 | $class 1723 | 1724 | CF$UID 1725 | 36 1726 | 1727 | NS.keys 1728 | 1729 | 1730 | CF$UID 1731 | 180 1732 | 1733 | 1734 | NS.objects 1735 | 1736 | 1737 | CF$UID 1738 | 84 1739 | 1740 | 1741 | 1742 | DBGVariablesViewFilterMode 1743 | 1744 | $class 1745 | 1746 | CF$UID 1747 | 36 1748 | 1749 | NS.keys 1750 | 1751 | 1752 | CF$UID 1753 | 182 1754 | 1755 | 1756 | CF$UID 1757 | 183 1758 | 1759 | 1760 | NS.objects 1761 | 1762 | 1763 | CF$UID 1764 | 12 1765 | 1766 | 1767 | CF$UID 1768 | 184 1769 | 1770 | 1771 | 1772 | ManualMode 1773 | GeniusLayout 1774 | 1775 | $class 1776 | 1777 | CF$UID 1778 | 36 1779 | 1780 | NS.keys 1781 | 1782 | 1783 | CF$UID 1784 | 185 1785 | 1786 | 1787 | CF$UID 1788 | 186 1789 | 1790 | 1791 | CF$UID 1792 | 187 1793 | 1794 | 1795 | NS.objects 1796 | 1797 | 1798 | CF$UID 1799 | 188 1800 | 1801 | 1802 | CF$UID 1803 | 12 1804 | 1805 | 1806 | CF$UID 1807 | 189 1808 | 1809 | 1810 | 1811 | GeniusCategory 1812 | SplitsVertical 1813 | SplitPosition 1814 | Xcode.IDEKit.GeniusCategory.Counterparts 1815 | 0.5 1816 | 1817 | $class 1818 | 1819 | CF$UID 1820 | 36 1821 | 1822 | NS.keys 1823 | 1824 | 1825 | CF$UID 1826 | 191 1827 | 1828 | 1829 | CF$UID 1830 | 192 1831 | 1832 | 1833 | CF$UID 1834 | 193 1835 | 1836 | 1837 | CF$UID 1838 | 194 1839 | 1840 | 1841 | CF$UID 1842 | 195 1843 | 1844 | 1845 | CF$UID 1846 | 196 1847 | 1848 | 1849 | CF$UID 1850 | 197 1851 | 1852 | 1853 | CF$UID 1854 | 198 1855 | 1856 | 1857 | NS.objects 1858 | 1859 | 1860 | CF$UID 1861 | 12 1862 | 1863 | 1864 | CF$UID 1865 | 199 1866 | 1867 | 1868 | CF$UID 1869 | 267 1870 | 1871 | 1872 | CF$UID 1873 | 270 1874 | 1875 | 1876 | CF$UID 1877 | 275 1878 | 1879 | 1880 | CF$UID 1881 | 276 1882 | 1883 | 1884 | CF$UID 1885 | 12 1886 | 1887 | 1888 | CF$UID 1889 | 12 1890 | 1891 | 1892 | 1893 | BreakpointsActivated 1894 | DefaultEditorStatesForURLs 1895 | ActiveScheme 1896 | ActiveRunDestination 1897 | DocumentWindows 1898 | RecentEditorDocumentURLs 1899 | AppFocusInMiniDebugging 1900 | DebuggingWindowsLayerMode 1901 | 1902 | $class 1903 | 1904 | CF$UID 1905 | 36 1906 | 1907 | NS.keys 1908 | 1909 | 1910 | CF$UID 1911 | 200 1912 | 1913 | 1914 | CF$UID 1915 | 201 1916 | 1917 | 1918 | CF$UID 1919 | 202 1920 | 1921 | 1922 | NS.objects 1923 | 1924 | 1925 | CF$UID 1926 | 203 1927 | 1928 | 1929 | CF$UID 1930 | 210 1931 | 1932 | 1933 | CF$UID 1934 | 258 1935 | 1936 | 1937 | 1938 | Xcode.IDEKit.EditorDocument.DebuggerLogDocument 1939 | Xcode.IDEKit.EditorDocument.SourceCode 1940 | Xcode.IDEKit.EditorDocument.LogDocument 1941 | 1942 | $class 1943 | 1944 | CF$UID 1945 | 36 1946 | 1947 | NS.keys 1948 | 1949 | 1950 | CF$UID 1951 | 204 1952 | 1953 | 1954 | CF$UID 1955 | 206 1956 | 1957 | 1958 | NS.objects 1959 | 1960 | 1961 | CF$UID 1962 | 208 1963 | 1964 | 1965 | CF$UID 1966 | 209 1967 | 1968 | 1969 | 1970 | 1971 | $class 1972 | 1973 | CF$UID 1974 | 160 1975 | 1976 | NS.base 1977 | 1978 | CF$UID 1979 | 0 1980 | 1981 | NS.relative 1982 | 1983 | CF$UID 1984 | 205 1985 | 1986 | 1987 | x-xcode-log://ABAE9A8B-6C35-4BE7-96AF-C72500CF2F08 1988 | 1989 | $class 1990 | 1991 | CF$UID 1992 | 160 1993 | 1994 | NS.base 1995 | 1996 | CF$UID 1997 | 0 1998 | 1999 | NS.relative 2000 | 2001 | CF$UID 2002 | 207 2003 | 2004 | 2005 | x-xcode-log://7C06B1A4-97DA-4252-B49D-ADE5A342E4CF 2006 | 2007 | $class 2008 | 2009 | CF$UID 2010 | 36 2011 | 2012 | NS.keys 2013 | 2014 | NS.objects 2015 | 2016 | 2017 | 2018 | $class 2019 | 2020 | CF$UID 2021 | 36 2022 | 2023 | NS.keys 2024 | 2025 | NS.objects 2026 | 2027 | 2028 | 2029 | $class 2030 | 2031 | CF$UID 2032 | 36 2033 | 2034 | NS.keys 2035 | 2036 | 2037 | CF$UID 2038 | 211 2039 | 2040 | 2041 | CF$UID 2042 | 214 2043 | 2044 | 2045 | CF$UID 2046 | 216 2047 | 2048 | 2049 | CF$UID 2050 | 218 2051 | 2052 | 2053 | CF$UID 2054 | 220 2055 | 2056 | 2057 | CF$UID 2058 | 222 2059 | 2060 | 2061 | CF$UID 2062 | 224 2063 | 2064 | 2065 | CF$UID 2066 | 226 2067 | 2068 | 2069 | NS.objects 2070 | 2071 | 2072 | CF$UID 2073 | 228 2074 | 2075 | 2076 | CF$UID 2077 | 235 2078 | 2079 | 2080 | CF$UID 2081 | 239 2082 | 2083 | 2084 | CF$UID 2085 | 242 2086 | 2087 | 2088 | CF$UID 2089 | 245 2090 | 2091 | 2092 | CF$UID 2093 | 248 2094 | 2095 | 2096 | CF$UID 2097 | 251 2098 | 2099 | 2100 | CF$UID 2101 | 254 2102 | 2103 | 2104 | 2105 | 2106 | $class 2107 | 2108 | CF$UID 2109 | 160 2110 | 2111 | NS.base 2112 | 2113 | CF$UID 2114 | 0 2115 | 2116 | NS.relative 2117 | 2118 | CF$UID 2119 | 212 2120 | 2121 | 2122 | 2123 | $class 2124 | 2125 | CF$UID 2126 | 213 2127 | 2128 | NS.string 2129 | file://localhost/Users/owainhunt/CocoaDev/Github/UAGithubEngine/UAGithubEngine.m 2130 | 2131 | 2132 | $classes 2133 | 2134 | NSMutableString 2135 | NSString 2136 | NSObject 2137 | 2138 | $classname 2139 | NSMutableString 2140 | 2141 | 2142 | $class 2143 | 2144 | CF$UID 2145 | 160 2146 | 2147 | NS.base 2148 | 2149 | CF$UID 2150 | 0 2151 | 2152 | NS.relative 2153 | 2154 | CF$UID 2155 | 215 2156 | 2157 | 2158 | 2159 | $class 2160 | 2161 | CF$UID 2162 | 213 2163 | 2164 | NS.string 2165 | file://localhost/Users/owainhunt/CocoaDev/Github/UAGithubEngine/CDataScanner.m 2166 | 2167 | 2168 | $class 2169 | 2170 | CF$UID 2171 | 160 2172 | 2173 | NS.base 2174 | 2175 | CF$UID 2176 | 0 2177 | 2178 | NS.relative 2179 | 2180 | CF$UID 2181 | 217 2182 | 2183 | 2184 | 2185 | $class 2186 | 2187 | CF$UID 2188 | 213 2189 | 2190 | NS.string 2191 | file://localhost/Users/owainhunt/CocoaDev/Github/UAGithubEngine/UAGithubParserDelegate.h 2192 | 2193 | 2194 | $class 2195 | 2196 | CF$UID 2197 | 160 2198 | 2199 | NS.base 2200 | 2201 | CF$UID 2202 | 0 2203 | 2204 | NS.relative 2205 | 2206 | CF$UID 2207 | 219 2208 | 2209 | 2210 | 2211 | $class 2212 | 2213 | CF$UID 2214 | 213 2215 | 2216 | NS.string 2217 | file://localhost/Users/owainhunt/CocoaDev/Github/UAGithubEngine/UAGithubEngine.xcodeproj/../../../../Downloads/schwa-TouchJSON-5460e10/Source/CDataScanner.h 2218 | 2219 | 2220 | $class 2221 | 2222 | CF$UID 2223 | 160 2224 | 2225 | NS.base 2226 | 2227 | CF$UID 2228 | 0 2229 | 2230 | NS.relative 2231 | 2232 | CF$UID 2233 | 221 2234 | 2235 | 2236 | 2237 | $class 2238 | 2239 | CF$UID 2240 | 213 2241 | 2242 | NS.string 2243 | file://localhost/Users/owainhunt/CocoaDev/Github/UAGithubEngine/CDataScanner.h 2244 | 2245 | 2246 | $class 2247 | 2248 | CF$UID 2249 | 160 2250 | 2251 | NS.base 2252 | 2253 | CF$UID 2254 | 0 2255 | 2256 | NS.relative 2257 | 2258 | CF$UID 2259 | 223 2260 | 2261 | 2262 | 2263 | $class 2264 | 2265 | CF$UID 2266 | 213 2267 | 2268 | NS.string 2269 | file://localhost/Users/owainhunt/CocoaDev/Github/UAGithubEngine/UAGithubXMLParser.m 2270 | 2271 | 2272 | $class 2273 | 2274 | CF$UID 2275 | 160 2276 | 2277 | NS.base 2278 | 2279 | CF$UID 2280 | 0 2281 | 2282 | NS.relative 2283 | 2284 | CF$UID 2285 | 225 2286 | 2287 | 2288 | 2289 | $class 2290 | 2291 | CF$UID 2292 | 213 2293 | 2294 | NS.string 2295 | file://localhost/Users/owainhunt/CocoaDev/Github/UAGithubEngine/UAGithubEngine.xcodeproj/../../../../Downloads/schwa-TouchJSON-5460e10/Source/Experimental/CExtensibleJSONDataSerializer.h 2296 | 2297 | 2298 | $class 2299 | 2300 | CF$UID 2301 | 160 2302 | 2303 | NS.base 2304 | 2305 | CF$UID 2306 | 0 2307 | 2308 | NS.relative 2309 | 2310 | CF$UID 2311 | 227 2312 | 2313 | 2314 | 2315 | $class 2316 | 2317 | CF$UID 2318 | 213 2319 | 2320 | NS.string 2321 | file://localhost/Users/owainhunt/CocoaDev/Github/UAGithubEngine/AppController.m 2322 | 2323 | 2324 | $class 2325 | 2326 | CF$UID 2327 | 36 2328 | 2329 | NS.keys 2330 | 2331 | 2332 | CF$UID 2333 | 229 2334 | 2335 | 2336 | CF$UID 2337 | 230 2338 | 2339 | 2340 | CF$UID 2341 | 231 2342 | 2343 | 2344 | NS.objects 2345 | 2346 | 2347 | CF$UID 2348 | 232 2349 | 2350 | 2351 | CF$UID 2352 | 233 2353 | 2354 | 2355 | CF$UID 2356 | 234 2357 | 2358 | 2359 | 2360 | PrimaryDocumentSelectedCharacterRange 2361 | PrimaryDocumentTimestamp 2362 | PrimaryDocumentVisibleCharacterRange 2363 | {5530, 0} 2364 | 301874158.29079998 2365 | {5589, 1559} 2366 | 2367 | $class 2368 | 2369 | CF$UID 2370 | 36 2371 | 2372 | NS.keys 2373 | 2374 | 2375 | CF$UID 2376 | 229 2377 | 2378 | 2379 | CF$UID 2380 | 230 2381 | 2382 | 2383 | CF$UID 2384 | 231 2385 | 2386 | 2387 | NS.objects 2388 | 2389 | 2390 | CF$UID 2391 | 236 2392 | 2393 | 2394 | CF$UID 2395 | 237 2396 | 2397 | 2398 | CF$UID 2399 | 238 2400 | 2401 | 2402 | 2403 | {0, 0} 2404 | 301873896.58556801 2405 | {0, 1925} 2406 | 2407 | $class 2408 | 2409 | CF$UID 2410 | 36 2411 | 2412 | NS.keys 2413 | 2414 | 2415 | CF$UID 2416 | 229 2417 | 2418 | 2419 | CF$UID 2420 | 230 2421 | 2422 | 2423 | CF$UID 2424 | 231 2425 | 2426 | 2427 | NS.objects 2428 | 2429 | 2430 | CF$UID 2431 | 236 2432 | 2433 | 2434 | CF$UID 2435 | 240 2436 | 2437 | 2438 | CF$UID 2439 | 241 2440 | 2441 | 2442 | 2443 | 301874022.90113503 2444 | {0, 574} 2445 | 2446 | $class 2447 | 2448 | CF$UID 2449 | 36 2450 | 2451 | NS.keys 2452 | 2453 | 2454 | CF$UID 2455 | 229 2456 | 2457 | 2458 | CF$UID 2459 | 230 2460 | 2461 | 2462 | CF$UID 2463 | 231 2464 | 2465 | 2466 | NS.objects 2467 | 2468 | 2469 | CF$UID 2470 | 236 2471 | 2472 | 2473 | CF$UID 2474 | 243 2475 | 2476 | 2477 | CF$UID 2478 | 244 2479 | 2480 | 2481 | 2482 | 301869773.62819099 2483 | {144, 2251} 2484 | 2485 | $class 2486 | 2487 | CF$UID 2488 | 36 2489 | 2490 | NS.keys 2491 | 2492 | 2493 | CF$UID 2494 | 229 2495 | 2496 | 2497 | CF$UID 2498 | 230 2499 | 2500 | 2501 | CF$UID 2502 | 231 2503 | 2504 | 2505 | NS.objects 2506 | 2507 | 2508 | CF$UID 2509 | 236 2510 | 2511 | 2512 | CF$UID 2513 | 246 2514 | 2515 | 2516 | CF$UID 2517 | 247 2518 | 2519 | 2520 | 2521 | 301870761.40619701 2522 | {0, 2289} 2523 | 2524 | $class 2525 | 2526 | CF$UID 2527 | 36 2528 | 2529 | NS.keys 2530 | 2531 | 2532 | CF$UID 2533 | 229 2534 | 2535 | 2536 | CF$UID 2537 | 230 2538 | 2539 | 2540 | CF$UID 2541 | 231 2542 | 2543 | 2544 | NS.objects 2545 | 2546 | 2547 | CF$UID 2548 | 236 2549 | 2550 | 2551 | CF$UID 2552 | 249 2553 | 2554 | 2555 | CF$UID 2556 | 250 2557 | 2558 | 2559 | 2560 | 301874022.141267 2561 | {1999, 1652} 2562 | 2563 | $class 2564 | 2565 | CF$UID 2566 | 36 2567 | 2568 | NS.keys 2569 | 2570 | 2571 | CF$UID 2572 | 229 2573 | 2574 | 2575 | CF$UID 2576 | 230 2577 | 2578 | 2579 | CF$UID 2580 | 231 2581 | 2582 | 2583 | NS.objects 2584 | 2585 | 2586 | CF$UID 2587 | 236 2588 | 2589 | 2590 | CF$UID 2591 | 252 2592 | 2593 | 2594 | CF$UID 2595 | 253 2596 | 2597 | 2598 | 2599 | 301869773.58482403 2600 | {0, 553} 2601 | 2602 | $class 2603 | 2604 | CF$UID 2605 | 36 2606 | 2607 | NS.keys 2608 | 2609 | 2610 | CF$UID 2611 | 229 2612 | 2613 | 2614 | CF$UID 2615 | 230 2616 | 2617 | 2618 | CF$UID 2619 | 231 2620 | 2621 | 2622 | NS.objects 2623 | 2624 | 2625 | CF$UID 2626 | 255 2627 | 2628 | 2629 | CF$UID 2630 | 256 2631 | 2632 | 2633 | CF$UID 2634 | 257 2635 | 2636 | 2637 | 2638 | {419, 0} 2639 | 301874213.456671 2640 | {0, 2421} 2641 | 2642 | $class 2643 | 2644 | CF$UID 2645 | 36 2646 | 2647 | NS.keys 2648 | 2649 | 2650 | CF$UID 2651 | 259 2652 | 2653 | 2654 | CF$UID 2655 | 261 2656 | 2657 | 2658 | NS.objects 2659 | 2660 | 2661 | CF$UID 2662 | 263 2663 | 2664 | 2665 | CF$UID 2666 | 266 2667 | 2668 | 2669 | 2670 | 2671 | $class 2672 | 2673 | CF$UID 2674 | 160 2675 | 2676 | NS.base 2677 | 2678 | CF$UID 2679 | 0 2680 | 2681 | NS.relative 2682 | 2683 | CF$UID 2684 | 260 2685 | 2686 | 2687 | x-xcode-log://03E64692-81D5-4939-96BD-D1EEF9509C80 2688 | 2689 | $class 2690 | 2691 | CF$UID 2692 | 160 2693 | 2694 | NS.base 2695 | 2696 | CF$UID 2697 | 0 2698 | 2699 | NS.relative 2700 | 2701 | CF$UID 2702 | 262 2703 | 2704 | 2705 | x-xcode-log://35E51247-7694-4142-B58C-7C37322D77C0 2706 | 2707 | $class 2708 | 2709 | CF$UID 2710 | 36 2711 | 2712 | NS.keys 2713 | 2714 | 2715 | CF$UID 2716 | 264 2717 | 2718 | 2719 | NS.objects 2720 | 2721 | 2722 | CF$UID 2723 | 265 2724 | 2725 | 2726 | 2727 | SelectedDocumentLocations 2728 | 2729 | $class 2730 | 2731 | CF$UID 2732 | 11 2733 | 2734 | NS.objects 2735 | 2736 | 2737 | 2738 | $class 2739 | 2740 | CF$UID 2741 | 36 2742 | 2743 | NS.keys 2744 | 2745 | 2746 | CF$UID 2747 | 264 2748 | 2749 | 2750 | NS.objects 2751 | 2752 | 2753 | CF$UID 2754 | 265 2755 | 2756 | 2757 | 2758 | 2759 | $class 2760 | 2761 | CF$UID 2762 | 36 2763 | 2764 | NS.keys 2765 | 2766 | 2767 | CF$UID 2768 | 268 2769 | 2770 | 2771 | NS.objects 2772 | 2773 | 2774 | CF$UID 2775 | 269 2776 | 2777 | 2778 | 2779 | IDENameString 2780 | UAGithubEngine 2781 | 2782 | $class 2783 | 2784 | CF$UID 2785 | 36 2786 | 2787 | NS.keys 2788 | 2789 | 2790 | CF$UID 2791 | 271 2792 | 2793 | 2794 | CF$UID 2795 | 272 2796 | 2797 | 2798 | NS.objects 2799 | 2800 | 2801 | CF$UID 2802 | 273 2803 | 2804 | 2805 | CF$UID 2806 | 274 2807 | 2808 | 2809 | 2810 | IDEDeviceLocation 2811 | IDEDeviceArchitecture 2812 | dvtdevice-local-computer:localhost 2813 | x86_64 2814 | 2815 | $class 2816 | 2817 | CF$UID 2818 | 35 2819 | 2820 | NS.objects 2821 | 2822 | 2823 | 2824 | $class 2825 | 2826 | CF$UID 2827 | 35 2828 | 2829 | NS.objects 2830 | 2831 | 2832 | CF$UID 2833 | 277 2834 | 2835 | 2836 | CF$UID 2837 | 279 2838 | 2839 | 2840 | CF$UID 2841 | 281 2842 | 2843 | 2844 | CF$UID 2845 | 283 2846 | 2847 | 2848 | CF$UID 2849 | 285 2850 | 2851 | 2852 | CF$UID 2853 | 206 2854 | 2855 | 2856 | CF$UID 2857 | 261 2858 | 2859 | 2860 | CF$UID 2861 | 259 2862 | 2863 | 2864 | CF$UID 2865 | 204 2866 | 2867 | 2868 | CF$UID 2869 | 287 2870 | 2871 | 2872 | 2873 | 2874 | $class 2875 | 2876 | CF$UID 2877 | 160 2878 | 2879 | NS.base 2880 | 2881 | CF$UID 2882 | 0 2883 | 2884 | NS.relative 2885 | 2886 | CF$UID 2887 | 278 2888 | 2889 | 2890 | file://localhost/Users/owainhunt/CocoaDev/Github/UAGithubEngine/UAGithubEngine.m 2891 | 2892 | $class 2893 | 2894 | CF$UID 2895 | 160 2896 | 2897 | NS.base 2898 | 2899 | CF$UID 2900 | 0 2901 | 2902 | NS.relative 2903 | 2904 | CF$UID 2905 | 280 2906 | 2907 | 2908 | file://localhost/Users/owainhunt/CocoaDev/Github/UAGithubEngine/AppController.m 2909 | 2910 | $class 2911 | 2912 | CF$UID 2913 | 160 2914 | 2915 | NS.base 2916 | 2917 | CF$UID 2918 | 0 2919 | 2920 | NS.relative 2921 | 2922 | CF$UID 2923 | 282 2924 | 2925 | 2926 | file://localhost/Users/owainhunt/CocoaDev/Github/UAGithubEngine/UAGithubParserDelegate.h 2927 | 2928 | $class 2929 | 2930 | CF$UID 2931 | 160 2932 | 2933 | NS.base 2934 | 2935 | CF$UID 2936 | 0 2937 | 2938 | NS.relative 2939 | 2940 | CF$UID 2941 | 284 2942 | 2943 | 2944 | file://localhost/Users/owainhunt/CocoaDev/Github/UAGithubEngine/UAGithubXMLParser.m 2945 | 2946 | $class 2947 | 2948 | CF$UID 2949 | 160 2950 | 2951 | NS.base 2952 | 2953 | CF$UID 2954 | 0 2955 | 2956 | NS.relative 2957 | 2958 | CF$UID 2959 | 286 2960 | 2961 | 2962 | file://localhost/Users/owainhunt/CocoaDev/Github/UAGithubEngine/CDataScanner.m 2963 | 2964 | $class 2965 | 2966 | CF$UID 2967 | 160 2968 | 2969 | NS.base 2970 | 2971 | CF$UID 2972 | 0 2973 | 2974 | NS.relative 2975 | 2976 | CF$UID 2977 | 288 2978 | 2979 | 2980 | file://localhost/Users/owainhunt/CocoaDev/Github/UAGithubEngine/UAGithubEngine.h 2981 | 2982 | $top 2983 | 2984 | State 2985 | 2986 | CF$UID 2987 | 1 2988 | 2989 | 2990 | $version 2991 | 100000 2992 | 2993 | 2994 | -------------------------------------------------------------------------------- /UAGithubEngine.xcodeproj/xcuserdata/owainhunt.xcuserdatad/xcbreakpoints/Breakpoints.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /UAGithubEngine.xcodeproj/xcuserdata/owainhunt.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | UAGithubEngine.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | UAGithubEngine.app 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /UAGithubEngine/NSArray+Utilities.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSArray+Utilities.h 3 | // UAGithubEngine 4 | // 5 | // Created by Owain Hunt on 27/07/2010. 6 | // Copyright 2010 Owain R Hunt. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSArray (Utilities) 12 | 13 | - (id)firstObject; 14 | - (NSArray *)sortedWithKey:(NSString *)theKey ascending:(BOOL)ascending; 15 | 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /UAGithubEngine/NSArray+Utilities.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSArray+Utilities.m 3 | // UAGithubEngine 4 | // 5 | // Created by Owain Hunt on 27/07/2010. 6 | // Copyright 2010 Owain R Hunt. All rights reserved. 7 | // 8 | // Credit: http://troybrant.net/blog/2010/02/adding-firstobject-to-nsarray/ 9 | 10 | #import "NSArray+Utilities.h" 11 | 12 | 13 | @implementation NSArray (Utilities) 14 | 15 | - (id)firstObject 16 | { 17 | if ([self count] > 0) 18 | { 19 | return [self objectAtIndex:0]; 20 | } 21 | return nil; 22 | } 23 | 24 | 25 | - (NSArray *)sortedWithKey:(NSString *)theKey ascending:(BOOL)ascending 26 | { 27 | return [self sortedArrayUsingDescriptors:[NSArray arrayWithObject:[[NSSortDescriptor alloc] initWithKey:theKey ascending:ascending selector:@selector(caseInsensitiveCompare:)]]]; 28 | } 29 | 30 | 31 | @end -------------------------------------------------------------------------------- /UAGithubEngine/NSData+Base64.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSData+Base64.h 3 | // base64 4 | // 5 | // Created by Matt Gallagher on 2009/06/03. 6 | // Copyright 2009 Matt Gallagher. All rights reserved. 7 | // 8 | // Permission is given to use this source code file, free of charge, in any 9 | // project, commercial or otherwise, entirely at your risk, with the condition 10 | // that any redistribution (in part or whole) of source code must retain 11 | // this copyright and permission notice. Attribution in compiled projects is 12 | // appreciated but not required. 13 | // 14 | 15 | #import 16 | 17 | void *NewBase64Decode( 18 | const char *inputBuffer, 19 | size_t length, 20 | size_t *outputLength); 21 | 22 | char *NewBase64Encode( 23 | const void *inputBuffer, 24 | size_t length, 25 | bool separateLines, 26 | size_t *outputLength); 27 | 28 | @interface NSData (Base64) 29 | 30 | + (NSData *)dataFromBase64String:(NSString *)aString; 31 | - (NSString *)base64EncodedString; 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /UAGithubEngine/NSData+Base64.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSData+Base64.m 3 | // base64 4 | // 5 | // Created by Matt Gallagher on 2009/06/03. 6 | // Copyright 2009 Matt Gallagher. All rights reserved. 7 | // 8 | // Permission is given to use this source code file, free of charge, in any 9 | // project, commercial or otherwise, entirely at your risk, with the condition 10 | // that any redistribution (in part or whole) of source code must retain 11 | // this copyright and permission notice. Attribution in compiled projects is 12 | // appreciated but not required. 13 | // 14 | 15 | #import "NSData+Base64.h" 16 | 17 | // 18 | // Mapping from 6 bit pattern to ASCII character. 19 | // 20 | static unsigned char base64EncodeLookup[65] = 21 | "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; 22 | 23 | // 24 | // Definition for "masked-out" areas of the base64DecodeLookup mapping 25 | // 26 | #define xx 65 27 | 28 | // 29 | // Mapping from ASCII character to 6 bit pattern. 30 | // 31 | static unsigned char base64DecodeLookup[256] = 32 | { 33 | xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, 34 | xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, 35 | xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, 62, xx, xx, xx, 63, 36 | 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, xx, xx, xx, xx, xx, xx, 37 | xx, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 38 | 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, xx, xx, xx, xx, xx, 39 | xx, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 40 | 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, xx, xx, xx, xx, xx, 41 | xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, 42 | xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, 43 | xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, 44 | xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, 45 | xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, 46 | xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, 47 | xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, 48 | xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, 49 | }; 50 | 51 | // 52 | // Fundamental sizes of the binary and base64 encode/decode units in bytes 53 | // 54 | #define BINARY_UNIT_SIZE 3 55 | #define BASE64_UNIT_SIZE 4 56 | 57 | // 58 | // NewBase64Decode 59 | // 60 | // Decodes the base64 ASCII string in the inputBuffer to a newly malloced 61 | // output buffer. 62 | // 63 | // inputBuffer - the source ASCII string for the decode 64 | // length - the length of the string or -1 (to specify strlen should be used) 65 | // outputLength - if not-NULL, on output will contain the decoded length 66 | // 67 | // returns the decoded buffer. Must be free'd by caller. Length is given by 68 | // outputLength. 69 | // 70 | void *NewBase64Decode( 71 | const char *inputBuffer, 72 | size_t length, 73 | size_t *outputLength) 74 | { 75 | if (length == -1) 76 | { 77 | length = strlen(inputBuffer); 78 | } 79 | 80 | size_t outputBufferSize = 81 | ((length+BASE64_UNIT_SIZE-1) / BASE64_UNIT_SIZE) * BINARY_UNIT_SIZE; 82 | unsigned char *outputBuffer = (unsigned char *)malloc(outputBufferSize); 83 | 84 | size_t i = 0; 85 | size_t j = 0; 86 | while (i < length) 87 | { 88 | // 89 | // Accumulate 4 valid characters (ignore everything else) 90 | // 91 | unsigned char accumulated[BASE64_UNIT_SIZE]; 92 | size_t accumulateIndex = 0; 93 | while (i < length) 94 | { 95 | unsigned char decode = base64DecodeLookup[inputBuffer[i++]]; 96 | if (decode != xx) 97 | { 98 | accumulated[accumulateIndex] = decode; 99 | accumulateIndex++; 100 | 101 | if (accumulateIndex == BASE64_UNIT_SIZE) 102 | { 103 | break; 104 | } 105 | } 106 | } 107 | 108 | // 109 | // Store the 6 bits from each of the 4 characters as 3 bytes 110 | // 111 | outputBuffer[j] = (accumulated[0] << 2) | (accumulated[1] >> 4); 112 | outputBuffer[j + 1] = (accumulated[1] << 4) | (accumulated[2] >> 2); 113 | outputBuffer[j + 2] = (accumulated[2] << 6) | accumulated[3]; 114 | j += accumulateIndex - 1; 115 | } 116 | 117 | if (outputLength) 118 | { 119 | *outputLength = j; 120 | } 121 | return outputBuffer; 122 | } 123 | 124 | // 125 | // NewBase64Decode 126 | // 127 | // Encodes the arbitrary data in the inputBuffer as base64 into a newly malloced 128 | // output buffer. 129 | // 130 | // inputBuffer - the source data for the encode 131 | // length - the length of the input in bytes 132 | // separateLines - if zero, no CR/LF characters will be added. Otherwise 133 | // a CR/LF pair will be added every 64 encoded chars. 134 | // outputLength - if not-NULL, on output will contain the encoded length 135 | // (not including terminating 0 char) 136 | // 137 | // returns the encoded buffer. Must be free'd by caller. Length is given by 138 | // outputLength. 139 | // 140 | char *NewBase64Encode( 141 | const void *buffer, 142 | size_t length, 143 | bool separateLines, 144 | size_t *outputLength) 145 | { 146 | const unsigned char *inputBuffer = (const unsigned char *)buffer; 147 | 148 | #define MAX_NUM_PADDING_CHARS 2 149 | #define OUTPUT_LINE_LENGTH 64 150 | #define INPUT_LINE_LENGTH ((OUTPUT_LINE_LENGTH / BASE64_UNIT_SIZE) * BINARY_UNIT_SIZE) 151 | #define CR_LF_SIZE 2 152 | 153 | // 154 | // Byte accurate calculation of final buffer size 155 | // 156 | size_t outputBufferSize = 157 | ((length / BINARY_UNIT_SIZE) 158 | + ((length % BINARY_UNIT_SIZE) ? 1 : 0)) 159 | * BASE64_UNIT_SIZE; 160 | if (separateLines) 161 | { 162 | outputBufferSize += 163 | (outputBufferSize / OUTPUT_LINE_LENGTH) * CR_LF_SIZE; 164 | } 165 | 166 | // 167 | // Include space for a terminating zero 168 | // 169 | outputBufferSize += 1; 170 | 171 | // 172 | // Allocate the output buffer 173 | // 174 | char *outputBuffer = (char *)malloc(outputBufferSize); 175 | if (!outputBuffer) 176 | { 177 | return NULL; 178 | } 179 | 180 | size_t i = 0; 181 | size_t j = 0; 182 | const size_t lineLength = separateLines ? INPUT_LINE_LENGTH : length; 183 | size_t lineEnd = lineLength; 184 | 185 | while (true) 186 | { 187 | if (lineEnd > length) 188 | { 189 | lineEnd = length; 190 | } 191 | 192 | for (; i + BINARY_UNIT_SIZE - 1 < lineEnd; i += BINARY_UNIT_SIZE) 193 | { 194 | // 195 | // Inner loop: turn 48 bytes into 64 base64 characters 196 | // 197 | outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i] & 0xFC) >> 2]; 198 | outputBuffer[j++] = base64EncodeLookup[((inputBuffer[i] & 0x03) << 4) 199 | | ((inputBuffer[i + 1] & 0xF0) >> 4)]; 200 | outputBuffer[j++] = base64EncodeLookup[((inputBuffer[i + 1] & 0x0F) << 2) 201 | | ((inputBuffer[i + 2] & 0xC0) >> 6)]; 202 | outputBuffer[j++] = base64EncodeLookup[inputBuffer[i + 2] & 0x3F]; 203 | } 204 | 205 | if (lineEnd == length) 206 | { 207 | break; 208 | } 209 | 210 | // 211 | // Add the newline 212 | // 213 | outputBuffer[j++] = '\r'; 214 | outputBuffer[j++] = '\n'; 215 | lineEnd += lineLength; 216 | } 217 | 218 | if (i + 1 < length) 219 | { 220 | // 221 | // Handle the single '=' case 222 | // 223 | outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i] & 0xFC) >> 2]; 224 | outputBuffer[j++] = base64EncodeLookup[((inputBuffer[i] & 0x03) << 4) 225 | | ((inputBuffer[i + 1] & 0xF0) >> 4)]; 226 | outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i + 1] & 0x0F) << 2]; 227 | outputBuffer[j++] = '='; 228 | } 229 | else if (i < length) 230 | { 231 | // 232 | // Handle the double '=' case 233 | // 234 | outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i] & 0xFC) >> 2]; 235 | outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i] & 0x03) << 4]; 236 | outputBuffer[j++] = '='; 237 | outputBuffer[j++] = '='; 238 | } 239 | outputBuffer[j] = 0; 240 | 241 | // 242 | // Set the output length and return the buffer 243 | // 244 | if (outputLength) 245 | { 246 | *outputLength = j; 247 | } 248 | return outputBuffer; 249 | } 250 | 251 | @implementation NSData (Base64) 252 | 253 | // 254 | // dataFromBase64String: 255 | // 256 | // Creates an NSData object containing the base64 decoded representation of 257 | // the base64 string 'aString' 258 | // 259 | // Parameters: 260 | // aString - the base64 string to decode 261 | // 262 | // returns the autoreleased NSData representation of the base64 string 263 | // 264 | + (NSData *)dataFromBase64String:(NSString *)aString 265 | { 266 | NSData *data = [aString dataUsingEncoding:NSASCIIStringEncoding]; 267 | size_t outputLength; 268 | void *outputBuffer = NewBase64Decode([data bytes], [data length], &outputLength); 269 | NSData *result = [NSData dataWithBytes:outputBuffer length:outputLength]; 270 | free(outputBuffer); 271 | return result; 272 | } 273 | 274 | // 275 | // base64EncodedString 276 | // 277 | // Creates an NSString object that contains the base 64 encoding of the 278 | // receiver's data. Lines are broken at 64 characters long. 279 | // 280 | // returns an autoreleased NSString being the base 64 representation of the 281 | // receiver. 282 | // 283 | - (NSString *)base64EncodedString 284 | { 285 | size_t outputLength; 286 | char *outputBuffer = 287 | NewBase64Encode([self bytes], [self length], true, &outputLength); 288 | 289 | NSString *result = 290 | [[NSString alloc] 291 | initWithBytes:outputBuffer 292 | length:outputLength 293 | encoding:NSASCIIStringEncoding]; 294 | free(outputBuffer); 295 | return result; 296 | } 297 | 298 | @end 299 | -------------------------------------------------------------------------------- /UAGithubEngine/NSInvocation+Blocks.h: -------------------------------------------------------------------------------- 1 | // NSInvocation+Blocks.h - http://github.com/rentzsch/NSInvocation-blocks 2 | // Copyright (c) 2010 Jonathan 'Wolf' Rentzsch: http://rentzsch.com 3 | // Some rights reserved: http://opensource.org/licenses/mit-license.php 4 | 5 | #import 6 | 7 | @interface NSInvocation (Blocks) 8 | 9 | /* 10 | Usage example: 11 | 12 | NSInvocation *invocation = [NSInvocation jr_invocationWithTarget:myObject block:^(id myObject){ 13 | [myObject someMethodWithArg:42.0]; 14 | }]; 15 | */ 16 | 17 | + (id)jr_invocationWithTarget:(id)target block:(void (^)(id target))block; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /UAGithubEngine/NSInvocation+Blocks.m: -------------------------------------------------------------------------------- 1 | // NSInvocation+Blocks.m - http://github.com/rentzsch/NSInvocation-blocks 2 | // Copyright (c) 2010 Jonathan 'Wolf' Rentzsch: http://rentzsch.com 3 | // Some rights reserved: http://opensource.org/licenses/mit-license.php 4 | 5 | #import "NSInvocation+Blocks.h" 6 | 7 | @interface JRInvocationGrabber : NSProxy { 8 | id target; 9 | NSInvocation *invocation; 10 | } 11 | @property (retain) id target; 12 | @property (retain) NSInvocation *invocation; 13 | @end 14 | 15 | @implementation JRInvocationGrabber 16 | @synthesize target, invocation; 17 | 18 | - (id)initWithTarget:(id)target_ { 19 | self.target = target_; 20 | return self; 21 | } 22 | 23 | - (NSMethodSignature*)methodSignatureForSelector:(SEL)selector_ { 24 | return [self.target methodSignatureForSelector:selector_]; 25 | } 26 | 27 | - (void)forwardInvocation:(NSInvocation*)invocation_ { 28 | [invocation_ setTarget:self.target]; 29 | self.invocation = invocation_; 30 | } 31 | 32 | - (void)dealloc { 33 | self.target = nil; 34 | self.invocation = nil; 35 | } 36 | @end 37 | 38 | 39 | @implementation NSInvocation (jr_block) 40 | 41 | + (id)jr_invocationWithTarget:(id)target_ block:(void (^)(id target))block_ { 42 | JRInvocationGrabber *grabber = [[JRInvocationGrabber alloc] initWithTarget:target_]; 43 | block_(grabber); 44 | return grabber.invocation; 45 | } 46 | 47 | @end -------------------------------------------------------------------------------- /UAGithubEngine/NSString+UAGithubEngineUtilities.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+UAGithubEngineUtilities.h 3 | // UAGithubEngine 4 | // 5 | // Created by Owain Hunt on 08/04/2010. 6 | // Copyright 2010 Owain R Hunt. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | 13 | @interface NSString(UAGithubEngineUtilities) 14 | 15 | - (NSDate *)dateFromGithubDateString; 16 | - (NSString *)encodedString; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /UAGithubEngine/NSString+UAGithubEngineUtilities.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+UAGithubEngineUtilities.m 3 | // UAGithubEngine 4 | // 5 | // Created by Owain Hunt on 08/04/2010. 6 | // Copyright 2010 Owain R Hunt. All rights reserved. 7 | // 8 | 9 | #import "NSString+UAGithubEngineUtilities.h" 10 | 11 | 12 | @implementation NSString(UAGithubEngineUtilities) 13 | 14 | - (NSDate *)dateFromGithubDateString { 15 | 16 | NSDateFormatter *df = [[NSDateFormatter alloc] init]; 17 | NSString *dateString = self; 18 | 19 | if (![[self substringWithRange:NSMakeRange([self length] - 1, 1)] isEqualToString:@"Z"]) 20 | { 21 | NSMutableString *newDate = [self mutableCopy]; 22 | [newDate deleteCharactersInRange:NSMakeRange(19, 1)]; 23 | [df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"]; 24 | dateString = newDate; 25 | } 26 | else 27 | { 28 | [df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"]; 29 | } 30 | 31 | return [df dateFromString:dateString]; 32 | 33 | } 34 | 35 | 36 | - (NSString *)encodedString 37 | { 38 | return (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, (__bridge CFStringRef)self, NULL, (CFStringRef)@";/?:@&=$+{}<>,", kCFStringEncodingUTF8); 39 | 40 | } 41 | 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /UAGithubEngine/NSString+UUID.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+UUID.h 3 | // MGTwitterEngine 4 | // 5 | // Created by Matt Gemmell on 16/09/2007. 6 | // Copyright 2008 Instinctive Code. 7 | // 8 | 9 | 10 | @interface NSString (UUID) 11 | 12 | + (NSString*)stringWithNewUUID; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /UAGithubEngine/NSString+UUID.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+UUID.m 3 | // MGTwitterEngine 4 | // 5 | // Created by Matt Gemmell on 16/09/2007. 6 | // Copyright 2008 Instinctive Code. 7 | // 8 | 9 | #import "NSString+UUID.h" 10 | 11 | 12 | @implementation NSString (UUID) 13 | 14 | 15 | + (NSString*)stringWithNewUUID 16 | { 17 | // Create a new UUID 18 | CFUUIDRef uuidObj = CFUUIDCreate(nil); 19 | 20 | // Get the string representation of the UUID 21 | NSString *newUUID = (__bridge_transfer NSString*)CFUUIDCreateString(nil, uuidObj); 22 | CFRelease(uuidObj); 23 | return newUUID; 24 | } 25 | 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /UAGithubEngine/UAGithubEngine-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | com.underscore.mac.${PRODUCT_NAME:rfc1034identifier} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | FMWK 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | NSHumanReadableCopyright 26 | Copyright © 2012 Owain R Hunt. All rights reserved. 27 | NSPrincipalClass 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /UAGithubEngine/UAGithubEngine-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'UAGithubEngine' target in the 'UAGithubEngine' project 3 | // 4 | 5 | #ifdef __OBJC__ 6 | #import 7 | #import "NSInvocation+Blocks.h" 8 | #endif 9 | -------------------------------------------------------------------------------- /UAGithubEngine/UAGithubEngine.h: -------------------------------------------------------------------------------- 1 | // 2 | // UAGithubEngine.h 3 | // UAGithubEngine 4 | // 5 | // Created by Owain Hunt on 02/04/2010. 6 | // Copyright 2010 Owain R Hunt. All rights reserved. 7 | // 8 | 9 | #import 10 | @class UAReachability; 11 | 12 | typedef void (^UAGithubEngineSuccessBlock)(id); 13 | typedef void (^UAGithubEngineBooleanSuccessBlock)(BOOL); 14 | typedef void (^UAGithubEngineFailureBlock)(NSError *); 15 | 16 | @interface UAGithubEngine : NSObject 17 | 18 | @property (strong) NSString *username; 19 | @property (nonatomic, strong) NSString *password; 20 | @property (nonatomic, strong) UAReachability *reachability; 21 | @property (nonatomic, assign, readonly) BOOL isReachable; 22 | 23 | - (id)initWithUsername:(NSString *)aUsername password:(NSString *)aPassword withReachability:(BOOL)withReach; 24 | 25 | /* 26 | Where methods take a 'whateverPath' argument, supply the full path to 'whatever'. 27 | For example, if the method calls for 'repositoryPath', supply @"username/repository". 28 | 29 | Where methods take a 'whateverName' argument, supply just the name of 'whatever'. The username used will be that set in the engine instance. 30 | 31 | For methods that take an NSDictionary as an argument, this should contain the relevant keys and values for the required API call. 32 | See the documentation for more details on updating repositories, and adding and editing issues. 33 | */ 34 | 35 | #pragma mark 36 | #pragma mark Gists 37 | #pragma mark 38 | 39 | - (void)gistsForUser:(NSString *)user success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 40 | - (void)gistsWithSuccess:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 41 | - (void)publicGistsWithSuccess:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 42 | - (void)starredGistsWithSuccess:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 43 | - (void)gist:(NSString *)gistId success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 44 | - (void)createGist:(NSDictionary *)gistDictionary success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 45 | - (void)editGist:(NSString *)gistId withDictionary:(NSDictionary *)gistDictionary success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 46 | - (void)starGist:(NSString *)gistId success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 47 | - (void)unstarGist:(NSString *)gistId success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 48 | - (void)gistIsStarred:(NSString *)gistId success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 49 | - (void)forkGist:(NSString *)gistId success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 50 | - (void)deleteGist:(NSString *)gistId success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 51 | 52 | 53 | #pragma mark Comments 54 | 55 | - (void)commentsForGist:(NSString *)gistId success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 56 | - (void)gistComment:(NSInteger)commentId success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 57 | - (void)addCommitComment:(NSDictionary *)commentDictionary forGist:(NSString *)gistId success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 58 | - (void)editGistComment:(NSInteger)commentId withDictionary:(NSDictionary *)commentDictionary success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 59 | - (void)deleteGistComment:(NSInteger)commentId success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 60 | 61 | 62 | #pragma mark 63 | #pragma mark Issues 64 | #pragma mark 65 | 66 | - (void)assignedIssuesWithState:(NSString *)state success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 67 | - (void)createdIssuesWithState:(NSString *)state success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 68 | - (void)subscribedIssuesWithState:(NSString *)state success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 69 | - (void)mentionedIssuesWithState:(NSString *)state success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 70 | - (void)openIssuesForRepository:(NSString *)repositoryPath withParameters:(NSDictionary *)parameters success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 71 | - (void)closedIssuesForRepository:(NSString *)repositoryPath withParameters:(NSDictionary *)parameters success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 72 | - (void)issue:(NSInteger)issueNumber inRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 73 | - (void)editIssue:(NSInteger)issueNumber inRepository:(NSString *)repositoryPath withDictionary:(NSDictionary *)issueDictionary success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 74 | - (void)addIssueForRepository:(NSString *)repositoryPath withDictionary:(NSDictionary *)issueDictionary success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 75 | - (void)closeIssue:(NSInteger)issueNumber inRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 76 | - (void)reopenIssue:(NSInteger)issueNumber inRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 77 | - (void)deleteIssue:(NSInteger)issueNumber inRepository:(NSString *)repositoryPath success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 78 | 79 | 80 | #pragma mark Assignees 81 | 82 | - (void)assigneesForRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 83 | - (void)user:(NSString *)user isAssigneeForRepository:(NSString *)repositoryPath success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 84 | 85 | 86 | #pragma mark Comments 87 | 88 | - (void)commentsForIssue:(NSInteger)issueNumber forRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 89 | - (void)issueComment:(NSInteger)commentNumber forRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 90 | - (void)addComment:(NSString *)comment toIssue:(NSInteger)issueNumber forRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 91 | - (void)editComment:(NSInteger)commentNumber forRepository:(NSString *)repositoryPath withBody:(NSString *)commentBody success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 92 | - (void)deleteComment:(NSInteger)commentNumber forRepository:(NSString *)repositoryPath success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 93 | 94 | 95 | #pragma mark 96 | #pragma mark Activity 97 | #pragma mark 98 | 99 | 100 | #pragma mark Notifications 101 | 102 | - (void)notificationsWithSuccess:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 103 | - (void)notificationsForRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 104 | - (void)notificationsForThread:(NSInteger)threadId success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 105 | - (void)markNotificationsAsReadWithSuccess:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 106 | - (void)markNotificationsAsReadInRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 107 | - (void)markNotificationThreadAsRead:(NSInteger)threadId success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 108 | - (void)currentUserIsSubscribedToNotificationThread:(NSInteger)threadId success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 109 | - (void)subscribeCurrentUserToNotificationThread:(NSInteger)threadId success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 110 | - (void)unsubscribeCurrentUserFromNotificationThread:(NSInteger)threadId success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 111 | 112 | 113 | #pragma mark Events 114 | 115 | - (void)eventsForIssue:(NSInteger)issueId forRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 116 | - (void)issueEventsForRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 117 | - (void)issueEvent:(NSInteger)eventId forRepository:(NSString*)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 118 | 119 | 120 | #pragma mark Labels 121 | 122 | // NOTE where it says ':id' in the documentation for a label, it actually should say ':name' 123 | - (void)labelsForRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 124 | - (void)label:(NSString *)labelName inRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 125 | - (void)addLabelToRepository:(NSString *)repositoryPath withDictionary:(NSDictionary *)labelDictionary success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 126 | - (void)editLabel:(NSString *)labelName inRepository:(NSString *)repositoryPath withDictionary:(NSDictionary *)labelDictionary success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 127 | - (void)removeLabel:(NSString *)labelName fromRepository:(NSString *)repositoryPath success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 128 | - (void)labelsForIssue:(NSInteger)issueId inRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 129 | // Note labels supplied to the following method must already exist within the repository (-addLabelToRepository:...) 130 | - (void)addLabels:(NSArray *)labels toIssue:(NSInteger)issueId inRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 131 | - (void)removeLabel:(NSString *)labelNamed fromIssue:(NSInteger)issueNumber inRepository:(NSString *)repositoryPath success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 132 | - (void)removeLabelsFromIssue:(NSInteger)issueNumber inRepository:(NSString *)repositoryPath success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 133 | - (void)replaceAllLabelsForIssue:(NSInteger)issueId inRepository:(NSString *)repositoryPath withLabels:(NSArray *)labels success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 134 | - (void)labelsForIssueInMilestone:(NSInteger)milestoneId inRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 135 | 136 | 137 | #pragma mark Milestones 138 | 139 | - (void)milestonesForRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 140 | - (void)milestone:(NSInteger)milestoneNumber forRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 141 | - (void)createMilestoneWithInfo:(NSDictionary *)infoDictionary forRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 142 | - (void)updateMilestone:(NSInteger)milestoneNumber forRepository:(NSString *)repositoryPath withInfo:(NSDictionary *)infoDictionary success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 143 | - (void)deleteMilestone:(NSInteger)milestoneNumber forRepository:(NSString *)repositoryPath success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 144 | - (void)addIssue:(NSInteger)issueId toMilestone:(NSInteger)milestoneId inRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 145 | 146 | 147 | #pragma mark 148 | #pragma mark Organisations 149 | #pragma mark 150 | 151 | - (void)organizationsForUser:(NSString *)user success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 152 | - (void)organizationsWithSuccess:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 153 | - (void)organization:(NSString *)org withSuccess:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 154 | - (void)updateOrganization:(NSString *)org withDictionary:(NSDictionary *)orgDictionary success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 155 | 156 | 157 | #pragma mark Members 158 | 159 | - (void)membersOfOrganization:(NSString *)org withSuccess:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 160 | - (void)user:(NSString *)user isMemberOfOrganization:(NSString *)org withSuccess:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 161 | - (void)removeUser:(NSString *)user fromOrganization:(NSString *)org withSuccess:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 162 | - (void)publicMembersOfOrganization:(NSString *)org withSuccess:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 163 | - (void)user:(NSString *)user isPublicMemberOfOrganization:(NSString *)org withSuccess:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 164 | - (void)publicizeMembershipOfUser:(NSString *)user inOrganization:(NSString *)org withSuccess:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 165 | - (void)concealMembershipOfUser:(NSString *)user inOrganization:(NSString *)org withSuccess:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 166 | 167 | 168 | #pragma mark Teams 169 | 170 | - (void)teamsInOrganization:(NSString *)org withSuccess:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 171 | - (void)team:(NSInteger)teamId withSuccess:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 172 | - (void)createTeam:(NSDictionary *)teamDictionary inOrganization:(NSString *)org withSuccess:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 173 | - (void)editTeam:(NSInteger)teamId withDictionary:(NSDictionary *)teamDictionary success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 174 | - (void)deleteTeam:(NSInteger)teamId withSuccess:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 175 | - (void)membersOfTeam:(NSInteger)teamId withSuccess:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 176 | - (void)user:(NSString *)user isMemberOfTeam:(NSInteger)teamId withSuccess:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 177 | - (void)addUser:(NSString *)user toTeam:(NSInteger)teamId withSuccess:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 178 | - (void)removeUser:(NSString *)user fromTeam:(NSInteger)teamId withSuccess:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 179 | - (void)repositoriesForTeam:(NSInteger)teamId withSuccess:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 180 | - (void)repository:(NSString *)repositoryPath isManagedByTeam:(NSInteger)teamId withSuccess:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 181 | - (void)addRepository:(NSString *)repositoryPath toTeam:(NSInteger)teamId withSuccess:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 182 | - (void)removeRepository:(NSString *)repositoryPath fromTeam:(NSInteger)teamId withSuccess:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 183 | 184 | 185 | #pragma mark 186 | #pragma mark Pull Requests 187 | #pragma mark 188 | 189 | - (void)pullRequestsForRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 190 | - (void)pullRequest:(NSInteger)pullRequestId forRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 191 | - (void)createPullRequest:(NSDictionary *)pullRequestDictionary forRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 192 | - (void)updatePullRequest:(NSInteger)pullRequestId forRepository:(NSString *)repositoryPath withDictionary:(NSDictionary *)pullRequestDictionary success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 193 | - (void)commitsInPullRequest:(NSInteger)pullRequestId forRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 194 | - (void)filesInPullRequest:(NSInteger)pullRequestId forRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 195 | - (void)pullRequest:(NSInteger)pullRequestId isMergedForRepository:(NSString *)repositoryPath success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 196 | - (void)mergePullRequest:(NSInteger)pullRequestId forRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 197 | 198 | 199 | #pragma mark Comments 200 | 201 | - (void)commentsForPullRequest:(NSInteger)pullRequestId forRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 202 | - (void)pullRequestComment:(NSInteger)commentId forRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 203 | - (void)createPullRequestComment:(NSDictionary *)commentDictionary forPullRequest:(NSInteger)pullRequestId forRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 204 | - (void)editPullRequestComment:(NSInteger)commentId forRepository:(NSString *)repositoryPath withDictionary:(NSDictionary *)commentDictionary success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 205 | - (void)deletePullRequestComment:(NSInteger)commentId forRepository:(NSString *)repositoryPath success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 206 | 207 | 208 | #pragma mark 209 | #pragma mark Repositories 210 | #pragma mark 211 | 212 | - (void)repositoriesForUser:(NSString *)aUser includeWatched:(BOOL)watched success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 213 | - (void)repositoriesForUser:(NSString *)aUser includeWatched:(BOOL)watched page:(int)page success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 214 | - (void)repositoriesWithSuccess:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 215 | - (void)createRepositoryWithInfo:(NSDictionary *)infoDictionary success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 216 | - (void)repository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 217 | - (void)updateRepository:(NSString *)repositoryPath withInfo:(NSDictionary *)infoDictionary success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 218 | - (void)contributorsForRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 219 | - (void)languageBreakdownForRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 220 | - (void)teamsForRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 221 | - (void)annotatedTagsForRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 222 | - (void)branchesForRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 223 | 224 | 225 | #pragma mark Collaborators 226 | 227 | - (void)collaboratorsForRepository:(NSString *)repositoryName success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 228 | - (void)user:(NSString *)user isCollaboratorForRepository:(NSString *)repositoryPath success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 229 | - (void)addCollaborator:(NSString *)collaborator toRepository:(NSString *)repositoryPath success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 230 | - (void)removeCollaborator:(NSString *)collaborator fromRepository:(NSString *)repositoryPath success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 231 | 232 | 233 | #pragma mark Commits 234 | 235 | - (void)commitsForRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 236 | - (void)commit:(NSString *)commitSha inRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 237 | 238 | 239 | #pragma mark Commit Comments 240 | 241 | - (void)commitCommentsForRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 242 | - (void)commitCommentsForCommit:(NSString *)sha inRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 243 | - (void)addCommitComment:(NSDictionary *)commentDictionary forCommit:(NSString *)sha inRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 244 | - (void)commitComment:(NSInteger)commentId inRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 245 | - (void)editCommitComment:(NSInteger)commentId inRepository:(NSString *)repositoryPath withDictionary:(NSDictionary *)infoDictionary success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 246 | - (void)deleteCommitComment:(NSInteger)commentId inRepository:(NSString *)repositoryPath success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 247 | 248 | 249 | #pragma mark Downloads 250 | 251 | - (void)downloadsForRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 252 | - (void)download:(NSInteger)downloadId inRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 253 | // See http://developer.github.com/v3/repos/downloads for more information: this is a two-part process. 254 | - (void)addDownloadToRepository:(NSString *)repositoryPath withDictionary:(NSDictionary *)downloadDictionary success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 255 | - (void)deleteDownload:(NSInteger)downloadId fromRepository:(NSString *)repositoryPath success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 256 | 257 | 258 | #pragma mark Forks 259 | 260 | - (void)forksForRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 261 | - (void)forkRepository:(NSString *)repositoryPath inOrganization:(NSString *)org success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 262 | - (void)forkRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 263 | 264 | 265 | #pragma mark Keys 266 | 267 | - (void)deployKeysForRepository:(NSString *)repositoryName success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 268 | - (void)deployKey:(NSInteger)keyId forRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 269 | - (void)addDeployKey:(NSString *)keyData withTitle:(NSString *)keyTitle ToRepository:(NSString *)repositoryName success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 270 | - (void)editDeployKey:(NSInteger)keyId inRepository:(NSString *)repositoryPath withDictionary:(NSDictionary *)keyDictionary success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 271 | - (void)deleteDeployKey:(NSInteger)keyId fromRepository:(NSString *)repositoryName success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 272 | 273 | 274 | #pragma mark Watching 275 | 276 | - (void)watchersForRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 277 | - (void)watchedRepositoriesForUser:(NSString *)user success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 278 | - (void)watchedRepositoriessuccess:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 279 | - (void)repositoryIsWatched:(NSString *)repositoryPath success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 280 | - (void)watchRepository:(NSString *)repositoryPath success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 281 | - (void)unwatchRepository:(NSString *)repositoryPath success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 282 | 283 | 284 | #pragma mark Hooks 285 | 286 | - (void)hooksForRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 287 | - (void)hook:(NSInteger)hookId forRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 288 | - (void)addHook:(NSDictionary *)hookDictionary forRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 289 | - (void)editHook:(NSInteger)hookId forRepository:(NSString *)repositoryPath withDictionary:(NSDictionary *)hookDictionary success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 290 | - (void)testHook:(NSInteger)hookId forRepository:(NSString *)repositoryPath success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 291 | - (void)deleteHook:(NSInteger)hookId fromRepository:(NSString *)repositoryPath success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 292 | 293 | 294 | #pragma mark Merges 295 | 296 | - (void)mergeHead:(NSString *)head intoBranch:(NSString *)base inRepository:(NSString *)repositoryPath withMessage:(NSString *)commitMessage success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 297 | 298 | 299 | #pragma mark 300 | #pragma mark Users 301 | #pragma mark 302 | 303 | - (void)user:(NSString *)user success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 304 | - (void)userWithSuccess:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 305 | - (void)editUser:(NSDictionary *)userDictionary success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 306 | 307 | 308 | #pragma mark Emails 309 | 310 | - (void)emailAddressessuccess:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 311 | - (void)addEmailAddresses:(NSArray *)emails success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 312 | - (void)deleteEmailAddresses:(NSArray *)emails success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 313 | 314 | 315 | #pragma mark Followers 316 | 317 | - (void)followers:(NSString *)user success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 318 | - (void)followersWithSuccess:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 319 | - (void)following:(NSString *)user success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 320 | - (void)follows:(NSString *)user success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 321 | - (void)follow:(NSString *)user success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 322 | - (void)unfollow:(NSString *)user success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 323 | 324 | 325 | #pragma mark Keys 326 | 327 | - (void)publicKeysWithSuccess:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 328 | - (void)publicKey:(NSInteger)keyId success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 329 | - (void)addPublicKey:(NSDictionary *)keyDictionary success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 330 | - (void)updatePublicKey:(NSInteger)keyId withInfo:(NSDictionary *)keyDictionary success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 331 | - (void)deletePublicKey:(NSInteger)keyId success:(UAGithubEngineBooleanSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 332 | 333 | 334 | #pragma mark 335 | #pragma mark Events 336 | #pragma mark 337 | 338 | - (void)eventsWithSuccess:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 339 | - (void)eventsForRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 340 | - (void)eventsForNetwork:(NSString *)networkPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 341 | - (void)eventsReceivedByUser:(NSString *)user success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 342 | - (void)eventsPerformedByUser:(NSString *)user success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 343 | - (void)publicEventsPerformedByUser:(NSString *)user success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 344 | - (void)eventsForOrganization:(NSString *)organization user:(NSString *)user success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 345 | - (void)publicEventsForOrganization:(NSString *)organization success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 346 | 347 | 348 | #pragma mark - 349 | #pragma mark Git Database API 350 | #pragma mark - 351 | 352 | // The following methods access the Git Database API. 353 | // See http://developer.github.com/v3/git/ for more information. 354 | 355 | #pragma mark Trees 356 | 357 | - (void)tree:(NSString *)sha inRepository:(NSString *)repositoryPath recursive:(BOOL)recursive success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 358 | - (void)createTree:(NSDictionary *)treeDictionary inRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 359 | 360 | 361 | #pragma mark Blobs 362 | 363 | - (void)blobForSHA:(NSString *)sha inRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 364 | - (void)createBlob:(NSDictionary *)blobDictionary inRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 365 | /* 366 | - (void)blob:(NSString *)blobPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 367 | - (void)rawBlob:(NSString *)blobPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 368 | */ 369 | 370 | 371 | #pragma mark References 372 | 373 | - (void)reference:(NSString *)reference inRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 374 | - (void)referencesInRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 375 | - (void)tagsForRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 376 | - (void)createReference:(NSDictionary *)refDictionary inRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 377 | - (void)updateReference:(NSString *)reference inRepository:(NSString *)repositoryPath withDictionary:(NSDictionary *)referenceDictionary success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 378 | 379 | 380 | #pragma mark Tags 381 | 382 | - (void)tag:(NSString *)sha inRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 383 | - (void)createTagObject:(NSDictionary *)tagDictionary inRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 384 | 385 | 386 | #pragma mark Raw Commits 387 | 388 | - (void)rawCommit:(NSString *)commit inRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 389 | - (void)createRawCommit:(NSDictionary *)commitDictionary inRepository:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 390 | 391 | 392 | #pragma mark - 393 | #pragma mark Markdown 394 | #pragma mark - 395 | 396 | - (void)renderAsMarkdown:(NSString *)string success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 397 | - (void)renderAsGitHubFlavoredMarkdown:(NSString *)string withRepositoryContext:(NSString *)repositoryPath success:(UAGithubEngineSuccessBlock)successBlock failure:(UAGithubEngineFailureBlock)failureBlock; 398 | 399 | 400 | @end 401 | -------------------------------------------------------------------------------- /UAGithubEngine/UAGithubEngineConstants.h: -------------------------------------------------------------------------------- 1 | // 2 | // UAGithubEngineConstants.h 3 | // IssuesHub 4 | // 5 | // Created by Owain Hunt on 11/11/2010. 6 | // Copyright 2010 Owain R Hunt. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | extern NSString * const UAGithubAPILimitReached; 13 | 14 | #define UAGithubReachabilityStatusDidChangeNotification @"UAGithubReachabilityStatusDidChangeNotification" 15 | 16 | #define UAGithubIssueClosedState @"closed" 17 | #define UAGithubIssueOpenState @"open" 18 | 19 | -------------------------------------------------------------------------------- /UAGithubEngine/UAGithubEngineConstants.m: -------------------------------------------------------------------------------- 1 | // 2 | // UAGithubEngineConstants.m 3 | // IssuesHub 4 | // 5 | // Created by Owain Hunt on 11/11/2010. 6 | // Copyright 2010 Owain R Hunt. All rights reserved. 7 | // 8 | 9 | #import "UAGithubEngineConstants.h" 10 | 11 | 12 | NSString * const UAGithubAPILimitReached = @"UAGithubAPILimitReached"; 13 | 14 | 15 | -------------------------------------------------------------------------------- /UAGithubEngine/UAGithubEngineRequestTypes.h: -------------------------------------------------------------------------------- 1 | // 2 | // UAGithubEngineRequestTypes.h 3 | // UAGithubEngine 4 | // 5 | // Created by Owain Hunt on 05/04/2010. 6 | // Copyright 2010 Owain R Hunt. All rights reserved. 7 | // 8 | 9 | 10 | 11 | typedef enum UAGithubRequestType 12 | { 13 | UAGithubUsersRequest = 0, // Get more than one non-specific user 14 | UAGithubUserRequest, // Get exactly one specific user 15 | UAGithubUserEditRequest, // Edit the authenticated user 16 | UAGithubEmailsRequest, // Get one or more email addresses 17 | UAGithubEmailAddRequest, // Add one or more email addresses 18 | UAGithubEmailDeleteRequest, // Delete one or more email addresses 19 | UAGithubRepositoriesRequest, // Get more than one non-specific repository 20 | UAGithubRepositoryRequest, // Get exactly one specific repository 21 | UAGithubRepositoryUpdateRequest, // Update repository metadata 22 | UAGithubRepositoryWatchingRequest, // Auth'd user watching a specific repository? 23 | UAGithubRepositoryWatchRequest, // Watch a repository 24 | UAGithubRepositoryUnwatchRequest, // Unwatch a repository 25 | UAGithubRepositoryForksRequest, // Get one or more forks 26 | UAGithubRepositoryForkRequest, // Fork a repository 27 | UAGithubRepositoryCreateRequest, // Create a repository 28 | UAGithubRepositoryPrivatiseRequest, // Make a repository private 29 | UAGithubRepositoryPubliciseRequest, // Make a repository public 30 | UAGithubRepositoryDeleteRequest, // Delete a repository 31 | UAGithubRepositoryDeleteConfirmationRequest, // Confirm deletion of a repository 32 | UAGithubDeployKeysRequest, // Get repository-specific deploy keys 33 | UAGithubDeployKeyRequest, // Get exactly one specific deploy key 34 | UAGithubDeployKeyAddRequest, // Add a repository-specific deploy key 35 | UAGithubDeployKeyEditRequest, // Edit a deploy key 36 | UAGithubDeployKeyDeleteRequest, // Delete a repository-specific deploy key 37 | UAGithubRepositoryLanguageBreakdownRequest, // Get the language breakdown for a repository 38 | UAGithubRepositoryContributorsRequest, // Get one or more contributors 39 | UAGithubRepositoryTeamsRequest, // Get one or more teams 40 | UAGithubTagsRequest, // Tags for a repository 41 | UAGithubBranchesRequest, // Branches for a repository 42 | UAGithubCollaboratorsRequest, // Collaborators for a repository 43 | UAGithubCollaboratorAddRequest, // Add a collaborator 44 | UAGithubCollaboratorRemoveRequest, // Remove a collaborator 45 | UAGithubDownloadsRequest, // Get one or more downloads 46 | UAGithubDownloadRequest, // Get exactly one specific download 47 | UAGithubDownloadAddRequest, // Add a download 48 | UAGithubDownloadDeleteRequest, // Delete a download 49 | UAGithubRepositoryHooksRequest, // Get one or more repository hooks 50 | UAGithubRepositoryHookRequest, // Get one specific repository hook 51 | UAGithubRepositoryHookAddRequest, // Add a repository hook 52 | UAGithubRepositoryHookEditRequest, // Edit a repository hook 53 | UAGithubRepositoryHookTestRequest, // Test a repository hook 54 | UAGithubRepositoryHookDeleteRequest, // Delete a repository hook 55 | UAGithubCommitsRequest, // Get more than one non-specific commit 56 | UAGithubCommitRequest, // Get exactly one specific commit 57 | UAGithubCommitCommentsRequest, // Get one or more commit comments 58 | UAGithubCommitCommentRequest, // Get exactly one commit comment 59 | UAGithubCommitCommentAddRequest, // Add a commit comment 60 | UAGithubCommitCommentEditRequest, // Edit a commit comment 61 | UAGithubCommitCommentDeleteRequest, // Delete a commit comment 62 | UAGithubIssuesOpenRequest, // Get open issues 63 | UAGithubIssuesClosedRequest, // Get closed issues 64 | UAGithubIssuesRequest, // Get all issues 65 | UAGithubIssueRequest, // Get exactly one specific issue 66 | UAGithubIssueAddRequest, // Add an issue 67 | UAGithubIssueEditRequest, // Edit an issue 68 | UAGithubIssueCloseRequest, // Close an issue 69 | UAGithubIssueReopenRequest, // Reopen a closed issue 70 | UAGithubIssueDeleteRequest, // Delete an issue 71 | UAGithubRepositoryLabelsRequest, // Get repository-wide issue labels 72 | UAGithubRepositoryLabelAddRequest, // Add a repository-wide issue label 73 | UAGithubRepositoryLabelEditRequest, // Edit a repository-wide issue label 74 | UAGithubRepositoryLabelRemoveRequest, // Remove a repository-wide issue label 75 | UAGithubIssueLabelsRequest, // Get one or more issue labels 76 | UAGithubIssueLabelRequest, // Get exactly one specific issue label 77 | UAGithubIssueLabelAddRequest, // Add a label to a specific issue 78 | UAGithubIssueLabelRemoveRequest, // Remove a label from a specific issue 79 | UAGithubIssueLabelReplaceRequest, // Replace all labels on a specific issue 80 | UAGithubIssueCommentsRequest, // Get more than one non-specific issue comment 81 | UAGithubIssueCommentRequest, // Get exactly one specific issue comment 82 | UAGithubIssueCommentAddRequest, // Add a comment to an issue 83 | UAGithubIssueCommentEditRequest, // Edit an issue comment 84 | UAGithubIssueCommentDeleteRequest, // Delete an issue comment 85 | UAGithubFollowingRequest, // Following 86 | UAGithubFollowersRequest, // Followers 87 | UAGithubFollowRequest, // Follow a User 88 | UAGithubUnfollowRequest, // Unfollow a user 89 | UAGithubMilestonesRequest, // Get one or more milestones 90 | UAGithubMilestoneRequest, // Get exactly one specific milestone 91 | UAGithubMilestoneCreateRequest, // Create a new milestone 92 | UAGithubMilestoneUpdateRequest, // Edit an existing milestone 93 | UAGithubMilestoneDeleteRequest, // Delete a milestone 94 | UAGithubPublicKeysRequest, // Get one or more public keys 95 | UAGithubPublicKeyRequest, // Get exactly one public key 96 | UAGithubPublicKeyAddRequest, // Add a public key 97 | UAGithubPublicKeyEditRequest, // Edit a public key 98 | UAGithubPublicKeyDeleteRequest, // Delete a public key 99 | UAGithubTreeRequest, // Get the listing of a tree by SHA 100 | UAGithubTreeCreateRequest, // Create a new tree 101 | UAGithubBlobsRequest, // Get the names and SHAs of all blobs for a specific tree SHA 102 | UAGithubBlobRequest, // Get data about a single blob by tree SHA and path 103 | UAGithubBlobCreateRequest, // Create a new blob 104 | UAGithubRawBlobRequest, // Get the raw data for a blob 105 | UAGithubReferencesRequest, // Get one or more references 106 | UAGithubReferenceRequest, // Get exactly one reference 107 | UAGithubReferenceCreateRequest, // Create a new reference 108 | UAGithubReferenceUpdateRequest, // Edit an existing reference 109 | UAGithubTagObjectRequest, // Get exactly one annotated tag object 110 | UAGithubTagObjectCreateRequest, // Create a new annotated tag object 111 | UAGithubRawCommitRequest, // Get exactly one raw commit 112 | UAGithubRawCommitCreateRequest, // Create a new raw commit 113 | UAGithubGistsRequest, // Get one or more gists 114 | UAGithubGistRequest, // Get exactly one gist 115 | UAGithubGistCreateRequest, // Create a new gist 116 | UAGithubGistUpdateRequest, // Edit a gist 117 | UAGithubGistStarRequest, // Star a gist 118 | UAGithubGistUnstarRequest, // Unstar a gist 119 | UAGithubGistStarStatusRequest, // Get star status of a gist 120 | UAGithubGistForkRequest, // Fork a gist 121 | UAGithubGistDeleteRequest, // Delete a gist 122 | UAGithubGistCommentsRequest, // Get one or more gist comments 123 | UAGithubGistCommentRequest, // Get exactly one gist comment 124 | UAGithubGistCommentCreateRequest, // Create a new gist comment 125 | UAGithubGistCommentUpdateRequest, // Edit a gist comment 126 | UAGithubGistCommentDeleteRequest, // Delete a gist comment 127 | UAGithubNotificationsRequest, // List all notifications for the current user, grouped by repository 128 | UAGithubNotificationsMarkReadRequest, // Mark a notification as read 129 | UAGithubNotificationsMarkThreadReadRequest, // Mark a notification thread as read 130 | UAGithubNotificationThreadSubscriptionRequest, // Subscribe or unsubscribe from a notification thread 131 | UAGithubNotificationDeleteSubscriptionRequest, // Delete a notification thread subscription 132 | UAGithubIssueEventsRequest, // Get one or more issue events 133 | UAGithubIssueEventRequest, // Get exactly one issue event 134 | UAGithubPullRequestsRequest, // Get one or more pull requests 135 | UAGithubPullRequestRequest, // Get exactly one pull request 136 | UAGithubPullRequestCreateRequest, // Create a pull request 137 | UAGithubPullRequestUpdateRequest, // Edit a pull request 138 | UAGithubPullRequestCommitsRequest, // Get commits in a pull request 139 | UAGithubPullRequestFilesRequest, // Get files in a pull request 140 | UAGithubPullRequestMergeStatusRequest, // Get the merge status of a pull request 141 | UAGithubPullRequestMergeRequest, // Merge a pull request 142 | UAGithubPullRequestCommentsRequest, // Get one or more pull request comments 143 | UAGithubPullRequestCommentRequest, // Get exactly one pull request comments 144 | UAGithubPullRequestCommentCreateRequest, // Create a pull request comment 145 | UAGithubPullRequestCommentUpdateRequest, // Update a pull request comment 146 | UAGithubPullRequestCommentDeleteRequest, // Delete a pull request comment 147 | UAGithubEventsRequest, // Get one or more events of unspecified type 148 | UAGithubOrganizationsRequest, // Get one or more organizations 149 | UAGithubOrganizationRequest, // Get exactly one organization 150 | UAGithubOrganizationUpdateRequest, // Update an existing organization 151 | UAGithubOrganizationMembersRequest, // Get one or more organization members 152 | UAGithubOrganizationMembershipStatusRequest, // Get whether user is member of a specified organization 153 | UAGithubOrganizationMemberRemoveRequest, // Remove a user from am organization 154 | UAGithubOrganizationMembershipPublicizeRequest, // Publicize user's membership of organization 155 | UAGithubOrganizationMembershipConcealRequest, // Concel user's membership of organization 156 | UAGithubTeamsRequest, // Get one or more organization teams 157 | UAGithubTeamRequest, // Get exactly one organization team 158 | UAGithubTeamCreateRequest, // Create a new team 159 | UAGithubTeamUpdateRequest, // Update an existing team 160 | UAGithubTeamDeleteRequest, // Delete an existing team 161 | UAGithubTeamMembersRequest, // Get one or more team members 162 | UAGithubTeamMembershipStatusRequest, 163 | UAGithubTeamMemberAddRequest, 164 | UAGithubTeamMemberRemoveRequest, // Remove a user from a team 165 | UAGithubTeamRepositoryManagershipStatusRequest, // Get whether a team manages a specific repository 166 | UAGithubTeamRepositoryManagershipAddRequest, // Add a specific repository to a team 167 | UAGithubTeamRepositoryManagershipRemoveRequest, // Remove a specific repository from a team 168 | UAGithubAssigneesRequest, // Get one or more assignees 169 | UAGithubAssigneeRequest, // Get whether one user is an assignee on a repository 170 | UAGithubMarkdownRequest, // Get a string as Markdown 171 | UAGithubRepositoryMergeRequest, // Merge one branch into another 172 | } UAGithubRequestType; 173 | 174 | 175 | typedef enum UAGithubResponseType 176 | { 177 | UAGithubNoContentResponse = 0, // No content expected 178 | UAGithubUsersResponse, // One or more users 179 | UAGithubUserResponse, // Exactly one user 180 | UAGithubEmailsResponse, // One or more email addresses 181 | UAGithubRepositoriesResponse, // One or more repositories 182 | UAGithubRepositoryResponse, // Exactly one repository 183 | UAGithubRepositoryTeamsResponse, // One or more teams 184 | UAGithubDeployKeysResponse, // One or more deploy keys 185 | UAGithubDeployKeyResponse, // Exactly one deploy key 186 | UAGithubDownloadsResponse, // One or more downloads 187 | UAGithubDownloadResponse, // Exactly one download 188 | UAGithubRepositoryLanguageBreakdownResponse, // Breakdown in language-bytes pairs 189 | UAGithubBranchesResponse, // One or more branches 190 | UAGithubCollaboratorsResponse, // One or more users 191 | UAGithubRepositoryHooksResponse, // One or more repository hooks 192 | UAGithubRepositoryHookResponse, // Exactly one repository hook 193 | UAGithubCommitsResponse, // One or more commits 194 | UAGithubCommitResponse, // Exactly one commit 195 | UAGithubCommitCommentsResponse, // One or more commit comments 196 | UAGithubCommitCommentResponse, // Exactly one commit comment 197 | UAGithubIssuesResponse, // One or more issues 198 | UAGithubIssueResponse, // Exactly one issue 199 | UAGithubIssueCommentsResponse, // One or more issue comments 200 | UAGithubIssueCommentResponse, // Exactly one issue comment 201 | UAGithubIssueLabelsResponse, // One or more issue labels 202 | UAGithubIssueLabelResponse, // Exactly one issue label 203 | UAGithubRepositoryLabelsResponse, // One or more repository-wide issue labels 204 | UAGithubRepositoryLabelResponse, // Exactly one repository-wide issue label 205 | UAGithubBlobsResponse, // Name and SHA for all files in given tree SHA 206 | UAGithubBlobResponse, // Metadata and file data for given tree SHA and path 207 | UAGithubFollowingResponse, // Following 208 | UAGithubFollowersResponse, // Followers 209 | UAGithubFollowedResponse, // User was followed 210 | UAGithubUnfollowedResponse, // User was unfollowed 211 | UAGithubMilestonesResponse, // One or more milestones 212 | UAGithubMilestoneResponse, // Exactly one milestone 213 | UAGithubPublicKeysResponse, // One or more public keys 214 | UAGithubPublicKeyResponse, // Exactly one public key 215 | UAGithubSHAResponse, // SHA 216 | UAGithubTreeResponse, // Metadata for all files in given commit 217 | UAGithubReferencesResponse, // One or more references 218 | UAGithubReferenceResponse, // Exactly one reference 219 | UAGithubAnnotatedTagsResponse, // One or more annotated tag objects 220 | UAGithubAnnotatedTagResponse, // Exactly one annotated tag object 221 | UAGithubRawCommitResponse, // Exactly one raw commit 222 | UAGithubGistsResponse, // One or more gists 223 | UAGithubGistResponse, // Exactly one gist 224 | UAGithubGistCommentsResponse, // One or more gist comments 225 | UAGithubGistCommentResponse, // Exactly one gist comment 226 | UAGithubIssueEventsResponse, // One or more issue events 227 | UAGithubIssueEventResponse, // Exactly one issue event 228 | UAGithubPullRequestsResponse, // One or more pull requests 229 | UAGithubPullRequestResponse, // Exactly one pull request 230 | UAGithubPullRequestMergeSuccessStatusResponse, // Success or failure of merge attempt 231 | UAGithubPullRequestCommitsResponse, // One or more pull request commits 232 | UAGithubPullRequestFilesResponse, // One or more pull request files 233 | UAGithubPullRequestCommentsResponse, // One or more pull request comments 234 | UAGithubPullRequestCommentResponse, // Exactly one pull request comment 235 | UAGithubTagsResponse, // Tags in name-SHA pairs 236 | UAGithubNotificationsResponse, // One or more notifications 237 | UAGithubNotificationThreadsResponse, // One or more notification threads 238 | UAGithubNotificationThreadSubscriptionResponse, // Exactly one notification thread subscription 239 | UAGithubEventsResponse, // One or more events of unspecified type 240 | UAGithubOrganizationsResponse, // One or more organizations 241 | UAGithubOrganizationResponse, // Exactly one organization 242 | UAGithubTeamsResponse, // One or more organization teams 243 | UAGithubTeamResponse, // Exactly one team 244 | UAGithubMarkdownResponse, // HTML from Markdown 245 | } UAGithubResponseType; 246 | -------------------------------------------------------------------------------- /UAGithubEngine/UAGithubJSONParser.h: -------------------------------------------------------------------------------- 1 | // 2 | // UAGithubJSONParser.h 3 | // UAGithubEngine 4 | // 5 | // Created by Owain Hunt on 27/07/2010. 6 | // Copyright 2010 Owain R Hunt. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "UAGithubEngineRequestTypes.h" 12 | 13 | @interface UAGithubJSONParser : NSObject 14 | { 15 | 16 | } 17 | 18 | + (id)parseJSON:(NSData *)theJSON error:(NSError **)error; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /UAGithubEngine/UAGithubJSONParser.m: -------------------------------------------------------------------------------- 1 | // 2 | // UAGithubJSONParser.m 3 | // UAGithubEngine 4 | // 5 | // Created by Owain Hunt on 27/07/2010. 6 | // Copyright 2010 Owain R Hunt. All rights reserved. 7 | // 8 | 9 | #import "UAGithubJSONParser.h" 10 | #import "NSArray+Utilities.h" 11 | #import "NSString+UAGithubEngineUtilities.h" 12 | 13 | @implementation UAGithubJSONParser 14 | 15 | + (id)parseJSON:(NSData *)theJSON error:(NSError **)error; 16 | { 17 | NSArray *dateElements = [NSArray arrayWithObjects:@"created_at", @"updated_at", @"closed_at", @"due_on", @"pushed_at", @"committed_at", @"merged_at", @"date", @"expirationdate", nil]; 18 | NSMutableArray *jsonArray; 19 | id jsonObj = [NSJSONSerialization JSONObjectWithData:theJSON options:NSJSONReadingMutableLeaves|NSJSONReadingMutableContainers|NSJSONReadingAllowFragments error:error]; 20 | 21 | jsonArray = ([jsonObj isKindOfClass:[NSDictionary class]]) ? [NSMutableArray arrayWithObject:jsonObj] : [jsonObj mutableCopy]; 22 | 23 | if (!error) 24 | { 25 | if ([[[jsonArray firstObject] allKeys] containsObject:@"error"]) 26 | { 27 | NSDictionary *dictionary = [jsonArray firstObject]; 28 | *error = [NSError errorWithDomain:@"UAGithubEngineGithubError" code:0 userInfo:[NSDictionary dictionaryWithObject:[dictionary objectForKey:@"error"] forKey:@"errorMessage"]]; 29 | NSLog(@"Error: %@", *error); 30 | } 31 | 32 | for (NSMutableDictionary *theDictionary in jsonArray) 33 | { 34 | NSArray *keys = [theDictionary allKeys]; 35 | for (NSString *keyString in dateElements) 36 | { 37 | if ([keys containsObject:keyString]) { 38 | NSDate *date = [[theDictionary objectForKey:keyString] dateFromGithubDateString]; 39 | if (date != nil) 40 | { 41 | [theDictionary setObject:date forKey:keyString]; 42 | } 43 | } 44 | } 45 | } 46 | 47 | } 48 | 49 | return jsonArray; 50 | } 51 | 52 | 53 | @end 54 | -------------------------------------------------------------------------------- /UAGithubEngine/UAGithubURLConnection.h: -------------------------------------------------------------------------------- 1 | // 2 | // UAGithubURLConnection.h 3 | // UAGithubEngine 4 | // 5 | // Created by Owain Hunt on 26/04/2010. 6 | // Copyright 2010 Owain R Hunt. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "UAGithubEngineRequestTypes.h" 11 | 12 | @interface UAGithubURLConnection : NSURLConnection 13 | { 14 | NSMutableData *data; 15 | UAGithubRequestType requestType; 16 | UAGithubResponseType responseType; 17 | NSString *identifier; 18 | } 19 | 20 | 21 | @property (nonatomic, strong) NSMutableData *data; 22 | @property (nonatomic, assign) UAGithubRequestType requestType; 23 | @property (nonatomic, assign) UAGithubResponseType responseType; 24 | @property (nonatomic, strong) NSString *identifier; 25 | 26 | + (id)asyncRequest:(NSURLRequest *)request success:(id(^)(NSData *, NSURLResponse *))successBlock failure:(id(^)(NSError *))failureBlock_; 27 | + (id)asyncRequest:(NSURLRequest *)request success:(id(^)(NSData *, NSURLResponse *))successBlock error:(NSError *__strong *)error; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /UAGithubEngine/UAGithubURLConnection.m: -------------------------------------------------------------------------------- 1 | // 2 | // UAGithubURLConnection.m 3 | // UAGithubEngine 4 | // 5 | // Created by Owain Hunt on 26/04/2010. 6 | // Copyright 2010 Owain R Hunt. All rights reserved. 7 | // 8 | 9 | #import "UAGithubURLConnection.h" 10 | #import "NSString+UUID.h" 11 | 12 | 13 | @implementation UAGithubURLConnection 14 | 15 | @synthesize data, requestType, responseType, identifier; 16 | 17 | + (id)asyncRequest:(NSURLRequest *)request success:(id(^)(NSData *, NSURLResponse *))successBlock failure:(id(^)(NSError *))failureBlock_ 18 | { 19 | // This has to be dispatch_sync rather than _async, otherwise our successBlock executes before the request is done and we're all bass-ackwards. 20 | //dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 21 | 22 | @autoreleasepool 23 | { 24 | NSLog(@"New %@ connection: %@", request.HTTPMethod, request); 25 | 26 | NSURLResponse *response = nil; 27 | NSError *error = nil; 28 | NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 29 | 30 | if (error) { 31 | return failureBlock_(error); 32 | } else { 33 | return successBlock(data,response); 34 | } 35 | } 36 | 37 | //}); 38 | } 39 | 40 | + (id)asyncRequest:(NSURLRequest *)request success:(id(^)(NSData *, NSURLResponse *))successBlock error:(NSError *__strong *)error 41 | { 42 | // This has to be dispatch_sync rather than _async, otherwise our successBlock executes before the request is done and we're all bass-ackwards. 43 | //dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 44 | 45 | @autoreleasepool 46 | { 47 | NSLog(@"New %@ connection: %@", request.HTTPMethod, request); 48 | 49 | NSURLResponse *response = nil; 50 | NSError *connectionError = nil; 51 | NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&connectionError]; 52 | 53 | if (connectionError) { 54 | *error = connectionError; 55 | return nil; 56 | } else { 57 | return successBlock(data,response); 58 | } 59 | } 60 | 61 | //}); 62 | } 63 | 64 | @end 65 | -------------------------------------------------------------------------------- /UAGithubEngine/UAReachability.h: -------------------------------------------------------------------------------- 1 | // 2 | // UAReachability.h 3 | // ReachTest 4 | // 5 | // Created by Owain Hunt on 10/01/2011. 6 | // Copyright 2011 Owain R Hunt. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | typedef enum { 13 | NotReachable = 0, 14 | Reachable, 15 | } NetworkStatus; 16 | 17 | 18 | @interface UAReachability : NSObject { 19 | SCNetworkReachabilityRef reachabilityRef; 20 | } 21 | 22 | 23 | - (NetworkStatus)networkStatusForFlags:(SCNetworkReachabilityFlags)flags; 24 | - (NetworkStatus)currentReachabilityStatus; 25 | 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /UAGithubEngine/UAReachability.m: -------------------------------------------------------------------------------- 1 | // 2 | // UAReachability.m 3 | // ReachTest 4 | // 5 | // Created by Owain Hunt on 10/01/2011. 6 | // Copyright 2011 Owain R Hunt. All rights reserved. 7 | // 8 | 9 | #import "UAReachability.h" 10 | #import "UAGithubEngineConstants.h" 11 | #import 12 | 13 | @implementation UAReachability 14 | 15 | // http://www.cocoabuilder.com/archive/cocoa/166350-detecting-internet-code-part-1.html#166364 16 | 17 | static void reachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void* info) 18 | { 19 | [[NSNotificationCenter defaultCenter] postNotificationName:UAGithubReachabilityStatusDidChangeNotification object:(__bridge NSDictionary *)info]; 20 | } 21 | 22 | 23 | - (void)dealloc 24 | { 25 | if (reachabilityRef != NULL) 26 | { 27 | CFRelease(reachabilityRef); 28 | } 29 | } 30 | 31 | 32 | - (id)init 33 | { 34 | if ((self = [super init])) 35 | { 36 | reachabilityRef = SCNetworkReachabilityCreateWithName(NULL, [@"www.github.com" UTF8String]); 37 | SCNetworkReachabilityContext context = {0, (__bridge void *)(self), CFRetain, CFRelease, NULL}; 38 | SCNetworkReachabilitySetCallback(reachabilityRef, reachabilityCallback, &context); 39 | SCNetworkReachabilityScheduleWithRunLoop(reachabilityRef, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode); 40 | } 41 | 42 | return self; 43 | } 44 | 45 | 46 | - (NetworkStatus)currentReachabilityStatus 47 | { 48 | SCNetworkReachabilityFlags flags; 49 | return (SCNetworkReachabilityGetFlags(reachabilityRef, &flags) && (flags & kSCNetworkReachabilityFlagsReachable) && !(flags & kSCNetworkReachabilityFlagsConnectionRequired)); 50 | } 51 | 52 | 53 | - (NetworkStatus)networkStatusForFlags:(SCNetworkReachabilityFlags)flags 54 | { 55 | return (flags & kSCNetworkReachabilityFlagsReachable) && !(flags & kSCNetworkReachabilityFlagsConnectionRequired); 56 | } 57 | 58 | 59 | @end 60 | -------------------------------------------------------------------------------- /UAGithubEngine/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | --------------------------------------------------------------------------------