{"action":"created","comment":{"url":"https://api.github.com/repos/sharewave/frontus/pulls/comments/23723997","id":23723997,"diff_hunk":"@@ -0,0 +1,817 @@\n+'use strict';\n+\n+var service = angular.module('commonServices');\n+\n+var deletable = null;\n+\n+service.factory('Person', [\"$window\", \"SWBrijj\", \"$log\", \"$q\", \"geo\", function($window, SWBrijj, $log, $q, geo) {\n+    var Person = function() {\n+        this.user_id = \"\";\n+        this.name = \"\";\n+        this.groups = [];\n+        this.roles = [];\n+        this.emails = [];\n+        this.last_login = null;\n+        this.hasEmail = false;\n+        this.hasAddress = false;\n+        this.access = \"\";\n+        this.selected = false;\n+    };\n+    Person.prototype = {\n+        profileImageURL: function() {\n+            return \"/photo/user?id=\" + $window.encodeURIComponent(this.user_id);\n+        },\n+        changeRole: function(newRole) {\n+            var t = this;\n+            var p = $q.defer();\n+            SWBrijj.procm(\"account.change_person_role\", this.user_id, newRole).then(function(roles) {\n+                t.roles = JSON.parse(roles[0].change_person_role);\n+                p.resolve(t.roles);\n+            }).except(function(err) {\n+                    $log.log(err);\n+                    p.reject();\n+                });\n+            return p.promise;\n+        },\n+        addGroup: function(newGroup) {\n+            if (newGroup  &&  this.groups.indexOf(newGroup) === -1) {\n+                this.groups.push(newGroup);\n+                this.updateGroups();\n+            }\n+        },\n+        isDeletable: function() {\n+            var p = $q.defer();\n+            if (deletable == null) {\n+                var t = this;\n+                SWBrijj.tblm('account.company_deletable').then(function(del) {\n+                    console.log(del);\n+                    deletable = {};\n+                    del.forEach(function(user) {\n+                        deletable[user.user_id] = true;\n+                    });\n+                    p.resolve(deletable[t.user_id] == true);\n+                });\n+                return p.promise;\n+            }\n+            p.resolve(deletable[t.user_id] == true);\n+            return p.promise;\n+        },\n+        deletePerson: function() {\n+            return SWBrijj.procm('account.delete_user', this.user_id);\n+        },\n+        removeGroup: function(group) {\n+            var i = this.groups.indexOf(group);\n+            this.groups.splice(i, 1);\n+            this.updateGroups();\n+        },\n+        updateGroups: function() {\n+            SWBrijj.procm(\"account.update_groups\", this.user_id, JSON.stringify(this.groups)).then(function(x) {\n+                $log.log(x);\n+            });\n+        },\n+        fetchAddresses: function() {\n+            var t = this;\n+            var p = $q.defer();\n+            SWBrijj.tblmm('account.people_address', ['id', 'label', 'street', 'city', 'state', 'country', 'postalcode'], 'user_id', t.user_id).then(function(x) {\n+                if (x[0]) {\n+                    t.addresses = [];\n+                    x.forEach(function(address, i){\n+                        address.region = (address.state) ? address.state : ( (address.country) ? address.country : null);\n+\n+                        // Default blank labels to 'Work'\n+                        if (address.label === null) { address.label = 'Work'; };\n+\n+                        // Expand country ISO into ex. {iso: US, name: 'United States of America'} for front end\n+                        address.country = geo.expandCountry(address.country);\n+                        t.addresses.push(address);\n+                        if (t.hasAddress === false) {\n+                            t.hasAddress = (address && address.street && address.city && address.region && address.postalcode) ? true : false;\n+                        }\n+                    });\n+                } else {\n+                    t.addAddress();\n+                }\n+                p.resolve();\n+            }).except(function(err) {\n+                $log.log(err);\n+                p.reject();\n+            });\n+            return p.promise;\n+    },\n+        addAddress: function() {\n+            if (this.addresses) {\n+                var lastAddress = this.addresses[this.addresses.length-1];\n+                var lastAddressEmpty = null;\n+\n+                Object.keys(lastAddress).forEach(function(key) {\n+                    if (lastAddressEmpty != false) {\n+                        lastAddressEmpty = (key !== '$$hashKey' && key !== 'id' && lastAddress[key] !== null) ? false : true;\n+                    }\n+                });\n+                if (lastAddressEmpty === false) {\n+                    this.addresses.push({\n+                        isNew: true\n+                    });\n+                }\n+            } else {\n+                this.addresses = [{\n+                    isNew: true\n+                }];\n+            }\n+        },\n+        deleteAddress: function(address) {\n+            var t = this;\n+            SWBrijj.delete_one('account.people_address', {id: address.id}).then(function(res) {\n+\n+                var ix = t.addresses.indexOf(address);\n+                t.addresses.splice(ix, 1);\n+\n+            }).except(function(err) {\n+                $log.log(err);\n+            });\n+\n+        },\n+        updateAddresses: function() {\n+            var t = this;\n+\n+            t.addresses.forEach(function(address, i) {\n+\n+                // angular.copy cleans out angular keys\n+                address = angular.copy(address);\n+                address.user_id = t.user_id;\n+\n+                // Compress front end country object into ISO code.\n+                var country = (address.country !== null) ? address.country.iso : '';\n+                address.country = country;\n+\n+                delete address.region;\n+                delete address.isNew;\n+\n+                // Update existing address\n+                if (address.id) {\n+                    var p = $q.defer();\n+                    SWBrijj.update('account.people_address',\n+                        address, {id: address.id}\n+                    ).then(function(res) {\n+                        p.resolve();\n+                    }).except(function(err) {\n+                        $log.log(err);\n+                        p.reject();\n+                    });\n+                    return p.promise;\n+\n+                // For new address generated by front end\n+                } else {\n+                    var p = $q.defer();\n+                    SWBrijj.insert('account.people_address',\n+                        address\n+                    ).then(function(res) {\n+                        p.resolve();\n+                    }).except(function(err) {\n+                        $log.log(err);\n+                        p.reject();\n+                    });\n+                    return p.promise;\n+                }\n+\n+            });\n+\n+        },\n+        fetchEmails: function(userIsSelf) {\n+            var t = this;\n+            var primaryEmail;\n+            var verifiedEmails = [];\n+            var complex;\n+            userIsSelf = (typeof(userIsSelf)==='undefined') ? false : userIsSelf;\n+\n+            t.emails = [];\n+\n+            var simpleFetchEmails = function() {\n+                var p = $q.defer();\n+                SWBrijj.tblmm('account.people_emails', ['email'], 'user_id', t.user_id).then(function(emails) {\n+                    emails.forEach(function(email){\n+                        email.oldEmail = email.email;\n+                        if (complex === true) {\n+                            email.primary = (email.email === primaryEmail) ? true : false;\n+                            email.verified = (verifiedEmails.indexOf(email.email) > -1) ? true : false;\n+                        }\n+                        (t.emails = t.emails || []).push(email);\n+                        // Sort primary email first\n+                        t.emails.sort(function(a, b) {\n+                            return (a.primary === b.primary)? 0 : a.primary? -1 : 1;\n+                        });\n+                    });\n+                });\n+                p.resolve();\n+            };\n+\n+            var complexFetchEmails = function() {\n+                var p = $q.defer();\n+                // Fetch primary email\n+                SWBrijj.tblm('account.profile').then(function(profile) {\n+                    primaryEmail = profile[0].primary_email;\n+                    // Fetch email verification status\n+                    SWBrijj.tblm('account.my_emails').then(function(emails) {\n+                        emails.forEach(function(email){\n+                            if (email.verified !== null) {\n+                                verifiedEmails.push(email.email);\n+                            }\n+                        });\n+                        simpleFetchEmails();\n+                    });\n+                });\n+                p.resolve();\n+            };\n+\n+            if (userIsSelf === true) {\n+                // Fetch primary and verification status\n+                complex = true;\n+                complexFetchEmails();\n+            } else {\n+                // Just fetch emails\n+                complex = false;\n+                simpleFetchEmails();\n+            }\n+\n+        },\n+        addEmail: function(email) {\n+\n+            var newEmail;\n+            $log.log('addEmail('+email+')');\n+\n+            // Default blank email if none provided\n+            if(typeof(email)==='undefined') {\n+                newEmail = {\n+                    isNew: true\n+                };\n+            } else if (email) {\n+                newEmail = {\n+                    email: email,\n+                    isNew: true\n+                }\n+            }\n+\n+            if (this.emails) {\n+                var lastEmail = this.emails[this.emails.length-1];\n+                var lastEmailEmpty = null;\n+\n+                Object.keys(lastEmail).forEach(function(key) {\n+                    if (lastEmailEmpty != false) {\n+                        lastEmailEmpty = (key !== '$$hashKey' && key !== 'id' && lastEmail[key] !== null) ? false : true;\n+                    }\n+                });\n+                if (lastEmailEmpty === false) {\n+                    this.emails.push(newEmail);\n+                }\n+            } else {\n+                this.emails = [newEmail];\n+            }\n+        },\n+        deleteEmail: function(email) {\n+\n+            $log.log('deleting emails currenly disabled');","path":"cmn/people.js","position":272,"original_position":272,"commit_id":"27bfb0a54b3ead2fb362aab41b0811251cf58a89","original_commit_id":"27bfb0a54b3ead2fb362aab41b0811251cf58a89","user":{"login":"BertHartm","id":508811,"avatar_url":"https://avatars.githubusercontent.com/u/508811?v=3","gravatar_id":"","url":"https://api.github.com/users/BertHartm","html_url":"https://github.com/BertHartm","followers_url":"https://api.github.com/users/BertHartm/followers","following_url":"https://api.github.com/users/BertHartm/following{/other_user}","gists_url":"https://api.github.com/users/BertHartm/gists{/gist_id}","starred_url":"https://api.github.com/users/BertHartm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BertHartm/subscriptions","organizations_url":"https://api.github.com/users/BertHartm/orgs","repos_url":"https://api.github.com/users/BertHartm/repos","events_url":"https://api.github.com/users/BertHartm/events{/privacy}","received_events_url":"https://api.github.com/users/BertHartm/received_events","type":"User","site_admin":false},"body":"should be $log.error or not exist? also, typo","created_at":"2015-01-28T21:12:01Z","updated_at":"2015-01-28T21:12:01Z","html_url":"https://github.com/sharewave/frontus/pull/1308#discussion_r23723997","pull_request_url":"https://api.github.com/repos/sharewave/frontus/pulls/1308","_links":{"self":{"href":"https://api.github.com/repos/sharewave/frontus/pulls/comments/23723997"},"html":{"href":"https://github.com/sharewave/frontus/pull/1308#discussion_r23723997"},"pull_request":{"href":"https://api.github.com/repos/sharewave/frontus/pulls/1308"}}},"pull_request":{"url":"https://api.github.com/repos/sharewave/frontus/pulls/1308","id":26524574,"html_url":"https://github.com/sharewave/frontus/pull/1308","diff_url":"https://github.com/sharewave/frontus/pull/1308.diff","patch_url":"https://github.com/sharewave/frontus/pull/1308.patch","issue_url":"https://api.github.com/repos/sharewave/frontus/issues/1308","number":1308,"state":"open","locked":false,"title":"People overhaul","user":{"login":"BertHartm","id":508811,"avatar_url":"https://avatars.githubusercontent.com/u/508811?v=3","gravatar_id":"","url":"https://api.github.com/users/BertHartm","html_url":"https://github.com/BertHartm","followers_url":"https://api.github.com/users/BertHartm/followers","following_url":"https://api.github.com/users/BertHartm/following{/other_user}","gists_url":"https://api.github.com/users/BertHartm/gists{/gist_id}","starred_url":"https://api.github.com/users/BertHartm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BertHartm/subscriptions","organizations_url":"https://api.github.com/users/BertHartm/orgs","repos_url":"https://api.github.com/users/BertHartm/repos","events_url":"https://api.github.com/users/BertHartm/events{/privacy}","received_events_url":"https://api.github.com/users/BertHartm/received_events","type":"User","site_admin":false},"body":"not ready yet, but here for so I can track the diff.","created_at":"2014-12-23T18:22:00Z","updated_at":"2015-01-28T21:12:01Z","closed_at":null,"merged_at":null,"merge_commit_sha":"4d0b44ae625ae7ecbc6001dee147c4fa6229d676","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/sharewave/frontus/pulls/1308/commits","review_comments_url":"https://api.github.com/repos/sharewave/frontus/pulls/1308/comments","review_comment_url":"https://api.github.com/repos/sharewave/frontus/pulls/comments/{number}","comments_url":"https://api.github.com/repos/sharewave/frontus/issues/1308/comments","statuses_url":"https://api.github.com/repos/sharewave/frontus/statuses/27bfb0a54b3ead2fb362aab41b0811251cf58a89","head":{"label":"sharewave:people_overhaul","ref":"people_overhaul","sha":"27bfb0a54b3ead2fb362aab41b0811251cf58a89","user":{"login":"sharewave","id":3681577,"avatar_url":"https://avatars.githubusercontent.com/u/3681577?v=3","gravatar_id":"","url":"https://api.github.com/users/sharewave","html_url":"https://github.com/sharewave","followers_url":"https://api.github.com/users/sharewave/followers","following_url":"https://api.github.com/users/sharewave/following{/other_user}","gists_url":"https://api.github.com/users/sharewave/gists{/gist_id}","starred_url":"https://api.github.com/users/sharewave/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sharewave/subscriptions","organizations_url":"https://api.github.com/users/sharewave/orgs","repos_url":"https://api.github.com/users/sharewave/repos","events_url":"https://api.github.com/users/sharewave/events{/privacy}","received_events_url":"https://api.github.com/users/sharewave/received_events","type":"Organization","site_admin":false},"repo":{"id":7332921,"name":"frontus","full_name":"sharewave/frontus","owner":{"login":"sharewave","id":3681577,"avatar_url":"https://avatars.githubusercontent.com/u/3681577?v=3","gravatar_id":"","url":"https://api.github.com/users/sharewave","html_url":"https://github.com/sharewave","followers_url":"https://api.github.com/users/sharewave/followers","following_url":"https://api.github.com/users/sharewave/following{/other_user}","gists_url":"https://api.github.com/users/sharewave/gists{/gist_id}","starred_url":"https://api.github.com/users/sharewave/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sharewave/subscriptions","organizations_url":"https://api.github.com/users/sharewave/orgs","repos_url":"https://api.github.com/users/sharewave/repos","events_url":"https://api.github.com/users/sharewave/events{/privacy}","received_events_url":"https://api.github.com/users/sharewave/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/sharewave/frontus","description":"Sharewave.com website","fork":false,"url":"https://api.github.com/repos/sharewave/frontus","forks_url":"https://api.github.com/repos/sharewave/frontus/forks","keys_url":"https://api.github.com/repos/sharewave/frontus/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sharewave/frontus/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sharewave/frontus/teams","hooks_url":"https://api.github.com/repos/sharewave/frontus/hooks","issue_events_url":"https://api.github.com/repos/sharewave/frontus/issues/events{/number}","events_url":"https://api.github.com/repos/sharewave/frontus/events","assignees_url":"https://api.github.com/repos/sharewave/frontus/assignees{/user}","branches_url":"https://api.github.com/repos/sharewave/frontus/branches{/branch}","tags_url":"https://api.github.com/repos/sharewave/frontus/tags","blobs_url":"https://api.github.com/repos/sharewave/frontus/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sharewave/frontus/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sharewave/frontus/git/refs{/sha}","trees_url":"https://api.github.com/repos/sharewave/frontus/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sharewave/frontus/statuses/{sha}","languages_url":"https://api.github.com/repos/sharewave/frontus/languages","stargazers_url":"https://api.github.com/repos/sharewave/frontus/stargazers","contributors_url":"https://api.github.com/repos/sharewave/frontus/contributors","subscribers_url":"https://api.github.com/repos/sharewave/frontus/subscribers","subscription_url":"https://api.github.com/repos/sharewave/frontus/subscription","commits_url":"https://api.github.com/repos/sharewave/frontus/commits{/sha}","git_commits_url":"https://api.github.com/repos/sharewave/frontus/git/commits{/sha}","comments_url":"https://api.github.com/repos/sharewave/frontus/comments{/number}","issue_comment_url":"https://api.github.com/repos/sharewave/frontus/issues/comments/{number}","contents_url":"https://api.github.com/repos/sharewave/frontus/contents/{+path}","compare_url":"https://api.github.com/repos/sharewave/frontus/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sharewave/frontus/merges","archive_url":"https://api.github.com/repos/sharewave/frontus/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sharewave/frontus/downloads","issues_url":"https://api.github.com/repos/sharewave/frontus/issues{/number}","pulls_url":"https://api.github.com/repos/sharewave/frontus/pulls{/number}","milestones_url":"https://api.github.com/repos/sharewave/frontus/milestones{/number}","notifications_url":"https://api.github.com/repos/sharewave/frontus/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sharewave/frontus/labels{/name}","releases_url":"https://api.github.com/repos/sharewave/frontus/releases{/id}","created_at":"2012-12-26T22:44:53Z","updated_at":"2015-01-28T20:35:15Z","pushed_at":"2015-01-28T21:08:59Z","git_url":"git://github.com/sharewave/frontus.git","ssh_url":"git@github.com:sharewave/frontus.git","clone_url":"https://github.com/sharewave/frontus.git","svn_url":"https://github.com/sharewave/frontus","homepage":"","size":110392,"stargazers_count":4,"watchers_count":4,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"open_issues_count":348,"forks":2,"open_issues":348,"watchers":4,"default_branch":"master"}},"base":{"label":"sharewave:master","ref":"master","sha":"7e1aac3920d1cff35ede1d3cedfc877d3819f1eb","user":{"login":"sharewave","id":3681577,"avatar_url":"https://avatars.githubusercontent.com/u/3681577?v=3","gravatar_id":"","url":"https://api.github.com/users/sharewave","html_url":"https://github.com/sharewave","followers_url":"https://api.github.com/users/sharewave/followers","following_url":"https://api.github.com/users/sharewave/following{/other_user}","gists_url":"https://api.github.com/users/sharewave/gists{/gist_id}","starred_url":"https://api.github.com/users/sharewave/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sharewave/subscriptions","organizations_url":"https://api.github.com/users/sharewave/orgs","repos_url":"https://api.github.com/users/sharewave/repos","events_url":"https://api.github.com/users/sharewave/events{/privacy}","received_events_url":"https://api.github.com/users/sharewave/received_events","type":"Organization","site_admin":false},"repo":{"id":7332921,"name":"frontus","full_name":"sharewave/frontus","owner":{"login":"sharewave","id":3681577,"avatar_url":"https://avatars.githubusercontent.com/u/3681577?v=3","gravatar_id":"","url":"https://api.github.com/users/sharewave","html_url":"https://github.com/sharewave","followers_url":"https://api.github.com/users/sharewave/followers","following_url":"https://api.github.com/users/sharewave/following{/other_user}","gists_url":"https://api.github.com/users/sharewave/gists{/gist_id}","starred_url":"https://api.github.com/users/sharewave/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sharewave/subscriptions","organizations_url":"https://api.github.com/users/sharewave/orgs","repos_url":"https://api.github.com/users/sharewave/repos","events_url":"https://api.github.com/users/sharewave/events{/privacy}","received_events_url":"https://api.github.com/users/sharewave/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/sharewave/frontus","description":"Sharewave.com website","fork":false,"url":"https://api.github.com/repos/sharewave/frontus","forks_url":"https://api.github.com/repos/sharewave/frontus/forks","keys_url":"https://api.github.com/repos/sharewave/frontus/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sharewave/frontus/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sharewave/frontus/teams","hooks_url":"https://api.github.com/repos/sharewave/frontus/hooks","issue_events_url":"https://api.github.com/repos/sharewave/frontus/issues/events{/number}","events_url":"https://api.github.com/repos/sharewave/frontus/events","assignees_url":"https://api.github.com/repos/sharewave/frontus/assignees{/user}","branches_url":"https://api.github.com/repos/sharewave/frontus/branches{/branch}","tags_url":"https://api.github.com/repos/sharewave/frontus/tags","blobs_url":"https://api.github.com/repos/sharewave/frontus/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sharewave/frontus/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sharewave/frontus/git/refs{/sha}","trees_url":"https://api.github.com/repos/sharewave/frontus/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sharewave/frontus/statuses/{sha}","languages_url":"https://api.github.com/repos/sharewave/frontus/languages","stargazers_url":"https://api.github.com/repos/sharewave/frontus/stargazers","contributors_url":"https://api.github.com/repos/sharewave/frontus/contributors","subscribers_url":"https://api.github.com/repos/sharewave/frontus/subscribers","subscription_url":"https://api.github.com/repos/sharewave/frontus/subscription","commits_url":"https://api.github.com/repos/sharewave/frontus/commits{/sha}","git_commits_url":"https://api.github.com/repos/sharewave/frontus/git/commits{/sha}","comments_url":"https://api.github.com/repos/sharewave/frontus/comments{/number}","issue_comment_url":"https://api.github.com/repos/sharewave/frontus/issues/comments/{number}","contents_url":"https://api.github.com/repos/sharewave/frontus/contents/{+path}","compare_url":"https://api.github.com/repos/sharewave/frontus/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sharewave/frontus/merges","archive_url":"https://api.github.com/repos/sharewave/frontus/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sharewave/frontus/downloads","issues_url":"https://api.github.com/repos/sharewave/frontus/issues{/number}","pulls_url":"https://api.github.com/repos/sharewave/frontus/pulls{/number}","milestones_url":"https://api.github.com/repos/sharewave/frontus/milestones{/number}","notifications_url":"https://api.github.com/repos/sharewave/frontus/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sharewave/frontus/labels{/name}","releases_url":"https://api.github.com/repos/sharewave/frontus/releases{/id}","created_at":"2012-12-26T22:44:53Z","updated_at":"2015-01-28T20:35:15Z","pushed_at":"2015-01-28T21:08:59Z","git_url":"git://github.com/sharewave/frontus.git","ssh_url":"git@github.com:sharewave/frontus.git","clone_url":"https://github.com/sharewave/frontus.git","svn_url":"https://github.com/sharewave/frontus","homepage":"","size":110392,"stargazers_count":4,"watchers_count":4,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"open_issues_count":348,"forks":2,"open_issues":348,"watchers":4,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/sharewave/frontus/pulls/1308"},"html":{"href":"https://github.com/sharewave/frontus/pull/1308"},"issue":{"href":"https://api.github.com/repos/sharewave/frontus/issues/1308"},"comments":{"href":"https://api.github.com/repos/sharewave/frontus/issues/1308/comments"},"review_comments":{"href":"https://api.github.com/repos/sharewave/frontus/pulls/1308/comments"},"review_comment":{"href":"https://api.github.com/repos/sharewave/frontus/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/sharewave/frontus/pulls/1308/commits"},"statuses":{"href":"https://api.github.com/repos/sharewave/frontus/statuses/27bfb0a54b3ead2fb362aab41b0811251cf58a89"}}}}