{"action":"created","comment":{"url":"https://api.github.com/repos/SitePen/dstore/pulls/comments/37120552","id":37120552,"diff_hunk":"@@ -0,0 +1,350 @@\n+import * as arrayUtil from 'dojo-core/array';\n+import * as lang from 'dojo-core/lang';\n+import Promise from 'dojo-core/Promise';\n+import request, { Response, ResponsePromise } from 'dojo-core/request';\n+import Filter from './Filter';\n+import * as dstore from './interfaces';\n+import QueryResults from './QueryResults';\n+import Store, { NewableStoreModel } from './Store';\n+\n+const push = [].push;\n+\n+export interface RequestStoreArgs {\n+\ttarget?: string;\n+\theaders?: {};\n+\tModel?: NewableStoreModel;\n+\tparse?: () => any;\n+}\n+\n+export default class Request<T> extends Store<T> implements dstore.Collection<T> {\n+\n+\t/**\n+\t * A flag indicating whether the target contains a query string\n+\t */\n+\tprotected _targetContainsQueryString: boolean;\n+\n+\t/**\n+\t * Defines the Accept header to use on HTTP requests\n+\t */\n+\taccepts: string;\n+\n+\t/**\n+\t * The prefix to apply to sort property names that are ascending\n+\t */\n+\tascendingPrefix: string;\n+\n+\t/**\n+\t * The prefix to apply to sort property names that are ascending\n+\t */\n+\tdescendingPrefix: string;\n+\n+\t/**\n+\t * Additional headers to pass in all requests to the server. These can be overridden\n+\t * by passing additional headers to calls to the store.\n+\t */\n+\theaders: {};\n+\n+\t/**\n+\t * The indicates if range limits (start and end) should be specified\n+\t * in a query parameter, and what the start parameter should be.\n+\t * This must be used in conjunction with the rangeCountParam\n+\t * If this is not specified, the range will\n+\t * included with a RQL style limit() parameter\n+\t */\n+\trangeStartParam: string;\n+\n+\t/**\n+\t * The indicates if range limits (start and end) should be specified\n+\t * in a query parameter, and what the count parameter should be.\n+\t * This must be used in conjunction with the rangeStartParam\n+\t * If this is not specified, the range will\n+\t * included with a RQL style limit() parameter\n+\t */\n+\trangeCountParam: string;\n+\n+\t/**\n+\t * This will specify the query parameter to use for specifying the\n+\t * 'select` properties. This will default to `select(<properties>)`\n+\t * in the query string.\n+\t */\n+\tselectParam: string;\n+\n+\t/**\n+\t * The query parameter to used for holding sort information. If this is omitted, than\n+\t * the sort information is included in a functional query token to avoid colliding\n+\t * with the set of name/value pairs.\n+\t */\n+\tsortParam: string;\n+\n+\t/**\n+\t * The target base URL to use for all requests to the server. This string will be\n+\t * prepended to the id to generate the URL (relative or absolute) for requests\n+\t * sent to the server\n+\t */\n+\ttarget: string;\n+\n+\t/**\n+\t * The indicates if range limits (start and end) should be specified\n+\t * a Range header, using items units. If this is set to true, a header\n+\t * be included of the form:\n+\t * Range: items=start-end\n+\t */\n+\tuseRangeHeaders: boolean;\n+\n+\t/**\n+\t * This is a basic store for RESTful communicating with a server through JSON\n+\t * formatted data. It extends dstore/Store.\n+\t * @param options This provides any configuration information that will be mixed into the store\n+\t */\n+\tconstructor(options?: RequestStoreArgs) {\n+\t\tsuper(options);\n+\t\t/**\n+\t\t * Defaults to JSON, but other formats can be parsed by providing an alternate\n+\t\t * parsing function. If you do want to use an alternate format, you will probably\n+\t\t * want to use an alternate stringify function for the serialization of data as well.\n+\t\t * Also, if you want to support parsing a larger set of JavaScript objects\n+\t\t * outside of strict JSON parsing, you can provide dojo/_base/json.fromJson as the parse function\n+\t\t */\n+\t\tthis.parse = this.parse || function (data: string) {\n+\t\t\t\treturn JSON.parse(data);\n+\t\t\t};\n+\t\tthis.headers = this.headers || {};\n+\t\tthis.target = this.target || '';\n+\t\tthis._targetContainsQueryString = this.target.lastIndexOf('?') >= 0;\n+\t\tthis.ascendingPrefix = this.ascendingPrefix || '+';\n+\t\tthis.descendingPrefix = this.descendingPrefix || '-';\n+\t\tthis.accepts = this.accepts || 'application/json';\n+\t\tthis.fetch = this.fetch || function (kwArgs?: dstore.FetchArgs) {\n+\t\t\tconst results = this._request(kwArgs);\n+\t\t\treturn <dstore.FetchPromise<any>> QueryResults(results.data, {\n+\t\t\t\tresponse: results.response\n+\t\t\t});\n+\t\t};\n+\t}\n+\n+\tprotected _request(kwArgs: dstore.FetchArgs = {}): {\n+\t\tdata: dstore.FetchPromise<T>;\n+\t\ttotal: Promise<number>;\n+\t\tresponse: ResponsePromise<T>\n+\t} {\n+\t\t// perform the actual query\n+\t\tconst RequestHeader: { [ name: string ]: string } = null;\n+\t\tconst headers = <typeof RequestHeader> lang.mixin(Object.create(this.headers), { Accept: this.accepts });\n+\n+\t\tif ('headers' in kwArgs) {\n+\t\t\tlang.mixin(headers, kwArgs.headers);\n+\t\t}\n+\n+\t\tconst requestUrl = this._renderUrl(kwArgs.queryParams);\n+\n+\t\tconst response = request(requestUrl, {\n+\t\t\tmethod: 'GET',\n+\t\t\theaders: headers\n+\t\t});\n+\t\tconst collection = this;\n+\t\tconst parsedResponse = response.then(function (response: Response<string>) {\n+\t\t\treturn collection.parse(response.data);\n+\t\t});\n+\t\treturn {\n+\t\t\tdata: parsedResponse.then(function (data) {\n+\t\t\t\t// support items in the results\n+\t\t\t\tconst results = data.items || data;\n+\t\t\t\tfor (let i = 0, l = results.length; i < l; i++) {\n+\t\t\t\t\tresults[ i ] = collection._restore(results[ i ], true);\n+\t\t\t\t}\n+\t\t\t\treturn results;\n+\t\t\t}),\n+\t\t\ttotal: parsedResponse.then(function (data) {\n+\t\t\t\t// check for a total property\n+\t\t\t\tconst total = data.total;\n+\t\t\t\tif (total > -1) {\n+\t\t\t\t\t// if we have a valid positive number from the data,\n+\t\t\t\t\t// we can use that\n+\t\t\t\t\treturn total;\n+\t\t\t\t}\n+\t\t\t\t// else use headers\n+\t\t\t\treturn response.then(function (response) {\n+\t\t\t\t\tconst rangeHeader = response.getHeader('Content-Range');\n+\t\t\t\t\tlet rangeMatch: RegExpMatchArray;\n+\t\t\t\t\tlet range: number;\n+\t\t\t\t\tif (rangeHeader && (rangeMatch = rangeHeader.match(/\\/(.*)/)) && (range = Number(rangeMatch[ 1 ]))) {\n+\t\t\t\t\t\treturn range;\n+\t\t\t\t\t} else {\n+\t\t\t\t\t\treturn null;\n+\t\t\t\t\t}\n+\t\t\t\t});\n+\t\t\t}),\n+\t\t\tresponse: response\n+\t\t};\n+\t}\n+\n+\t/**\n+\t * Constructs filter-related params to be inserted into the query string\n+\t *\n+\t * @param filter The filter to render as part of a query string\n+\t * @returns Filter-related params to be inserted in the query string\n+\t */\n+\tprotected _renderFilterParams(filter: Filter): string[] {\n+\t\tconst type = filter.type;\n+\t\tconst args = filter.args;\n+\t\tif (!type) {\n+\t\t\treturn [ '' ];\n+\t\t}\n+\t\tif (type === 'string') {\n+\t\t\treturn [ args[ 0 ] ];","path":"src/Request.ts","position":176,"original_position":194,"commit_id":"23aa44d9945e7999e36467982365b3fde284f8e2","original_commit_id":"4dc0b24b325a41f179bfe82fe07e815e343b508f","user":{"login":"kfranqueiro","id":398379,"avatar_url":"https://avatars.githubusercontent.com/u/398379?v=3","gravatar_id":"","url":"https://api.github.com/users/kfranqueiro","html_url":"https://github.com/kfranqueiro","followers_url":"https://api.github.com/users/kfranqueiro/followers","following_url":"https://api.github.com/users/kfranqueiro/following{/other_user}","gists_url":"https://api.github.com/users/kfranqueiro/gists{/gist_id}","starred_url":"https://api.github.com/users/kfranqueiro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kfranqueiro/subscriptions","organizations_url":"https://api.github.com/users/kfranqueiro/orgs","repos_url":"https://api.github.com/users/kfranqueiro/repos","events_url":"https://api.github.com/users/kfranqueiro/events{/privacy}","received_events_url":"https://api.github.com/users/kfranqueiro/received_events","type":"User","site_admin":false},"body":"Oh look, a textbook example of how confusing this style rule is :)\r\n\r\nThis should be `[ args[0] ]`","created_at":"2015-08-14T21:20:29Z","updated_at":"2015-08-14T21:20:29Z","html_url":"https://github.com/SitePen/dstore/pull/145#discussion_r37120552","pull_request_url":"https://api.github.com/repos/SitePen/dstore/pulls/145","_links":{"self":{"href":"https://api.github.com/repos/SitePen/dstore/pulls/comments/37120552"},"html":{"href":"https://github.com/SitePen/dstore/pull/145#discussion_r37120552"},"pull_request":{"href":"https://api.github.com/repos/SitePen/dstore/pulls/145"}}},"pull_request":{"url":"https://api.github.com/repos/SitePen/dstore/pulls/145","id":40867395,"html_url":"https://github.com/SitePen/dstore/pull/145","diff_url":"https://github.com/SitePen/dstore/pull/145.diff","patch_url":"https://github.com/SitePen/dstore/pull/145.patch","issue_url":"https://api.github.com/repos/SitePen/dstore/issues/145","number":145,"state":"open","locked":false,"title":"Convert several modules to TypeScript","user":{"login":"maier49","id":5474358,"avatar_url":"https://avatars.githubusercontent.com/u/5474358?v=3","gravatar_id":"","url":"https://api.github.com/users/maier49","html_url":"https://github.com/maier49","followers_url":"https://api.github.com/users/maier49/followers","following_url":"https://api.github.com/users/maier49/following{/other_user}","gists_url":"https://api.github.com/users/maier49/gists{/gist_id}","starred_url":"https://api.github.com/users/maier49/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maier49/subscriptions","organizations_url":"https://api.github.com/users/maier49/orgs","repos_url":"https://api.github.com/users/maier49/repos","events_url":"https://api.github.com/users/maier49/events{/privacy}","received_events_url":"https://api.github.com/users/maier49/received_events","type":"User","site_admin":false},"body":"Fixes #143, Fixes #138, Fixes #137, Fixes #136\r\n\r\n * QueryResults has been converted to TypeScript\r\n * Filter has been converted to TypeScript\r\n * Store and tests/unit/Store have been converted.\r\n * Request and tests/unit/Request have been converted.\r\n\r\nAll test cases that were previously passing are still\r\npassing, as well as the Request test cases.\r\n\r\nQueryResults needed to be modified to return an ES6 style\r\npromise, because of calls to super made by the promise\r\nreturned from dojo-core/Request. This conversion in turn\r\nrequired many tests cases and some sources files to be\r\nupdated, as they were relying on the fact that Dojo 1 style\r\npromises execute synchronously in some cases.","created_at":"2015-07-27T03:15:31Z","updated_at":"2015-08-14T21:20:29Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e444035aa178caffb02dd0b8f6fb2db3daf111c9","assignee":{"login":"kfranqueiro","id":398379,"avatar_url":"https://avatars.githubusercontent.com/u/398379?v=3","gravatar_id":"","url":"https://api.github.com/users/kfranqueiro","html_url":"https://github.com/kfranqueiro","followers_url":"https://api.github.com/users/kfranqueiro/followers","following_url":"https://api.github.com/users/kfranqueiro/following{/other_user}","gists_url":"https://api.github.com/users/kfranqueiro/gists{/gist_id}","starred_url":"https://api.github.com/users/kfranqueiro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kfranqueiro/subscriptions","organizations_url":"https://api.github.com/users/kfranqueiro/orgs","repos_url":"https://api.github.com/users/kfranqueiro/repos","events_url":"https://api.github.com/users/kfranqueiro/events{/privacy}","received_events_url":"https://api.github.com/users/kfranqueiro/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/SitePen/dstore/pulls/145/commits","review_comments_url":"https://api.github.com/repos/SitePen/dstore/pulls/145/comments","review_comment_url":"https://api.github.com/repos/SitePen/dstore/pulls/comments{/number}","comments_url":"https://api.github.com/repos/SitePen/dstore/issues/145/comments","statuses_url":"https://api.github.com/repos/SitePen/dstore/statuses/23aa44d9945e7999e36467982365b3fde284f8e2","head":{"label":"maier49:convert-request-to-ts","ref":"convert-request-to-ts","sha":"23aa44d9945e7999e36467982365b3fde284f8e2","user":{"login":"maier49","id":5474358,"avatar_url":"https://avatars.githubusercontent.com/u/5474358?v=3","gravatar_id":"","url":"https://api.github.com/users/maier49","html_url":"https://github.com/maier49","followers_url":"https://api.github.com/users/maier49/followers","following_url":"https://api.github.com/users/maier49/following{/other_user}","gists_url":"https://api.github.com/users/maier49/gists{/gist_id}","starred_url":"https://api.github.com/users/maier49/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maier49/subscriptions","organizations_url":"https://api.github.com/users/maier49/orgs","repos_url":"https://api.github.com/users/maier49/repos","events_url":"https://api.github.com/users/maier49/events{/privacy}","received_events_url":"https://api.github.com/users/maier49/received_events","type":"User","site_admin":false},"repo":{"id":38319671,"name":"dstore","full_name":"maier49/dstore","owner":{"login":"maier49","id":5474358,"avatar_url":"https://avatars.githubusercontent.com/u/5474358?v=3","gravatar_id":"","url":"https://api.github.com/users/maier49","html_url":"https://github.com/maier49","followers_url":"https://api.github.com/users/maier49/followers","following_url":"https://api.github.com/users/maier49/following{/other_user}","gists_url":"https://api.github.com/users/maier49/gists{/gist_id}","starred_url":"https://api.github.com/users/maier49/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maier49/subscriptions","organizations_url":"https://api.github.com/users/maier49/orgs","repos_url":"https://api.github.com/users/maier49/repos","events_url":"https://api.github.com/users/maier49/events{/privacy}","received_events_url":"https://api.github.com/users/maier49/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/maier49/dstore","description":"","fork":true,"url":"https://api.github.com/repos/maier49/dstore","forks_url":"https://api.github.com/repos/maier49/dstore/forks","keys_url":"https://api.github.com/repos/maier49/dstore/keys{/key_id}","collaborators_url":"https://api.github.com/repos/maier49/dstore/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/maier49/dstore/teams","hooks_url":"https://api.github.com/repos/maier49/dstore/hooks","issue_events_url":"https://api.github.com/repos/maier49/dstore/issues/events{/number}","events_url":"https://api.github.com/repos/maier49/dstore/events","assignees_url":"https://api.github.com/repos/maier49/dstore/assignees{/user}","branches_url":"https://api.github.com/repos/maier49/dstore/branches{/branch}","tags_url":"https://api.github.com/repos/maier49/dstore/tags","blobs_url":"https://api.github.com/repos/maier49/dstore/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/maier49/dstore/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/maier49/dstore/git/refs{/sha}","trees_url":"https://api.github.com/repos/maier49/dstore/git/trees{/sha}","statuses_url":"https://api.github.com/repos/maier49/dstore/statuses/{sha}","languages_url":"https://api.github.com/repos/maier49/dstore/languages","stargazers_url":"https://api.github.com/repos/maier49/dstore/stargazers","contributors_url":"https://api.github.com/repos/maier49/dstore/contributors","subscribers_url":"https://api.github.com/repos/maier49/dstore/subscribers","subscription_url":"https://api.github.com/repos/maier49/dstore/subscription","commits_url":"https://api.github.com/repos/maier49/dstore/commits{/sha}","git_commits_url":"https://api.github.com/repos/maier49/dstore/git/commits{/sha}","comments_url":"https://api.github.com/repos/maier49/dstore/comments{/number}","issue_comment_url":"https://api.github.com/repos/maier49/dstore/issues/comments{/number}","contents_url":"https://api.github.com/repos/maier49/dstore/contents/{+path}","compare_url":"https://api.github.com/repos/maier49/dstore/compare/{base}...{head}","merges_url":"https://api.github.com/repos/maier49/dstore/merges","archive_url":"https://api.github.com/repos/maier49/dstore/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/maier49/dstore/downloads","issues_url":"https://api.github.com/repos/maier49/dstore/issues{/number}","pulls_url":"https://api.github.com/repos/maier49/dstore/pulls{/number}","milestones_url":"https://api.github.com/repos/maier49/dstore/milestones{/number}","notifications_url":"https://api.github.com/repos/maier49/dstore/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/maier49/dstore/labels{/name}","releases_url":"https://api.github.com/repos/maier49/dstore/releases{/id}","created_at":"2015-06-30T16:14:31Z","updated_at":"2015-06-30T16:14:31Z","pushed_at":"2015-08-14T21:17:23Z","git_url":"git://github.com/maier49/dstore.git","ssh_url":"git@github.com:maier49/dstore.git","clone_url":"https://github.com/maier49/dstore.git","svn_url":"https://github.com/maier49/dstore","homepage":"http://dstorejs.io/","size":1336,"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":"SitePen:master","ref":"master","sha":"6a161bd6947ab2b1e346ade78a1547136d244b8f","user":{"login":"SitePen","id":1067343,"avatar_url":"https://avatars.githubusercontent.com/u/1067343?v=3","gravatar_id":"","url":"https://api.github.com/users/SitePen","html_url":"https://github.com/SitePen","followers_url":"https://api.github.com/users/SitePen/followers","following_url":"https://api.github.com/users/SitePen/following{/other_user}","gists_url":"https://api.github.com/users/SitePen/gists{/gist_id}","starred_url":"https://api.github.com/users/SitePen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SitePen/subscriptions","organizations_url":"https://api.github.com/users/SitePen/orgs","repos_url":"https://api.github.com/users/SitePen/repos","events_url":"https://api.github.com/users/SitePen/events{/privacy}","received_events_url":"https://api.github.com/users/SitePen/received_events","type":"Organization","site_admin":false},"repo":{"id":11800427,"name":"dstore","full_name":"SitePen/dstore","owner":{"login":"SitePen","id":1067343,"avatar_url":"https://avatars.githubusercontent.com/u/1067343?v=3","gravatar_id":"","url":"https://api.github.com/users/SitePen","html_url":"https://github.com/SitePen","followers_url":"https://api.github.com/users/SitePen/followers","following_url":"https://api.github.com/users/SitePen/following{/other_user}","gists_url":"https://api.github.com/users/SitePen/gists{/gist_id}","starred_url":"https://api.github.com/users/SitePen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SitePen/subscriptions","organizations_url":"https://api.github.com/users/SitePen/orgs","repos_url":"https://api.github.com/users/SitePen/repos","events_url":"https://api.github.com/users/SitePen/events{/privacy}","received_events_url":"https://api.github.com/users/SitePen/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/SitePen/dstore","description":"","fork":false,"url":"https://api.github.com/repos/SitePen/dstore","forks_url":"https://api.github.com/repos/SitePen/dstore/forks","keys_url":"https://api.github.com/repos/SitePen/dstore/keys{/key_id}","collaborators_url":"https://api.github.com/repos/SitePen/dstore/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/SitePen/dstore/teams","hooks_url":"https://api.github.com/repos/SitePen/dstore/hooks","issue_events_url":"https://api.github.com/repos/SitePen/dstore/issues/events{/number}","events_url":"https://api.github.com/repos/SitePen/dstore/events","assignees_url":"https://api.github.com/repos/SitePen/dstore/assignees{/user}","branches_url":"https://api.github.com/repos/SitePen/dstore/branches{/branch}","tags_url":"https://api.github.com/repos/SitePen/dstore/tags","blobs_url":"https://api.github.com/repos/SitePen/dstore/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/SitePen/dstore/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/SitePen/dstore/git/refs{/sha}","trees_url":"https://api.github.com/repos/SitePen/dstore/git/trees{/sha}","statuses_url":"https://api.github.com/repos/SitePen/dstore/statuses/{sha}","languages_url":"https://api.github.com/repos/SitePen/dstore/languages","stargazers_url":"https://api.github.com/repos/SitePen/dstore/stargazers","contributors_url":"https://api.github.com/repos/SitePen/dstore/contributors","subscribers_url":"https://api.github.com/repos/SitePen/dstore/subscribers","subscription_url":"https://api.github.com/repos/SitePen/dstore/subscription","commits_url":"https://api.github.com/repos/SitePen/dstore/commits{/sha}","git_commits_url":"https://api.github.com/repos/SitePen/dstore/git/commits{/sha}","comments_url":"https://api.github.com/repos/SitePen/dstore/comments{/number}","issue_comment_url":"https://api.github.com/repos/SitePen/dstore/issues/comments{/number}","contents_url":"https://api.github.com/repos/SitePen/dstore/contents/{+path}","compare_url":"https://api.github.com/repos/SitePen/dstore/compare/{base}...{head}","merges_url":"https://api.github.com/repos/SitePen/dstore/merges","archive_url":"https://api.github.com/repos/SitePen/dstore/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/SitePen/dstore/downloads","issues_url":"https://api.github.com/repos/SitePen/dstore/issues{/number}","pulls_url":"https://api.github.com/repos/SitePen/dstore/pulls{/number}","milestones_url":"https://api.github.com/repos/SitePen/dstore/milestones{/number}","notifications_url":"https://api.github.com/repos/SitePen/dstore/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/SitePen/dstore/labels{/name}","releases_url":"https://api.github.com/repos/SitePen/dstore/releases{/id}","created_at":"2013-07-31T20:24:42Z","updated_at":"2015-08-13T20:37:28Z","pushed_at":"2015-08-14T21:17:24Z","git_url":"git://github.com/SitePen/dstore.git","ssh_url":"git@github.com:SitePen/dstore.git","clone_url":"https://github.com/SitePen/dstore.git","svn_url":"https://github.com/SitePen/dstore","homepage":"http://dstorejs.io/","size":3262,"stargazers_count":207,"watchers_count":207,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":45,"mirror_url":null,"open_issues_count":38,"forks":45,"open_issues":38,"watchers":207,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/SitePen/dstore/pulls/145"},"html":{"href":"https://github.com/SitePen/dstore/pull/145"},"issue":{"href":"https://api.github.com/repos/SitePen/dstore/issues/145"},"comments":{"href":"https://api.github.com/repos/SitePen/dstore/issues/145/comments"},"review_comments":{"href":"https://api.github.com/repos/SitePen/dstore/pulls/145/comments"},"review_comment":{"href":"https://api.github.com/repos/SitePen/dstore/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/SitePen/dstore/pulls/145/commits"},"statuses":{"href":"https://api.github.com/repos/SitePen/dstore/statuses/23aa44d9945e7999e36467982365b3fde284f8e2"}}}}