{"action":"created","comment":{"url":"https://api.github.com/repos/Nordstrom/serverless-artillery/pulls/comments/87954458","pull_request_review_id":8539453,"id":87954458,"diff_hunk":"@@ -0,0 +1,213 @@\n+'use strict';\n+\n+const fs = require('fs');\n+const inquirer = require('inquirer');\n+const URL = require('url-parse');\n+const handler = require('./lambda/handler');\n+const BbPromise = require('bluebird');\n+const scriptBuilder = require('./script-builder');\n+\n+const handlerSettings = handler.impl.getSettings({});\n+\n+const impl = {\n+  phaseQuestions: [\n+    {\n+      type: 'input',\n+      name: 'duration',\n+      message() { return `Length of the test phase #${impl.wizardScript.phases.length + 1} (in seconds)`; },\n+      default: 30,\n+      validate(value) {\n+        return value > 0 && value <= handlerSettings.maxScriptDurationInSeconds ? true :\n+          `Enter a valid phase length less than ${handlerSettings.maxScriptDurationInSeconds} seconds.`;\n+      },\n+    },\n+    {\n+      type: 'input',\n+      name: 'rate',\n+      message() { return 'Starting load (in requests per second)'; },\n+      default: 10,\n+      validate(value) {\n+        return value > 0 ? true : 'Enter a positive value for starting load.';\n+      },\n+    },\n+    {\n+      type: 'input',\n+      name: 'rampTo',\n+      message() { return 'Optional \"Ramp To\" load (in requests per second)'; },\n+      default: null,\n+      validate(value) {\n+        return value === null || value >= 0 ?\n+          true : 'Enter a positive value for ramp to load.';\n+      },\n+    },\n+    {\n+      type: 'confirm',\n+      name: 'addAnother',\n+      message: 'Add another phase?',\n+      default: false,\n+    },\n+  ],\n+  askPhase(done) {\n+    console.log();\n+    return inquirer.prompt(impl.phaseQuestions)\n+      .then((phaseAnswers) => {\n+        impl.wizardScript.phases.push(phaseAnswers);\n+\n+        if (phaseAnswers.addAnother) {\n+          impl.askPhase(done);\n+        } else {\n+          done();\n+        }\n+      });\n+  },\n+  phaseWizard() {\n+    return impl.wizardLoop(impl.askPhase);\n+  },\n+  requestQuestions: [\n+    {\n+      type: 'list',\n+      name: 'verb',\n+      message() { return `HTTP verb for request #${impl.wizardScript.requests.length + 1}`; },\n+      choices: [\n+        'GET',\n+        'POST',\n+        new inquirer.Separator(),\n+        'PUT',\n+        'DELETE',\n+      ],\n+      filter(value) { return value.toLowerCase(); },\n+    },\n+    {\n+      type: 'input',\n+      name: 'path',\n+      default: '/',\n+      message() { return `Url path (may include query) from ${impl.wizardScript.endpoint}`; },\n+    },\n+    {\n+      type: 'list',\n+      name: 'payloadType',\n+      message: 'Example payload type',\n+      choices: [\n+        'json',\n+        'body',\n+      ],\n+      when(answers) { return answers.verb === 'post' || answers.verb === 'put'; },\n+    },\n+    {\n+      type: 'confirm',\n+      name: 'addAnother',\n+      message: 'Add another scenario?',\n+      default: false,\n+    },\n+  ],\n+  askRequest(done) {\n+    console.log();\n+    return inquirer.prompt(impl.requestQuestions)\n+      .then((requestAnswers) => {\n+        impl.wizardScript.requests.push(requestAnswers);\n+\n+        if (requestAnswers.addAnother) {\n+          impl.askRequest(done);\n+        } else {\n+          done();\n+        }\n+      });\n+  },\n+  requestWizard() {\n+    return impl.wizardLoop(impl.askRequest);\n+  },\n+  wizardLoop(ask) {\n+    return new BbPromise((resolve, reject) => {\n+      try {\n+        ask(resolve);\n+      } catch (ex) {\n+        reject(ex);\n+      }\n+    });\n+  },\n+  wizardScript: {\n+    phases: [],\n+    requests: [],\n+  },\n+  wizardQuestions: [\n+    {\n+      type: 'input',\n+      name: 'filename',\n+      message: 'Name of script file to create',\n+      default: 'script.yml',\n+      validate(value) {\n+        try {\n+          if (fs.lstatSync(value).isFile()) {\n+            return `File ${value} already exists. Choose another name.`;\n+          }\n+        } catch (ex) {\n+          return true;\n+        }\n+        return true;\n+      },\n+    },\n+    {\n+      type: 'input',\n+      name: 'endpoint',\n+      message: 'Base URL to http:// or https:// endpoint',\n+      default: 'http://aws.amazon.com',\n+      validate(value) {\n+        try {\n+          const url = new URL(value);\n+\n+          const validProtocol = url.protocol === 'http:' || url.protocol === 'https:';\n+          const validPath = url.pathname === '/' || url.pathname === '';\n+\n+          if (validProtocol && validPath) {\n+            return true;\n+          }\n+        } catch (ex) {\n+          console.debug(ex);\n+        }\n+\n+        return 'Please enter a valid base URL.\\n' +\n+          'Include http:// or https:// protocol, hostname, with optional user and port.\\n' +\n+          'Do not include path or query string.';\n+      },\n+    },\n+  ],\n+  writeTestScriptFile() {\n+    const filename = impl.wizardScript.filename;\n+    const config = {\n+      target: impl.wizardScript.endpoint,\n+    };\n+    const phases = impl.wizardScript.phases;\n+    const scenarios = [{\n+      flows: [{\n+        requests: impl.wizardScript.requests,\n+      }],\n+    }];\n+    const testScript = scriptBuilder.buildScript(config, phases, scenarios);\n+\n+    fs.writeFileSync(filename, testScript);\n+  },\n+  scriptWizard(resolve, reject) {\n+    inquirer.prompt(impl.wizardQuestions)\n+      .then((result) => {\n+        impl.wizardScript.endpoint = result.endpoint;\n+        impl.wizardScript.filename = result.filename;\n+        return impl.phaseWizard();\n+      })\n+      .then(\n+        () => impl.requestWizard()\n+      )\n+      .then(() => {\n+        impl.writeTestScriptFile();\n+\n+        console.log();\n+        console.log(`Test script written to '${impl.wizardScript.filename}'.`);\n+\n+        resolve();\n+      })\n+      .catch((error) => {\n+        reject(error);\n+      });\n+  },\n+};\n+\n+module.exports = impl;","path":"lib/script-wizard.js","position":213,"original_position":213,"commit_id":"b31025a8b464e5727caafb61fad2e12fde6aeb03","original_commit_id":"b31025a8b464e5727caafb61fad2e12fde6aeb03","user":{"login":"erikerikson","id":571200,"avatar_url":"https://avatars.githubusercontent.com/u/571200?v=3","gravatar_id":"","url":"https://api.github.com/users/erikerikson","html_url":"https://github.com/erikerikson","followers_url":"https://api.github.com/users/erikerikson/followers","following_url":"https://api.github.com/users/erikerikson/following{/other_user}","gists_url":"https://api.github.com/users/erikerikson/gists{/gist_id}","starred_url":"https://api.github.com/users/erikerikson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/erikerikson/subscriptions","organizations_url":"https://api.github.com/users/erikerikson/orgs","repos_url":"https://api.github.com/users/erikerikson/repos","events_url":"https://api.github.com/users/erikerikson/events{/privacy}","received_events_url":"https://api.github.com/users/erikerikson/received_events","type":"User","site_admin":false},"body":"I missed where this happened but there doesn't appear to be any multi-flow allowance.  The script has a scenarios array and also a flow array.  One of these has been subtracted/ignored by your wizard.  So long as that's a conscious choice, okay.","created_at":"2016-11-15T06:24:48Z","updated_at":"2016-11-15T06:26:15Z","html_url":"https://github.com/Nordstrom/serverless-artillery/pull/59#discussion_r87954458","pull_request_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/pulls/59","_links":{"self":{"href":"https://api.github.com/repos/Nordstrom/serverless-artillery/pulls/comments/87954458"},"html":{"href":"https://github.com/Nordstrom/serverless-artillery/pull/59#discussion_r87954458"},"pull_request":{"href":"https://api.github.com/repos/Nordstrom/serverless-artillery/pulls/59"}}},"pull_request":{"url":"https://api.github.com/repos/Nordstrom/serverless-artillery/pulls/59","id":93434532,"html_url":"https://github.com/Nordstrom/serverless-artillery/pull/59","diff_url":"https://github.com/Nordstrom/serverless-artillery/pull/59.diff","patch_url":"https://github.com/Nordstrom/serverless-artillery/pull/59.patch","issue_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/issues/59","number":59,"state":"open","locked":false,"title":"Add \"scriptWizard\" command and refactor our test-script generation code","user":{"login":"gwsii","id":1920378,"avatar_url":"https://avatars.githubusercontent.com/u/1920378?v=3","gravatar_id":"","url":"https://api.github.com/users/gwsii","html_url":"https://github.com/gwsii","followers_url":"https://api.github.com/users/gwsii/followers","following_url":"https://api.github.com/users/gwsii/following{/other_user}","gists_url":"https://api.github.com/users/gwsii/gists{/gist_id}","starred_url":"https://api.github.com/users/gwsii/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gwsii/subscriptions","organizations_url":"https://api.github.com/users/gwsii/orgs","repos_url":"https://api.github.com/users/gwsii/repos","events_url":"https://api.github.com/users/gwsii/events{/privacy}","received_events_url":"https://api.github.com/users/gwsii/received_events","type":"User","site_admin":false},"body":"New command that walks user through generation of a basic script test script file, allowing for any number of phases and for a single flow of http requests.\r\n\r\nProvides sample code for JSON and BODY payload for POST and PUT requests, but user must edit test script to provide actual test values.\r\n\r\nOnly a quick & dirty wizard to get a basic script.\r\n\r\nRefactored code used to build test script files and updated existing \"script\" command to use and added tests to validate script generation.\r\n\r\n","created_at":"2016-11-12T10:05:51Z","updated_at":"2016-11-15T06:26:15Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ccfb24ca5e9ef85b09963633cf3182ca23c8aeaf","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/pulls/59/commits","review_comments_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/pulls/59/comments","review_comment_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/issues/59/comments","statuses_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/statuses/b31025a8b464e5727caafb61fad2e12fde6aeb03","head":{"label":"Nordstrom:add-prompts","ref":"add-prompts","sha":"b31025a8b464e5727caafb61fad2e12fde6aeb03","user":{"login":"Nordstrom","id":2488485,"avatar_url":"https://avatars.githubusercontent.com/u/2488485?v=3","gravatar_id":"","url":"https://api.github.com/users/Nordstrom","html_url":"https://github.com/Nordstrom","followers_url":"https://api.github.com/users/Nordstrom/followers","following_url":"https://api.github.com/users/Nordstrom/following{/other_user}","gists_url":"https://api.github.com/users/Nordstrom/gists{/gist_id}","starred_url":"https://api.github.com/users/Nordstrom/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Nordstrom/subscriptions","organizations_url":"https://api.github.com/users/Nordstrom/orgs","repos_url":"https://api.github.com/users/Nordstrom/repos","events_url":"https://api.github.com/users/Nordstrom/events{/privacy}","received_events_url":"https://api.github.com/users/Nordstrom/received_events","type":"Organization","site_admin":false},"repo":{"id":65584082,"name":"serverless-artillery","full_name":"Nordstrom/serverless-artillery","owner":{"login":"Nordstrom","id":2488485,"avatar_url":"https://avatars.githubusercontent.com/u/2488485?v=3","gravatar_id":"","url":"https://api.github.com/users/Nordstrom","html_url":"https://github.com/Nordstrom","followers_url":"https://api.github.com/users/Nordstrom/followers","following_url":"https://api.github.com/users/Nordstrom/following{/other_user}","gists_url":"https://api.github.com/users/Nordstrom/gists{/gist_id}","starred_url":"https://api.github.com/users/Nordstrom/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Nordstrom/subscriptions","organizations_url":"https://api.github.com/users/Nordstrom/orgs","repos_url":"https://api.github.com/users/Nordstrom/repos","events_url":"https://api.github.com/users/Nordstrom/events{/privacy}","received_events_url":"https://api.github.com/users/Nordstrom/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Nordstrom/serverless-artillery","description":"Combine serverless with artillery and you get serverless-artillery for instant, cheap, and easy performance testing at scale.","fork":false,"url":"https://api.github.com/repos/Nordstrom/serverless-artillery","forks_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/forks","keys_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/teams","hooks_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/hooks","issue_events_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/issues/events{/number}","events_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/events","assignees_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/assignees{/user}","branches_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/branches{/branch}","tags_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/tags","blobs_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/git/refs{/sha}","trees_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/statuses/{sha}","languages_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/languages","stargazers_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/stargazers","contributors_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/contributors","subscribers_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/subscribers","subscription_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/subscription","commits_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/commits{/sha}","git_commits_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/git/commits{/sha}","comments_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/comments{/number}","issue_comment_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/issues/comments{/number}","contents_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/contents/{+path}","compare_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/merges","archive_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/downloads","issues_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/issues{/number}","pulls_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/pulls{/number}","milestones_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/milestones{/number}","notifications_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/labels{/name}","releases_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/releases{/id}","deployments_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/deployments","created_at":"2016-08-12T21:17:28Z","updated_at":"2016-11-14T20:21:01Z","pushed_at":"2016-11-14T20:59:11Z","git_url":"git://github.com/Nordstrom/serverless-artillery.git","ssh_url":"git@github.com:Nordstrom/serverless-artillery.git","clone_url":"https://github.com/Nordstrom/serverless-artillery.git","svn_url":"https://github.com/Nordstrom/serverless-artillery","homepage":"","size":165,"stargazers_count":15,"watchers_count":15,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"open_issues_count":6,"forks":2,"open_issues":6,"watchers":15,"default_branch":"master"}},"base":{"label":"Nordstrom:master","ref":"master","sha":"b832ef9ae3e404720cddc9b687a897dd913a9ab0","user":{"login":"Nordstrom","id":2488485,"avatar_url":"https://avatars.githubusercontent.com/u/2488485?v=3","gravatar_id":"","url":"https://api.github.com/users/Nordstrom","html_url":"https://github.com/Nordstrom","followers_url":"https://api.github.com/users/Nordstrom/followers","following_url":"https://api.github.com/users/Nordstrom/following{/other_user}","gists_url":"https://api.github.com/users/Nordstrom/gists{/gist_id}","starred_url":"https://api.github.com/users/Nordstrom/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Nordstrom/subscriptions","organizations_url":"https://api.github.com/users/Nordstrom/orgs","repos_url":"https://api.github.com/users/Nordstrom/repos","events_url":"https://api.github.com/users/Nordstrom/events{/privacy}","received_events_url":"https://api.github.com/users/Nordstrom/received_events","type":"Organization","site_admin":false},"repo":{"id":65584082,"name":"serverless-artillery","full_name":"Nordstrom/serverless-artillery","owner":{"login":"Nordstrom","id":2488485,"avatar_url":"https://avatars.githubusercontent.com/u/2488485?v=3","gravatar_id":"","url":"https://api.github.com/users/Nordstrom","html_url":"https://github.com/Nordstrom","followers_url":"https://api.github.com/users/Nordstrom/followers","following_url":"https://api.github.com/users/Nordstrom/following{/other_user}","gists_url":"https://api.github.com/users/Nordstrom/gists{/gist_id}","starred_url":"https://api.github.com/users/Nordstrom/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Nordstrom/subscriptions","organizations_url":"https://api.github.com/users/Nordstrom/orgs","repos_url":"https://api.github.com/users/Nordstrom/repos","events_url":"https://api.github.com/users/Nordstrom/events{/privacy}","received_events_url":"https://api.github.com/users/Nordstrom/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Nordstrom/serverless-artillery","description":"Combine serverless with artillery and you get serverless-artillery for instant, cheap, and easy performance testing at scale.","fork":false,"url":"https://api.github.com/repos/Nordstrom/serverless-artillery","forks_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/forks","keys_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/teams","hooks_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/hooks","issue_events_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/issues/events{/number}","events_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/events","assignees_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/assignees{/user}","branches_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/branches{/branch}","tags_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/tags","blobs_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/git/refs{/sha}","trees_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/statuses/{sha}","languages_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/languages","stargazers_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/stargazers","contributors_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/contributors","subscribers_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/subscribers","subscription_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/subscription","commits_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/commits{/sha}","git_commits_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/git/commits{/sha}","comments_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/comments{/number}","issue_comment_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/issues/comments{/number}","contents_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/contents/{+path}","compare_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/merges","archive_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/downloads","issues_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/issues{/number}","pulls_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/pulls{/number}","milestones_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/milestones{/number}","notifications_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/labels{/name}","releases_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/releases{/id}","deployments_url":"https://api.github.com/repos/Nordstrom/serverless-artillery/deployments","created_at":"2016-08-12T21:17:28Z","updated_at":"2016-11-14T20:21:01Z","pushed_at":"2016-11-14T20:59:11Z","git_url":"git://github.com/Nordstrom/serverless-artillery.git","ssh_url":"git@github.com:Nordstrom/serverless-artillery.git","clone_url":"https://github.com/Nordstrom/serverless-artillery.git","svn_url":"https://github.com/Nordstrom/serverless-artillery","homepage":"","size":165,"stargazers_count":15,"watchers_count":15,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"open_issues_count":6,"forks":2,"open_issues":6,"watchers":15,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Nordstrom/serverless-artillery/pulls/59"},"html":{"href":"https://github.com/Nordstrom/serverless-artillery/pull/59"},"issue":{"href":"https://api.github.com/repos/Nordstrom/serverless-artillery/issues/59"},"comments":{"href":"https://api.github.com/repos/Nordstrom/serverless-artillery/issues/59/comments"},"review_comments":{"href":"https://api.github.com/repos/Nordstrom/serverless-artillery/pulls/59/comments"},"review_comment":{"href":"https://api.github.com/repos/Nordstrom/serverless-artillery/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Nordstrom/serverless-artillery/pulls/59/commits"},"statuses":{"href":"https://api.github.com/repos/Nordstrom/serverless-artillery/statuses/b31025a8b464e5727caafb61fad2e12fde6aeb03"}}}}
{"actor":{"display_login":"erikerikson"}}