{"action":"created","comment":{"url":"https://api.github.com/repos/CopyIsRight/GoldDigger/pulls/comments/65422008","id":65422008,"diff_hunk":"@@ -0,0 +1,187 @@\n+//\n+//  GDGCondition.m\n+//  GoldDigger\n+//\n+//  Created by Pietro Caselani on 2/8/16.\n+//\n+\n+#import <objc/runtime.h>\n+#import <ObjectiveSugar/ObjectiveSugar.h>\n+#import \"GDGCondition.h\"\n+#import \"GDGCondition_Protected.h\"\n+\n+@implementation GDGCondition\n+\n++ (instancetype)builder\n+{\n+\treturn [[GDGCondition alloc] init];\n+}\n+\n+#pragma mark - Initialization\n+\n+- (instancetype)init\n+{\n+\tif (self = [super init])\n+\t{\n+\t\t_mutableTokens = [NSMutableArray array];\n+\t\t_mutableFields = [NSMutableDictionary dictionary];\n+\t\t_mutableArgs = [NSMutableDictionary dictionary];\n+\t\t_context = nil;\n+\n+\t\t__weak typeof(self) weakSelf = self;\n+\n+\t\t_field = ^GDGCondition *(id <GDGConditionField> field) {\n+\t\t\t[self appendField:field];\n+\n+\t\t\tself.context = field.fullName;\n+\n+\t\t\treturn weakSelf;\n+\t\t};\n+\n+\t\t_equals = ^GDGCondition *(id value) {\n+\t\t\treturn [weakSelf appendValue:value forOperator:@\"=\"];\n+\t\t};\n+\n+\t\t_gt = ^GDGCondition *(id value) {\n+\t\t\treturn [weakSelf appendValue:value forOperator:@\">\"];\n+\t\t};\n+\n+\t\t_gte = ^GDGCondition *(id value) {\n+\t\t\treturn [weakSelf appendValue:value forOperator:@\">=\"];\n+\t\t};\n+\n+\t\t_lt = ^GDGCondition *(id value) {\n+\t\t\treturn [weakSelf appendValue:value forOperator:@\"<\"];\n+\t\t};\n+\n+\t\t_lte = ^GDGCondition *(id value) {\n+\t\t\treturn [weakSelf appendValue:value forOperator:@\"<=\"];\n+\t\t};\n+\n+\t\t_notEquals = ^GDGCondition *(id value) {\n+\t\t\treturn [weakSelf appendValue:value forOperator:@\"<>\"];\n+\t\t};\n+\n+\t\t_build = ^GDGCondition *(void (^builderHandler)(GDGCondition *)) {\n+\t\t\treturn [weakSelf build:builderHandler];\n+\t\t};\n+\n+\t\t_in = ^GDGCondition *(id arg) {\n+\t\t\treturn [weakSelf appendValue:arg forOperator:@\"IN\"];\n+\t\t};\n+\n+\t\t_cat = ^GDGCondition *(GDGCondition *builder) {\n+\t\t\t[weakSelf.mutableArgs addEntriesFromDictionary:builder.mutableArgs];\n+\t\t\t[weakSelf.mutableTokens addObjectsFromArray:builder->_mutableTokens];\n+\t\t\treturn weakSelf;\n+\t\t};\n+\t}\n+\n+\treturn self;\n+}\n+\n+#pragma mark - Build\n+\n+- (GDGCondition *)build:(void (^)(GDGCondition *))builder\n+{\n+\t[_mutableTokens addObject:@\"(\"];\n+\tbuilder(self);\n+\t[_mutableTokens addObject:@\")\"];\n+\treturn self;\n+}\n+\n+- (GDGCondition *)and\n+{\n+\t[_mutableTokens addObject:@\"AND\"];\n+\treturn self;\n+}\n+\n+- (GDGCondition *)or\n+{\n+\t[_mutableTokens addObject:@\"OR\"];\n+\treturn self;\n+}\n+\n+- (GDGCondition *)null\n+{\n+\t[_mutableTokens addObject:@\"NULL\"];\n+\treturn self;\n+}\n+\n+- (GDGCondition *)notNull\n+{\n+\t[_mutableTokens addObject:@\"NOTNULL\"];\n+}\n+\n+- (GDGCondition *)appendValue:(id)value forOperator:(NSString *)operator\n+{\n+\tif (!_context)\n+\t\t@throw [NSException exceptionWithName:@\"Non Existent Context\"\n+\t\t                               reason:@\"[GDGCondition -appendValue:forOperator:] throws that you must provide a context before using an operator\"\n+\t\t                             userInfo:nil];\n+\n+\t[self.mutableTokens addObject:operator];\n+\n+\tif ([value conformsToProtocol:@protocol(GDGConditionField)])\n+\t\t[self appendField:value];\n+\telse\n+\t{\n+\t\tNSString *argName = NSStringWithFormat(@\"ARG_%u\", self.mutableArgs.count);\n+\n+\t\tself.mutableArgs[argName] = value;\n+\n+\t\t[self.mutableTokens addObject:argName];","path":"Pod/Core/GDGCondition.m","position":133,"original_position":133,"commit_id":"1e905c15ff6c7cc284166f61f14786cf7c8ea553","original_commit_id":"1e905c15ff6c7cc284166f61f14786cf7c8ea553","user":{"login":"pietrocaselani","id":862516,"avatar_url":"https://avatars.githubusercontent.com/u/862516?v=3","gravatar_id":"","url":"https://api.github.com/users/pietrocaselani","html_url":"https://github.com/pietrocaselani","followers_url":"https://api.github.com/users/pietrocaselani/followers","following_url":"https://api.github.com/users/pietrocaselani/following{/other_user}","gists_url":"https://api.github.com/users/pietrocaselani/gists{/gist_id}","starred_url":"https://api.github.com/users/pietrocaselani/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pietrocaselani/subscriptions","organizations_url":"https://api.github.com/users/pietrocaselani/orgs","repos_url":"https://api.github.com/users/pietrocaselani/repos","events_url":"https://api.github.com/users/pietrocaselani/events{/privacy}","received_events_url":"https://api.github.com/users/pietrocaselani/received_events","type":"User","site_admin":false},"body":"Why?","created_at":"2016-06-01T18:59:47Z","updated_at":"2016-06-01T18:59:47Z","html_url":"https://github.com/CopyIsRight/GoldDigger/pull/9#discussion_r65422008","pull_request_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/pulls/9","_links":{"self":{"href":"https://api.github.com/repos/CopyIsRight/GoldDigger/pulls/comments/65422008"},"html":{"href":"https://github.com/CopyIsRight/GoldDigger/pull/9#discussion_r65422008"},"pull_request":{"href":"https://api.github.com/repos/CopyIsRight/GoldDigger/pulls/9"}}},"pull_request":{"url":"https://api.github.com/repos/CopyIsRight/GoldDigger/pulls/9","id":72226915,"html_url":"https://github.com/CopyIsRight/GoldDigger/pull/9","diff_url":"https://github.com/CopyIsRight/GoldDigger/pull/9.diff","patch_url":"https://github.com/CopyIsRight/GoldDigger/pull/9.patch","issue_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/issues/9","number":9,"state":"open","locked":false,"title":"Object-Relational Mapping... or not?","user":{"login":"frlwolf","id":862520,"avatar_url":"https://avatars.githubusercontent.com/u/862520?v=3","gravatar_id":"","url":"https://api.github.com/users/frlwolf","html_url":"https://github.com/frlwolf","followers_url":"https://api.github.com/users/frlwolf/followers","following_url":"https://api.github.com/users/frlwolf/following{/other_user}","gists_url":"https://api.github.com/users/frlwolf/gists{/gist_id}","starred_url":"https://api.github.com/users/frlwolf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/frlwolf/subscriptions","organizations_url":"https://api.github.com/users/frlwolf/orgs","repos_url":"https://api.github.com/users/frlwolf/repos","events_url":"https://api.github.com/users/frlwolf/events{/privacy}","received_events_url":"https://api.github.com/users/frlwolf/received_events","type":"User","site_admin":false},"body":"\r\nI'm sorry folks, really my bad.\r\n\r\nI almost do not know how to start. I'll try to maintain the review effort to the minimum but, by now, the s\\*\\*\\* is done, so we have to deal with it.\r\n\r\nWhy?!\r\n--\r\nI know you are probably asking yourself, why? Why?!!\r\n\r\nFirst things first, **Gold Digger** is, originaly, an implementation of ORM (Object-Relation Mapping). It has been designed to map, dynamically, the properties from a object to a database (_sqlite_, important to estabilish) persisted entity. \r\n\r\nBut looking a little bit further, is possible to see that this approach gets very close to other approaches that work on different use cases/scenarios. Like when you need to create a object from a serialized file, or CSV, or JSON.\r\n\r\nOf course, somethings like _property change tracking_ and _relationship handling_ does not apply to most other cases, still, there are some aspects of the structure that could be generalized to, if not directly do, make easiest to map data from external sources to your code objects.\r\n\r\nThat was and is the challenge of making the changes proposed in this pull-request. \r\n\r\nOf course, it may not be the perfect implementation but, as far as I know, this is a _kind of_ unprecedented attempt to creating general rules to a **_mapping to object pattern_**.\r\n\r\nWTF?!\r\n--\r\nIt can seem crazy, but it really is not.\r\n\r\nUsually, when you need to translate your objects to other things and/or other things into your objects, you use or implement a class where all shared implementation will be put, being specified (inherited) later by your project models. \r\n\r\nApart of the neverending discussion of inheritance, this is the most straight-forward method to persist models, in whatever way you see fit.\r\n\r\nEven Core Data use `NSManagedObjects`.\r\n\r\nThen, what has been done here is to provide a general interface, which every model can implement with littel overhead, provides a structure that abstracts what every kind of mapping need and, last but not least, can be easily extended.\r\n\r\nCore\r\n--\r\nThis is the core part  of the lib. \r\n\r\nA set of classes that, by itself, does not have much use. But, by pre-defining a structure, with a little bit of code, can be a powerful yet simple combination in a project architecture.\r\n\r\nAll begins with a `GDGEntity`. The **entity** is the core of every model. Like said before, by itself, it is just a class with almost no use. It defines an `_id` property, because every model should be identified; a `+entity` to help those who think that _autorelease_ is a thing of the past; `+add(...)Handler:forProperty` methods to dynamically do something _on set_ and/or _on get_; And finally an `-isEqualToEntity:` conveniently.\r\n\r\nFollowing closely we have the `GDGEntityMap` class. This class is mostly useless to. What matters though is it's interface. An entity map should, by this definition, be something that will map always from entity properties to something else. And, additionaly, have `NSValueTransformers` to say how mapped stuff fit back in the entity.\r\n\r\nThe _to_ in the _from <-> to_ of the map is a protocol `GDGSource`.\r\n\r\nThese are the basics. \r\n\r\nThe other classes defined in the **core** are the first attempt to abstract the behavior of the original **Gold Digger** to a more general context.\r\n\r\nSQL(ite)\r\n--\r\nHere is where the structure is put to the test.\r\n\r\nBefore, there where a `GDGEntity`, `GDGEntityManagerSettings`, `GDGEntityQuery` and a `GDGEntityManager` to rule them all.\r\n\r\nStill, if we go for the inheritance way, makes no sense have another class (that not the `GDGEntity`) to _\"manage\"_ the entity behaviors. I've drop then [the one ring](https://en.wikipedia.org/wiki/One_Ring).\r\n\r\nYes, if you want to expand the behavior of the **Gold Digger** core, you should always implement the entity logic in the `GDGEntity`. It does make sense, doesn't it?\r\n\r\nOther things have been revised to make more sense as well. An example is the `SQLTableSource` that now have an improved responsability of execute all table related operations, and is the one that have a direct relationship with the database. This have allowed the lib, through the `GDGDatabaseProvider` protocol, to drop the `static` reference to the database.  \\o/\r\n\r\n`SQLQuery` visit implementation become much more complex, evaluating the `**where**` `GDGCondition`, the `SQLJoin` and the `SQLJoin` `GDGCondition`, but still returning only raw and unmapped data. `SQLEntityQuery` is the one that should be used when you work only querying with entity properties and materialized objects.\r\n\r\n`SQLEntityMap` add a few convenience methods to map relations and to recover mapped values.\r\n\r\nAnd the relations implementations are nearly the same, but with probably a little less code.\r\n\r\n\"That's all folks!\"  or \"Is that all folks?!\"\r\n--\r\nSo, a lot of work still ahead of us to sharpenning the edges of the code. \r\n\r\nStill, I see this as a big step to a more flexible and powerful architecture, that more then just ORM, will make dreams come true in the world of data models.","created_at":"2016-06-01T18:12:14Z","updated_at":"2016-06-01T18:59:47Z","closed_at":null,"merged_at":null,"merge_commit_sha":"5568000aeec7d22cca388fd9957e24a1b8092fce","assignee":{"login":"pietrocaselani","id":862516,"avatar_url":"https://avatars.githubusercontent.com/u/862516?v=3","gravatar_id":"","url":"https://api.github.com/users/pietrocaselani","html_url":"https://github.com/pietrocaselani","followers_url":"https://api.github.com/users/pietrocaselani/followers","following_url":"https://api.github.com/users/pietrocaselani/following{/other_user}","gists_url":"https://api.github.com/users/pietrocaselani/gists{/gist_id}","starred_url":"https://api.github.com/users/pietrocaselani/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pietrocaselani/subscriptions","organizations_url":"https://api.github.com/users/pietrocaselani/orgs","repos_url":"https://api.github.com/users/pietrocaselani/repos","events_url":"https://api.github.com/users/pietrocaselani/events{/privacy}","received_events_url":"https://api.github.com/users/pietrocaselani/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/pulls/9/commits","review_comments_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/pulls/9/comments","review_comment_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/pulls/comments{/number}","comments_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/issues/9/comments","statuses_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/statuses/1e905c15ff6c7cc284166f61f14786cf7c8ea553","head":{"label":"CopyIsRight:mapper","ref":"mapper","sha":"1e905c15ff6c7cc284166f61f14786cf7c8ea553","user":{"login":"CopyIsRight","id":17409354,"avatar_url":"https://avatars.githubusercontent.com/u/17409354?v=3","gravatar_id":"","url":"https://api.github.com/users/CopyIsRight","html_url":"https://github.com/CopyIsRight","followers_url":"https://api.github.com/users/CopyIsRight/followers","following_url":"https://api.github.com/users/CopyIsRight/following{/other_user}","gists_url":"https://api.github.com/users/CopyIsRight/gists{/gist_id}","starred_url":"https://api.github.com/users/CopyIsRight/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CopyIsRight/subscriptions","organizations_url":"https://api.github.com/users/CopyIsRight/orgs","repos_url":"https://api.github.com/users/CopyIsRight/repos","events_url":"https://api.github.com/users/CopyIsRight/events{/privacy}","received_events_url":"https://api.github.com/users/CopyIsRight/received_events","type":"Organization","site_admin":false},"repo":{"id":52279309,"name":"GoldDigger","full_name":"CopyIsRight/GoldDigger","owner":{"login":"CopyIsRight","id":17409354,"avatar_url":"https://avatars.githubusercontent.com/u/17409354?v=3","gravatar_id":"","url":"https://api.github.com/users/CopyIsRight","html_url":"https://github.com/CopyIsRight","followers_url":"https://api.github.com/users/CopyIsRight/followers","following_url":"https://api.github.com/users/CopyIsRight/following{/other_user}","gists_url":"https://api.github.com/users/CopyIsRight/gists{/gist_id}","starred_url":"https://api.github.com/users/CopyIsRight/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CopyIsRight/subscriptions","organizations_url":"https://api.github.com/users/CopyIsRight/orgs","repos_url":"https://api.github.com/users/CopyIsRight/repos","events_url":"https://api.github.com/users/CopyIsRight/events{/privacy}","received_events_url":"https://api.github.com/users/CopyIsRight/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/CopyIsRight/GoldDigger","description":"Simple ORM for Objective-C","fork":false,"url":"https://api.github.com/repos/CopyIsRight/GoldDigger","forks_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/forks","keys_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/keys{/key_id}","collaborators_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/teams","hooks_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/hooks","issue_events_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/issues/events{/number}","events_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/events","assignees_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/assignees{/user}","branches_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/branches{/branch}","tags_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/tags","blobs_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/git/refs{/sha}","trees_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/git/trees{/sha}","statuses_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/statuses/{sha}","languages_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/languages","stargazers_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/stargazers","contributors_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/contributors","subscribers_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/subscribers","subscription_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/subscription","commits_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/commits{/sha}","git_commits_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/git/commits{/sha}","comments_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/comments{/number}","issue_comment_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/issues/comments{/number}","contents_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/contents/{+path}","compare_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/compare/{base}...{head}","merges_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/merges","archive_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/downloads","issues_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/issues{/number}","pulls_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/pulls{/number}","milestones_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/milestones{/number}","notifications_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/labels{/name}","releases_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/releases{/id}","deployments_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/deployments","created_at":"2016-02-22T14:32:15Z","updated_at":"2016-05-18T16:13:45Z","pushed_at":"2016-06-01T18:20:55Z","git_url":"git://github.com/CopyIsRight/GoldDigger.git","ssh_url":"git@github.com:CopyIsRight/GoldDigger.git","clone_url":"https://github.com/CopyIsRight/GoldDigger.git","svn_url":"https://github.com/CopyIsRight/GoldDigger","homepage":"","size":109,"stargazers_count":2,"watchers_count":2,"language":"Objective-C","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":2,"forks":0,"open_issues":2,"watchers":2,"default_branch":"master"}},"base":{"label":"CopyIsRight:master","ref":"master","sha":"fa4da8d36c3137856be517b7b9d2963fcd186d30","user":{"login":"CopyIsRight","id":17409354,"avatar_url":"https://avatars.githubusercontent.com/u/17409354?v=3","gravatar_id":"","url":"https://api.github.com/users/CopyIsRight","html_url":"https://github.com/CopyIsRight","followers_url":"https://api.github.com/users/CopyIsRight/followers","following_url":"https://api.github.com/users/CopyIsRight/following{/other_user}","gists_url":"https://api.github.com/users/CopyIsRight/gists{/gist_id}","starred_url":"https://api.github.com/users/CopyIsRight/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CopyIsRight/subscriptions","organizations_url":"https://api.github.com/users/CopyIsRight/orgs","repos_url":"https://api.github.com/users/CopyIsRight/repos","events_url":"https://api.github.com/users/CopyIsRight/events{/privacy}","received_events_url":"https://api.github.com/users/CopyIsRight/received_events","type":"Organization","site_admin":false},"repo":{"id":52279309,"name":"GoldDigger","full_name":"CopyIsRight/GoldDigger","owner":{"login":"CopyIsRight","id":17409354,"avatar_url":"https://avatars.githubusercontent.com/u/17409354?v=3","gravatar_id":"","url":"https://api.github.com/users/CopyIsRight","html_url":"https://github.com/CopyIsRight","followers_url":"https://api.github.com/users/CopyIsRight/followers","following_url":"https://api.github.com/users/CopyIsRight/following{/other_user}","gists_url":"https://api.github.com/users/CopyIsRight/gists{/gist_id}","starred_url":"https://api.github.com/users/CopyIsRight/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CopyIsRight/subscriptions","organizations_url":"https://api.github.com/users/CopyIsRight/orgs","repos_url":"https://api.github.com/users/CopyIsRight/repos","events_url":"https://api.github.com/users/CopyIsRight/events{/privacy}","received_events_url":"https://api.github.com/users/CopyIsRight/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/CopyIsRight/GoldDigger","description":"Simple ORM for Objective-C","fork":false,"url":"https://api.github.com/repos/CopyIsRight/GoldDigger","forks_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/forks","keys_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/keys{/key_id}","collaborators_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/teams","hooks_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/hooks","issue_events_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/issues/events{/number}","events_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/events","assignees_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/assignees{/user}","branches_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/branches{/branch}","tags_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/tags","blobs_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/git/refs{/sha}","trees_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/git/trees{/sha}","statuses_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/statuses/{sha}","languages_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/languages","stargazers_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/stargazers","contributors_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/contributors","subscribers_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/subscribers","subscription_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/subscription","commits_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/commits{/sha}","git_commits_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/git/commits{/sha}","comments_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/comments{/number}","issue_comment_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/issues/comments{/number}","contents_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/contents/{+path}","compare_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/compare/{base}...{head}","merges_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/merges","archive_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/downloads","issues_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/issues{/number}","pulls_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/pulls{/number}","milestones_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/milestones{/number}","notifications_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/labels{/name}","releases_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/releases{/id}","deployments_url":"https://api.github.com/repos/CopyIsRight/GoldDigger/deployments","created_at":"2016-02-22T14:32:15Z","updated_at":"2016-05-18T16:13:45Z","pushed_at":"2016-06-01T18:20:55Z","git_url":"git://github.com/CopyIsRight/GoldDigger.git","ssh_url":"git@github.com:CopyIsRight/GoldDigger.git","clone_url":"https://github.com/CopyIsRight/GoldDigger.git","svn_url":"https://github.com/CopyIsRight/GoldDigger","homepage":"","size":109,"stargazers_count":2,"watchers_count":2,"language":"Objective-C","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":2,"forks":0,"open_issues":2,"watchers":2,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/CopyIsRight/GoldDigger/pulls/9"},"html":{"href":"https://github.com/CopyIsRight/GoldDigger/pull/9"},"issue":{"href":"https://api.github.com/repos/CopyIsRight/GoldDigger/issues/9"},"comments":{"href":"https://api.github.com/repos/CopyIsRight/GoldDigger/issues/9/comments"},"review_comments":{"href":"https://api.github.com/repos/CopyIsRight/GoldDigger/pulls/9/comments"},"review_comment":{"href":"https://api.github.com/repos/CopyIsRight/GoldDigger/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/CopyIsRight/GoldDigger/pulls/9/commits"},"statuses":{"href":"https://api.github.com/repos/CopyIsRight/GoldDigger/statuses/1e905c15ff6c7cc284166f61f14786cf7c8ea553"}}}}
{"actor":{"display_login":"pietrocaselani"}}