{"action":"created","comment":{"url":"https://api.github.com/repos/ravenjohn/cuddle/pulls/comments/28485279","id":28485279,"diff_hunk":"@@ -118,255 +121,325 @@ var https = require('https'),\n             return this;\n         };\n \n-        this.args = function() {\n+        this.args = function () {\n             this.additional_arguments = arguments;\n             return this;\n         };\n \n-        this.set_before_json = function(fn) {\n+        this.set_before_json = function (fn) {\n             this.before_json = fn;\n             return this;\n         };\n \n-        this.follow_redirects = function(max_redirects) {\n-            this.max_redirects = +max_redirects || 3;\n-            this.follow = true;\n+        << << << < HEAD\n+        this.set_encoding = function (encoding) {\n+            this.encoding = encoding;\n             return this;\n         };\n \n-        this.stringify = stringify;\n+        this.follow_redirects = function (max_redirects) { === === =\n+                this.follow_redirects = function (max_redirects) { >>> >>> > d9794801436738f6bd2bcefd7bdd5820610b4e87\n+                    this.max_redirects = +max_redirects || 3;\n+                    this.follow = true;\n+                    return this;\n+                };\n+\n+                this.stringify = stringify;\n+\n+                this.retry = function () {\n+                    this.retries++;\n+                    if (this.retries > this.max_retry) {\n+                        logger.log('error', 'Reached max retries');\n+                        this.cb({\n+                                message: 'Reached max retries',\n+                                url: this.host + ':' + this.port + this.path\n+                            },\n+                            null,\n+                            this,\n+                            this.additional_arguments\n+                        );\n+                        return this;\n+                    }\n+                    logger.log('warn', 'Retrying request');\n+                    return this.send(this.data);\n+                };\n \n-        this.retry = function() {\n-            this.retries++;\n-            if (this.retries > this.max_retry) {\n-                logger.log('error', 'Reached max retries');\n-                this.cb({\n-                        message: 'Reached max retries',\n-                        url: this.host + ':' + this.port + this.path\n-                    },\n-                    null,\n-                    this,\n-                    this.additional_arguments\n-                );\n-                return this;\n-            }\n-            logger.log('warn', 'Retrying request');\n-            return this.send(this.data);\n-        };\n+                << << << < HEAD\n+                this.pipe = function (stream) {\n+                    logger.log('verbose', 'Piping file..');\n+                    this._stream = stream;\n+                    return this;\n+                };\n \n-        this.send = function(data) {\n-            var new_path = this.path,\n-                self = this,\n-                protocol,\n-                payload,\n-                req;\n-\n-            this.started = true;\n-            this.data = data;\n-\n-            if (data && this.method === 'GET') {\n-                new_path += '?' + this.stringify(data);\n-            } else {\n-                if (!this.headers['Content-Type']) {\n-                    payload = this.stringify(data);\n-                    this.headers['Content-Type'] = 'application/x-www-form-urlencoded';\n-                    this.headers['Content-Length'] = payload.length;\n-                } else {\n-                    payload = JSON.stringify(data);\n-                }\n-            }\n+                this.on = function (event_type, next) {\n \n-            this.headers.Accept = 'application/json';\n+                    if (this.callbacks[event_type]) {\n+                        this.callbacks[event_type] = this.callbacks[event_type].push(next);\n+                    }\n \n-            logger.log('verbose', this.method, this.host + ':' + this.port + new_path);\n+                    this.callbacks[event_type] = [next];\n \n-            if (payload) {\n-                logger.log('debug', 'data\\n', payload);\n-            }\n+                    return this;\n+                };\n \n-            logger.log('debug', 'headers\\n', this.headers);\n+                this.emit = function (event_type, err, response) {\n+                    if (this.callbacks[event_type]) {\n+                        this.callbacks[event_type].forEach(function (callback) {\n+                            callback(err, response);\n+                        });\n+                    }\n \n-            protocol = this.secure ? https : http;\n+                    return this;\n+                };\n \n-            this.request_opts.path = new_path;\n-            this.request_opts.method = this.method;\n-            this.request_opts.headers = this.headers;\n+                this.send = function (data) { === === =\n+                        this.send = function (data) { >>> >>> > d9794801436738f6bd2bcefd7bdd5820610b4e87\n+                            var new_path = this.path,\n+                                self = this,\n+                                protocol,\n+                                payload,\n+                                req;\n \n-            console.log(this.request_opts);\n+                            this.started = true;\n+                            this.data = data;\n \n-            try {\n-                req = protocol.request(this.request_opts);\n+                            if (data && this.method === 'GET') {\n+                                new_path += '?' + this.stringify(data);\n+                            }\n+                            else {\n+                                if (!this.headers['Content-Type']) {\n+                                    payload = this.stringify(data);\n+                                    this.headers['Content-Type'] = 'application/x-www-form-urlencoded';\n+                                    this.headers['Content-Length'] = payload.length;\n+                                }\n+                                else {\n+                                    payload = JSON.stringify(data);\n+                                }\n+                            }\n \n-                req.on('response', function(response) {\n-                    var s = '';\n+                            this.headers.Accept = 'application/json';\n \n-                    response.setEncoding('utf8');\n+                            logger.log('verbose', this.method, this.host + ':' + this.port + new_path);\n \n-                    response.on('data', function(chunk) {\n-                        s += chunk;\n-                    });\n+                            if (payload) {\n+                                logger.log('debug', 'data\\n', payload);\n+                            }\n \n-                    response.on('close', function() {\n-                        logger.log('error', 'request closed');\n-                        self.retry();\n-                    });\n+                            logger.log('debug', 'headers\\n', this.headers);\n \n-                    response.on('error', function(err) {\n-                        logger.log('error', 'Response error', err);\n-                        self.retry();\n-                    });\n+                            protocol = this.secure ? https : http;\n \n-                    response.on('end', function() {\n-                        var redir,\n-                            temp;\n+                            this.request_opts.path = new_path;\n+                            this.request_opts.method = this.method;\n+                            this.request_opts.headers = this.headers;\n \n-                        self.response_headers = response.headers;\n+                            console.log(this.request_opts);\n \n-                        if (self.follow && self.response_headers.location) {\n-                            if (!self.max_redirects) {\n-                                self.cb({\n-                                    message: 'Too many redirects'\n-                                }, s, self, self.additional_arguments);\n-                                return;\n-                            }\n+                            try {\n+                                req = protocol.request(this.request_opts);\n \n-                            temp = self.response_headers.location.split('/');\n+                                req.on('response', function (response) {\n+                                    var s = '';\n \n-                            redir = new Request('GET')\n-                                .to(temp[2], temp[0] === 'http:' ? 80 : 443, temp.splice(2, -1).join(\n-                                    '/') || '/')\n-                                .follow_redirects(self.max_redirects - 1);\n+                                    response.setEncoding(self.encoding);\n \n-                            if (temp[0] === 'https:') {\n-                                redir = redir.secured();\n-                            }\n+                                    response.on('data', function (chunk) {\n+                                        s += chunk;\n \n-                            for (temp in self.headers) {\n-                                redir = redir.add_header(temp, self.headers[temp]);\n-                            }\n+                                        self.emit('data', null, chunk);\n \n-                            redir.then(self.cb);\n-                        } else {\n-                            logger.log('verbose', 'Response', response.statusCode);\n-                            logger.log('silly', s);\n+                                    });\n \n-                            if (response.headers['content-type'] && response.headers['content-type'].split(';')[0] ===\n-                                'application/json') {\n-                                if (self.before_json) {\n-                                    s = self.before_json(s);\n+                                    response.on('close', function () {\n+                                        logger.log('error', 'request closed');\n+                                        self.emit('close', 'request closed');\n+                                        self.retry();\n+                                    });\n+\n+                                    response.on('error', function (err) {\n+                                        logger.log('error', 'Response error', err);\n+                                        self.emit('error', err);\n+                                        self.retry();\n+                                    });\n+\n+                                    response.on('end', function () {\n+                                        var redir,\n+                                            temp;\n+\n+                                        self.response_headers = response.headers;\n+                                        self.target_location = response.headers.location;\n+\n+                                        if (self.follow && self.response_headers.location) {\n+                                            if (!self.max_redirects) {\n+                                                self.cb({\n+                                                    message: 'Too many redirects'\n+                                                }, s, self, self.additional_arguments);\n+                                                return;\n+                                            }\n+\n+                                            temp = self.response_headers.location.split('/');\n+\n+                                            redir = new Request('GET')\n+                                                .to(self.response_headers.location)\n+                                                .follow_redirects(self.max_redirects - 1);\n+\n+                                            if (temp[0] === 'https:') {\n+                                                redir = redir.secured();\n+                                            }\n+\n+                                            for (temp in self.headers) {\n+                                                redir = redir.add_header(temp, self.headers[temp]);\n+                                            }\n+\n+                                            if (typeof (self._stream) !== 'undefined') {\n+                                                redir.pipe(self._stream);\n+                                            }\n+\n+                                            if (typeof (self.callbacks) !== 'undefined') {\n+                                                redir.callbacks = self.callbacks;\n+                                            }\n+\n+                                            redir.target_location = self.target_location;\n+                                            redir.set_encoding(self.encoding);\n+\n+                                            redir.then(self.cb);\n+                                        }\n+                                        else {\n+                                            logger.log('verbose', 'Response', response.statusCode);\n+                                            logger.log('silly', s);\n+\n+                                            if (response.headers['content-type'] && response.headers[\n+                                                    'content-type'].split(';')[0] ===\n+                                                'application/json') {\n+                                                if (self.before_json) {\n+                                                    s = self.before_json(s);\n+                                                }\n+                                                try {\n+                                                    s = JSON.parse(s);\n+                                                }\n+                                                catch (e) {\n+                                                    logger.log('error', 'JSON is invalid');\n+                                                    logger.log('error', e);\n+                                                    e.statusCode = response.statusCode;\n+                                                    return self.cb(e, s, self, self.additional_arguments);\n+                                                }\n+                                            }\n+\n+\n+                                            if (response.statusCode === 200) {\n+\n+                                                if (typeof (self._stream) !== 'undefined') {\n+                                                    response.pipe(self._stream);\n+                                                }\n+\n+                                                self.cb(null, s, self, self.additional_arguments);\n+\n+                                            }\n+                                            else {\n+\n+                                                self.cb({\n+                                                    response: s,\n+                                                    status_code: response.statusCode\n+                                                }, null, self, self.additional_arguments);\n+                                            }\n+                                        }\n+                                    });\n+                                });\n+\n+                                req.on('error', function (err) {\n+                                    var retryable_errors = [\n+                                        'ECONNREFUSED',\n+                                        'ECONNRESET',\n+                                        'ENOTFOUND',\n+                                        'EADDRINFO',\n+                                        'ETIMEDOUT',\n+                                        'ESRCH'\n+                                    ];\n+\n+                                    logger.log('error', 'Request error', err, self.host + ':' + self.port +\n+                                        self.path);\n+\n+                                    if (~retryable_errors.indexOf(err.code)) {\n+                                        if (self.retries < self.max_retry) {\n+                                            return self.retry();\n+                                        }\n+                                        err.message = 'OMG. Server on ' + self.host + ':' + self.port +\n+                                            ' seems dead';\n+                                    }\n+\n+                                    self.cb(err, null, self, self.additional_arguments);\n+                                });\n+\n+                                req.on('continue', function () {\n+                                    logger.log('error', 'continue event emitted');\n+                                    self.retry();\n+                                });\n+\n+                                req.on('upgrade', function () {\n+                                    logger.log('error', 'upgrade event emitted');\n+                                    self.retry();\n+                                });\n+\n+                                req.on('connect', function () {\n+                                    logger.log('error', 'connect event emitted');\n+                                    self.retry();\n+                                });\n+\n+                                if (this.method !== 'GET') {\n+                                    req.write(payload);\n                                 }\n-                                try {\n-                                    s = JSON.parse(s);\n-                                } catch (e) {\n-                                    logger.log('error', 'JSON is invalid');\n-                                    logger.log('error', e);\n-                                    e.statusCode = response.statusCode;\n-                                    return self.cb(e, s, self, self.additional_arguments);\n-                                }\n-                            }\n \n-                            if (response.statusCode === 200) {\n-                                self.cb(null, s, self, self.additional_arguments);\n-                            } else {\n-                                self.cb({\n-                                    response: s,\n-                                    status_code: response.statusCode\n-                                }, null, self, self.additional_arguments);\n+                                req.end();\n                             }\n-                        }\n-                    });\n-                });\n-\n-                req.on('error', function(err) {\n-                    var retryable_errors = [\n-                        'ECONNREFUSED',\n-                        'ECONNRESET',\n-                        'ENOTFOUND',\n-                        'EADDRINFO',\n-                        'ETIMEDOUT',\n-                        'ESRCH'\n-                    ];\n-\n-                    logger.log('error', 'Request error', err, self.host + ':' + self.port + self.path);\n-\n-                    if (~retryable_errors.indexOf(err.code)) {\n-                        if (self.retries < self.max_retry) {\n-                            return self.retry();\n-                        }\n-                        err.message = 'OMG. Server on ' + self.host + ':' + self.port + ' seems dead';\n-                    }\n-\n-                    self.cb(err, null, self, self.additional_arguments);\n-                });\n-\n-                req.on('continue', function() {\n-                    logger.log('error', 'continue event emitted');\n-                    self.retry();\n-                });\n-\n-                req.on('upgrade', function() {\n-                    logger.log('error', 'upgrade event emitted');\n-                    self.retry();\n-                });\n-\n-                req.on('connect', function() {\n-                    logger.log('error', 'connect event emitted');\n-                    self.retry();\n-                });\n-\n-                if (this.method !== 'GET') {\n-                    req.write(payload);\n-                }\n+                            catch (e) {\n+                                logger.log('error', e);\n+                                self.retry();\n+                            }\n+                            return this;\n+                        };\n+                    },\n \n-                req.end();\n-            } catch (e) {\n-                logger.log('error', e);\n-                self.retry();\n-            }\n-            return this;\n-        };\n-    },\n+                    attach = function (object) {\n+                        object.get = {\n+                            to: function (host, port, path) {\n+                                return new Request('GET').to(host, port, path);\n+                            }\n+                        };\n \n-    attach = function(object) {\n-        object.get = {\n-            to: function(host, port, path) {\n-                return new Request('GET').to(host, port, path);\n-            }\n-        };\n+                        object.post = {\n+                            to: function (host, port, path) {\n+                                return new Request('POST').to(host, port, path);\n+                            }\n+                        };\n \n-        object.post = {\n-            to: function(host, port, path) {\n-                return new Request('POST').to(host, port, path);\n-            }\n-        };\n+                        object.put = {\n+                            to: function (host, port, path) {\n+                                return new Request('PUT').to(host, port, path);\n+                            }\n+                        };\n \n-        object.put = {\n-            to: function(host, port, path) {\n-                return new Request('PUT').to(host, port, path);\n-            }\n-        };\n+                        object.delete = {\n+                            to: function (host, port, path) {\n+                                return new Request('DELETE').to(host, port, path);\n+                            }\n+                        };\n \n-        object.delete = {\n-            to: function(host, port, path) {\n-                return new Request('DELETE').to(host, port, path);\n-            }\n-        };\n+                        object.request = function (method) {\n+                            this.to = function (host, port, path) {\n+                                return new Request(method).to(host, port, path);\n+                            };\n+                            return this;\n+                        };\n \n-        object.request = function(method) {\n-            this.to = function(host, port, path) {\n-                return new Request(method).to(host, port, path);\n-            };\n-            return this;\n-        };\n+                        object.stringify = stringify;\n \n-        object.stringify = stringify;\n+                        return object;\n+                    };\n \n-        return object;\n-    };\n+                module.exports = function (_logger) {","path":"index.js","position":610,"original_position":610,"commit_id":"88d864f08452759d21a7757c6af2f82a45b35ac8","original_commit_id":"88d864f08452759d21a7757c6af2f82a45b35ac8","user":{"login":"ravenjohn","id":3425521,"avatar_url":"https://avatars.githubusercontent.com/u/3425521?v=3","gravatar_id":"","url":"https://api.github.com/users/ravenjohn","html_url":"https://github.com/ravenjohn","followers_url":"https://api.github.com/users/ravenjohn/followers","following_url":"https://api.github.com/users/ravenjohn/following{/other_user}","gists_url":"https://api.github.com/users/ravenjohn/gists{/gist_id}","starred_url":"https://api.github.com/users/ravenjohn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ravenjohn/subscriptions","organizations_url":"https://api.github.com/users/ravenjohn/orgs","repos_url":"https://api.github.com/users/ravenjohn/repos","events_url":"https://api.github.com/users/ravenjohn/events{/privacy}","received_events_url":"https://api.github.com/users/ravenjohn/received_events","type":"User","site_admin":false},"body":"what's the need for indention? it's not part of any code block","created_at":"2015-04-16T05:46:39Z","updated_at":"2015-04-16T05:46:39Z","html_url":"https://github.com/ravenjohn/cuddle/pull/4#discussion_r28485279","pull_request_url":"https://api.github.com/repos/ravenjohn/cuddle/pulls/4","_links":{"self":{"href":"https://api.github.com/repos/ravenjohn/cuddle/pulls/comments/28485279"},"html":{"href":"https://github.com/ravenjohn/cuddle/pull/4#discussion_r28485279"},"pull_request":{"href":"https://api.github.com/repos/ravenjohn/cuddle/pulls/4"}}},"pull_request":{"url":"https://api.github.com/repos/ravenjohn/cuddle/pulls/4","id":31726424,"html_url":"https://github.com/ravenjohn/cuddle/pull/4","diff_url":"https://github.com/ravenjohn/cuddle/pull/4.diff","patch_url":"https://github.com/ravenjohn/cuddle/pull/4.patch","issue_url":"https://api.github.com/repos/ravenjohn/cuddle/issues/4","number":4,"state":"open","locked":false,"title":"Changed the Redirect URL","user":{"login":"lightshire","id":3846598,"avatar_url":"https://avatars.githubusercontent.com/u/3846598?v=3","gravatar_id":"","url":"https://api.github.com/users/lightshire","html_url":"https://github.com/lightshire","followers_url":"https://api.github.com/users/lightshire/followers","following_url":"https://api.github.com/users/lightshire/following{/other_user}","gists_url":"https://api.github.com/users/lightshire/gists{/gist_id}","starred_url":"https://api.github.com/users/lightshire/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lightshire/subscriptions","organizations_url":"https://api.github.com/users/lightshire/orgs","repos_url":"https://api.github.com/users/lightshire/repos","events_url":"https://api.github.com/users/lightshire/events{/privacy}","received_events_url":"https://api.github.com/users/lightshire/received_events","type":"User","site_admin":false},"body":"Changed the redirect URL","created_at":"2015-03-23T12:12:54Z","updated_at":"2015-04-16T05:46:39Z","closed_at":null,"merged_at":null,"merge_commit_sha":"f134317ef1a36613fc913cfb9d843f2ccd3054bd","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/ravenjohn/cuddle/pulls/4/commits","review_comments_url":"https://api.github.com/repos/ravenjohn/cuddle/pulls/4/comments","review_comment_url":"https://api.github.com/repos/ravenjohn/cuddle/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ravenjohn/cuddle/issues/4/comments","statuses_url":"https://api.github.com/repos/ravenjohn/cuddle/statuses/88d864f08452759d21a7757c6af2f82a45b35ac8","head":{"label":"lightshire:master","ref":"master","sha":"88d864f08452759d21a7757c6af2f82a45b35ac8","user":{"login":"lightshire","id":3846598,"avatar_url":"https://avatars.githubusercontent.com/u/3846598?v=3","gravatar_id":"","url":"https://api.github.com/users/lightshire","html_url":"https://github.com/lightshire","followers_url":"https://api.github.com/users/lightshire/followers","following_url":"https://api.github.com/users/lightshire/following{/other_user}","gists_url":"https://api.github.com/users/lightshire/gists{/gist_id}","starred_url":"https://api.github.com/users/lightshire/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lightshire/subscriptions","organizations_url":"https://api.github.com/users/lightshire/orgs","repos_url":"https://api.github.com/users/lightshire/repos","events_url":"https://api.github.com/users/lightshire/events{/privacy}","received_events_url":"https://api.github.com/users/lightshire/received_events","type":"User","site_admin":false},"repo":{"id":32726011,"name":"cuddle","full_name":"lightshire/cuddle","owner":{"login":"lightshire","id":3846598,"avatar_url":"https://avatars.githubusercontent.com/u/3846598?v=3","gravatar_id":"","url":"https://api.github.com/users/lightshire","html_url":"https://github.com/lightshire","followers_url":"https://api.github.com/users/lightshire/followers","following_url":"https://api.github.com/users/lightshire/following{/other_user}","gists_url":"https://api.github.com/users/lightshire/gists{/gist_id}","starred_url":"https://api.github.com/users/lightshire/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lightshire/subscriptions","organizations_url":"https://api.github.com/users/lightshire/orgs","repos_url":"https://api.github.com/users/lightshire/repos","events_url":"https://api.github.com/users/lightshire/events{/privacy}","received_events_url":"https://api.github.com/users/lightshire/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/lightshire/cuddle","description":"Cuddle","fork":true,"url":"https://api.github.com/repos/lightshire/cuddle","forks_url":"https://api.github.com/repos/lightshire/cuddle/forks","keys_url":"https://api.github.com/repos/lightshire/cuddle/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lightshire/cuddle/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lightshire/cuddle/teams","hooks_url":"https://api.github.com/repos/lightshire/cuddle/hooks","issue_events_url":"https://api.github.com/repos/lightshire/cuddle/issues/events{/number}","events_url":"https://api.github.com/repos/lightshire/cuddle/events","assignees_url":"https://api.github.com/repos/lightshire/cuddle/assignees{/user}","branches_url":"https://api.github.com/repos/lightshire/cuddle/branches{/branch}","tags_url":"https://api.github.com/repos/lightshire/cuddle/tags","blobs_url":"https://api.github.com/repos/lightshire/cuddle/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lightshire/cuddle/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lightshire/cuddle/git/refs{/sha}","trees_url":"https://api.github.com/repos/lightshire/cuddle/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lightshire/cuddle/statuses/{sha}","languages_url":"https://api.github.com/repos/lightshire/cuddle/languages","stargazers_url":"https://api.github.com/repos/lightshire/cuddle/stargazers","contributors_url":"https://api.github.com/repos/lightshire/cuddle/contributors","subscribers_url":"https://api.github.com/repos/lightshire/cuddle/subscribers","subscription_url":"https://api.github.com/repos/lightshire/cuddle/subscription","commits_url":"https://api.github.com/repos/lightshire/cuddle/commits{/sha}","git_commits_url":"https://api.github.com/repos/lightshire/cuddle/git/commits{/sha}","comments_url":"https://api.github.com/repos/lightshire/cuddle/comments{/number}","issue_comment_url":"https://api.github.com/repos/lightshire/cuddle/issues/comments{/number}","contents_url":"https://api.github.com/repos/lightshire/cuddle/contents/{+path}","compare_url":"https://api.github.com/repos/lightshire/cuddle/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lightshire/cuddle/merges","archive_url":"https://api.github.com/repos/lightshire/cuddle/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lightshire/cuddle/downloads","issues_url":"https://api.github.com/repos/lightshire/cuddle/issues{/number}","pulls_url":"https://api.github.com/repos/lightshire/cuddle/pulls{/number}","milestones_url":"https://api.github.com/repos/lightshire/cuddle/milestones{/number}","notifications_url":"https://api.github.com/repos/lightshire/cuddle/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lightshire/cuddle/labels{/name}","releases_url":"https://api.github.com/repos/lightshire/cuddle/releases{/id}","created_at":"2015-03-23T10:42:12Z","updated_at":"2015-04-14T09:59:17Z","pushed_at":"2015-04-14T09:59:17Z","git_url":"git://github.com/lightshire/cuddle.git","ssh_url":"git@github.com:lightshire/cuddle.git","clone_url":"https://github.com/lightshire/cuddle.git","svn_url":"https://github.com/lightshire/cuddle","homepage":null,"size":166,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"ravenjohn:master","ref":"master","sha":"d9794801436738f6bd2bcefd7bdd5820610b4e87","user":{"login":"ravenjohn","id":3425521,"avatar_url":"https://avatars.githubusercontent.com/u/3425521?v=3","gravatar_id":"","url":"https://api.github.com/users/ravenjohn","html_url":"https://github.com/ravenjohn","followers_url":"https://api.github.com/users/ravenjohn/followers","following_url":"https://api.github.com/users/ravenjohn/following{/other_user}","gists_url":"https://api.github.com/users/ravenjohn/gists{/gist_id}","starred_url":"https://api.github.com/users/ravenjohn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ravenjohn/subscriptions","organizations_url":"https://api.github.com/users/ravenjohn/orgs","repos_url":"https://api.github.com/users/ravenjohn/repos","events_url":"https://api.github.com/users/ravenjohn/events{/privacy}","received_events_url":"https://api.github.com/users/ravenjohn/received_events","type":"User","site_admin":false},"repo":{"id":24446554,"name":"cuddle","full_name":"ravenjohn/cuddle","owner":{"login":"ravenjohn","id":3425521,"avatar_url":"https://avatars.githubusercontent.com/u/3425521?v=3","gravatar_id":"","url":"https://api.github.com/users/ravenjohn","html_url":"https://github.com/ravenjohn","followers_url":"https://api.github.com/users/ravenjohn/followers","following_url":"https://api.github.com/users/ravenjohn/following{/other_user}","gists_url":"https://api.github.com/users/ravenjohn/gists{/gist_id}","starred_url":"https://api.github.com/users/ravenjohn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ravenjohn/subscriptions","organizations_url":"https://api.github.com/users/ravenjohn/orgs","repos_url":"https://api.github.com/users/ravenjohn/repos","events_url":"https://api.github.com/users/ravenjohn/events{/privacy}","received_events_url":"https://api.github.com/users/ravenjohn/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/ravenjohn/cuddle","description":"Cuddle","fork":false,"url":"https://api.github.com/repos/ravenjohn/cuddle","forks_url":"https://api.github.com/repos/ravenjohn/cuddle/forks","keys_url":"https://api.github.com/repos/ravenjohn/cuddle/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ravenjohn/cuddle/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ravenjohn/cuddle/teams","hooks_url":"https://api.github.com/repos/ravenjohn/cuddle/hooks","issue_events_url":"https://api.github.com/repos/ravenjohn/cuddle/issues/events{/number}","events_url":"https://api.github.com/repos/ravenjohn/cuddle/events","assignees_url":"https://api.github.com/repos/ravenjohn/cuddle/assignees{/user}","branches_url":"https://api.github.com/repos/ravenjohn/cuddle/branches{/branch}","tags_url":"https://api.github.com/repos/ravenjohn/cuddle/tags","blobs_url":"https://api.github.com/repos/ravenjohn/cuddle/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ravenjohn/cuddle/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ravenjohn/cuddle/git/refs{/sha}","trees_url":"https://api.github.com/repos/ravenjohn/cuddle/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ravenjohn/cuddle/statuses/{sha}","languages_url":"https://api.github.com/repos/ravenjohn/cuddle/languages","stargazers_url":"https://api.github.com/repos/ravenjohn/cuddle/stargazers","contributors_url":"https://api.github.com/repos/ravenjohn/cuddle/contributors","subscribers_url":"https://api.github.com/repos/ravenjohn/cuddle/subscribers","subscription_url":"https://api.github.com/repos/ravenjohn/cuddle/subscription","commits_url":"https://api.github.com/repos/ravenjohn/cuddle/commits{/sha}","git_commits_url":"https://api.github.com/repos/ravenjohn/cuddle/git/commits{/sha}","comments_url":"https://api.github.com/repos/ravenjohn/cuddle/comments{/number}","issue_comment_url":"https://api.github.com/repos/ravenjohn/cuddle/issues/comments{/number}","contents_url":"https://api.github.com/repos/ravenjohn/cuddle/contents/{+path}","compare_url":"https://api.github.com/repos/ravenjohn/cuddle/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ravenjohn/cuddle/merges","archive_url":"https://api.github.com/repos/ravenjohn/cuddle/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ravenjohn/cuddle/downloads","issues_url":"https://api.github.com/repos/ravenjohn/cuddle/issues{/number}","pulls_url":"https://api.github.com/repos/ravenjohn/cuddle/pulls{/number}","milestones_url":"https://api.github.com/repos/ravenjohn/cuddle/milestones{/number}","notifications_url":"https://api.github.com/repos/ravenjohn/cuddle/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ravenjohn/cuddle/labels{/name}","releases_url":"https://api.github.com/repos/ravenjohn/cuddle/releases{/id}","created_at":"2014-09-25T06:36:32Z","updated_at":"2015-04-10T00:52:27Z","pushed_at":"2015-04-14T09:59:17Z","git_url":"git://github.com/ravenjohn/cuddle.git","ssh_url":"git@github.com:ravenjohn/cuddle.git","clone_url":"https://github.com/ravenjohn/cuddle.git","svn_url":"https://github.com/ravenjohn/cuddle","homepage":null,"size":267,"stargazers_count":1,"watchers_count":1,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"open_issues_count":1,"forks":2,"open_issues":1,"watchers":1,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ravenjohn/cuddle/pulls/4"},"html":{"href":"https://github.com/ravenjohn/cuddle/pull/4"},"issue":{"href":"https://api.github.com/repos/ravenjohn/cuddle/issues/4"},"comments":{"href":"https://api.github.com/repos/ravenjohn/cuddle/issues/4/comments"},"review_comments":{"href":"https://api.github.com/repos/ravenjohn/cuddle/pulls/4/comments"},"review_comment":{"href":"https://api.github.com/repos/ravenjohn/cuddle/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ravenjohn/cuddle/pulls/4/commits"},"statuses":{"href":"https://api.github.com/repos/ravenjohn/cuddle/statuses/88d864f08452759d21a7757c6af2f82a45b35ac8"}}}}