{"action":"created","comment":{"url":"https://api.github.com/repos/AmyAssist/Amy/pulls/comments/201012992","pull_request_review_id":135430037,"id":201012992,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwMTAxMjk5Mg==","diff_hunk":"@@ -38,63 +46,237 @@\n \t@Reference\n \tprivate AlarmClockLogic logic;\n \n+\t@Reference\n+\tprivate Logger logger;\n+\n+\tprivate static final String ELEMENTNOTFOUND = \"Element not found\";\n+\tprivate static final String PARAMSNOTVALID = \"Parameters not valid.\";\n+\n \t/**\n \t * Sets new alarm with this scheme: hh:mm\n-\t *\n-\t * @return true if everything went well\n+\t * \n+\t * @param params\n+\t *            words in the grammar annotation\n+\t * @return params[3], params[5]\n \t */\n-\t@Grammar(\"set alarm (at|for) # oh #\")\n+\t@Grammar(\"(set|create) alarm (at|for) # oh #\")\n \tpublic String setAlarm(String[] params) {\n-\t\tif (Integer.parseInt(params[3]) > 23 || Integer.parseInt(params[5]) > 59)\n-\t\t\treturn \"Not a valid time of day.\";\n-\n-\t\treturn this.logic.setAlarm(new String[] { params[3], params[5] });\n+\t\ttry {\n+\t\t\tAlarm alarm = this.logic.setAlarm(Integer.parseInt(params[3]), Integer.parseInt(params[5]));\n+\t\t\tCalendar time = alarm.getAlarmDate();\n+\t\t\treturn \"Alarm \" + alarm.getId() + \" set for \" + time.get(Calendar.HOUR_OF_DAY) + \":\"\n+\t\t\t\t\t+ time.get(Calendar.MINUTE);\n+\t\t} catch (IllegalArgumentException e) {\n+\t\t\tthis.logException(e);\n+\t\t\treturn PARAMSNOTVALID;\n+\t\t}\n \t}\n \n-\t@Grammar(\"set timer on # minutes\")\n+\t/**\n+\t * Sets a new timer. You can select between hours, minutes and seconds or combinate them\n+\t * \n+\t * @param params\n+\t *            words in the grammar annotation\n+\t * @return params for the timer\n+\t */\n+\t@Grammar(\"(set|create) timer (for|on) [# (hour|hours)] [# (minute|minutes)] [# (second|seconds)]\")\n \tpublic String setTimer(String[] params) {\n-\t\treturn this.logic.setAlarm(Integer.parseInt(params[3]));\n+\t\ttry {\n+\t\t\tif (params.length == 9) {\n+\t\t\t\treturn this.logic\n+\t\t\t\t\t\t.setTimer(Integer.parseInt(params[3]), Integer.parseInt(params[5]), Integer.parseInt(params[7]))\n+\t\t\t\t\t\t.toString();\n+\t\t\t} else if (params.length == 7) {\n+\t\t\t\tif (params[4].contains(\"hour\") && params[6].contains(\"minute\")) {\n+\t\t\t\t\treturn this.logic.setTimer(Integer.parseInt(params[3]), Integer.parseInt(params[5]), 0).toString();\n+\t\t\t\t} else if (params[4].contains(\"hour\") && params[6].contains(\"second\")) {\n+\n+\t\t\t\t\treturn this.logic.setTimer(Integer.parseInt(params[3]), 0, Integer.parseInt(params[5])).toString();\n+\t\t\t\t} else if (params[4].contains(\"minute\") && params[6].contains(\"second\")) {\n+\t\t\t\t\treturn this.logic.setTimer(0, Integer.parseInt(params[3]), Integer.parseInt(params[5])).toString();\n+\n+\t\t\t\t}\n+\t\t\t} else if (params.length == 5) {\n+\t\t\t\tif (params[4].contains(\"hour\")) {\n+\t\t\t\t\treturn this.logic.setTimer(Integer.parseInt(params[3]), 0, 0).toString();\n+\t\t\t\t} else if (params[4].contains(\"minute\")) {\n+\t\t\t\t\treturn this.logic.setTimer(0, Integer.parseInt(params[3]), 0).toString();\n+\t\t\t\t} else if (params[4].contains(\"second\")) {\n+\t\t\t\t\treturn this.logic.setTimer(0, 0, Integer.parseInt(params[3])).toString();\n+\t\t\t\t}\n+\t\t\t}\n+\t\t} catch (IllegalArgumentException e) {\n+\t\t\tthis.logException(e);\n+\t\t\treturn PARAMSNOTVALID;\n+\t\t}\n+\t\treturn \"Speech Command not valid.\";\n \t}\n \n+\t/**\n+\t * Resets all alarms or timers\n+\t * \n+\t * @param params\n+\t *            words in the grammar annotation\n+\t * @return resetAlarms or resetTimers\n+\t */\n \t@Grammar(\"reset (alarms|timers)\")\n \tpublic String resetAlarms(String[] params) {\n \t\tif (params[1].equals(\"alarms\"))\n \t\t\treturn this.logic.resetAlarms();\n \t\treturn this.logic.resetTimers();\n \t}\n \n+\t/**\n+\t * Deletes one specific alarm or timer\n+\t * \n+\t * @param params\n+\t *            words in the grammar annotation\n+\t * @return deleteAlarm or deleteTimer\n+\t */\n \t@Grammar(\"delete (alarm|timer) #\")\n \tpublic String deleteAlarm(String[] params) {\n-\t\tif (params[1].equals(\"alarm\"))\n-\t\t\treturn this.logic.deleteAlarm(Integer.parseInt(params[2]));\n-\t\treturn this.logic.deleteTimer(Integer.parseInt(params[2]));\n+\t\ttry {\n+\t\t\tif (params[1].equals(\"alarm\"))\n+\t\t\t\treturn this.logic.deleteAlarm(Integer.parseInt(params[2]));\n+\t\t\treturn this.logic.deleteTimer(Integer.parseInt(params[2]));\n+\t\t} catch (NoSuchElementException e) {\n+\t\t\tthis.logException(e);\n+\t\t\treturn ELEMENTNOTFOUND;\n+\t\t}\n \t}\n \n+\t/**\n+\t * deactivates one specific alarm or timer\n+\t * \n+\t * @param params\n+\t *            words in the grammar annotation\n+\t * @return deactivateAlarm or deactivateTimer\n+\t */\n \t@Grammar(\"deactivate (alarm|timer) #\")\n \tpublic String deactivateAlarm(String[] params) {\n-\t\tif (params[1].equals(\"alarm\"))\n-\t\t\treturn this.logic.deactivateAlarm(Integer.parseInt(params[2]));\n-\t\treturn this.logic.deactivateTimer(Integer.parseInt(params[2]));\n+\t\ttry {\n+\t\t\tif (params[1].equals(\"alarm\"))\n+\t\t\t\treturn this.logic.deactivateAlarm(Integer.parseInt(params[2]));\n+\t\t\treturn this.logic.deactivateTimer(Integer.parseInt(params[2]));\n+\t\t} catch (NoSuchElementException e) {\n+\t\t\tthis.logException(e);\n+\t\t\treturn ELEMENTNOTFOUND;\n+\t\t}\n+\t}\n+\n+\t/**\n+\t * Activates one specific alarm or timer\n+\t * \n+\t * @param params\n+\t *            words in the grammar annotation\n+\t * @return activateAlarm or activateTimer\n+\t */\n+\t@Grammar(\"activate (alarm|timer) #\")\n+\tpublic String activateAlarm(String[] params) {\n+\t\ttry {\n+\t\t\tif (params[1].equals(\"alarm\"))\n+\t\t\t\treturn this.logic.activateAlarm(Integer.parseInt(params[2]));\n+\t\t\treturn this.logic.activateTimer(Integer.parseInt(params[2]));\n+\t\t} catch (NoSuchElementException e) {\n+\t\t\tthis.logException(e);\n+\t\t\treturn ELEMENTNOTFOUND;\n+\t\t}\n \t}\n \n+\t/**\n+\t * gets one specific alarm or timer\n+\t * \n+\t * @param params\n+\t *            words in the grammar annotation\n+\t * @return getAlarm or getTimer\n+\t */\n \t@Grammar(\"get (alarm|timer) #\")\n \tpublic String getAlarm(String[] params) {\n-\t\tif (params[1].equals(\"alarm\"))\n-\t\t\treturn this.logic.getAlarm(Integer.parseInt(params[2]));\n-\t\treturn this.logic.getTimer(Integer.parseInt(params[2]));\n+\t\ttry {\n+\t\t\tif (params[1].equals(\"alarm\"))\n+\t\t\t\treturn this.logic.getAlarm(Integer.parseInt(params[2])).toString();\n+\t\t\treturn this.logic.getTimer(Integer.parseInt(params[2])).toString();\n+\t\t} catch (NoSuchElementException e) {\n+\t\t\tthis.logException(e);\n+\t\t\treturn ELEMENTNOTFOUND;\n+\t\t}\n \t}\n \n+\t/**\n+\t * gets all alarms or timers\n+\t * \n+\t * @param params\n+\t *            words in the grammar annotation\n+\t * @return getAllAlarms or getAllTimers\n+\t */\n \t@Grammar(\"get all (alarms|timers)\")\n \tpublic String getAllAlarms(String[] params) {\n-\t\tif (params[2].equals(\"alarms\"))\n-\t\t\treturn String.join(\"\\n\", this.logic.getAllAlarms());\n-\t\treturn String.join(\"\\n\", this.logic.getAllTimers());\n+\t\tif (params[2].equals(\"alarms\")) {\n+\t\t\tList<Alarm> alarms = this.logic.getAllAlarms();\n+\t\t\tString[] stringAlarms = new String[alarms.size()];\n+\t\t\tfor (int i = 0; i < alarms.size(); i++) {\n+\t\t\t\tstringAlarms[i] = alarms.get(i).toString();\n+\t\t\t}\n+\t\t\treturn String.join(\"\\n\", stringAlarms);\n+\t\t}\n+\t\tList<Timer> timers = this.logic.getAllTimers();\n+\t\tString[] stringTimers = new String[timers.size()];\n+\t\tfor (int i = 0; i < timers.size(); i++) {\n+\t\t\tstringTimers[i] = timers.get(i).toString();\n+\t\t}\n+\t\treturn String.join(\"\\n\", stringTimers);\n \t}\n \n+\t/**\n+\t * edits a specific alarm\n+\t * \n+\t * @param params\n+\t *            words in the grammar annotation\n+\t * @return edit Alarm\n+\t */\n \t@Grammar(\"edit alarm # to # oh #\")\n \tpublic String editAlarm(String[] params) {\n-\t\tif (Integer.parseInt(params[4]) > 23 || Integer.parseInt(params[6]) > 59)\n-\t\t\treturn \"Not a valid time of day.\";\n-\t\treturn this.logic.editAlarm(Integer.parseInt(params[2]), new String[] { params[4], params[6] });\n+\t\ttry {\n+\t\t\tif (Integer.parseInt(params[4]) > 23 || Integer.parseInt(params[6]) > 59)\n+\t\t\t\treturn \"Not a valid time of day.\";\n+\t\t\treturn this.logic\n+\t\t\t\t\t.editAlarm(Integer.parseInt(params[2]), Integer.parseInt(params[4]), Integer.parseInt(params[6]))\n+\t\t\t\t\t.toString();\n+\t\t} catch (NoSuchElementException e) {\n+\t\t\tthis.logException(e);\n+\t\t\treturn ELEMENTNOTFOUND;\n+\t\t}\n+\t}\n+\n+\t/**\n+\t * Gets remaining timer delay\n+\t * \n+\t * @param params\n+\t *            words in the grammar annotation\n+\t * @return remaining timer delay\n+\t */\n+\t@Grammar(\"when (does|is) timer # (ringing|ring)\")\n+\tpublic String getRemainingTimerDelay(String[] params) {\n+\t\ttry {\n+\t\t\tint[] remDelay = this.logic.getRemainingTimerDelay(Integer.parseInt(params[3]));\n+\t\t\tif (remDelay[0] < 0 || remDelay[1] < 0 || remDelay[2] < 0) {\n+\t\t\t\treturn \"Timer will not ring!\";\n+\t\t\t}\n+\t\t\tif (remDelay[0] == 0) {\n+\t\t\t\tif (remDelay[1] == 0) {\n+\t\t\t\t\treturn \"Timer \" + params[3] + \" rings in \" + remDelay[2] + \" seconds\";","path":"plugins/alarmclock/src/main/java/de/unistuttgart/iaas/amyassist/amy/plugin/alarmclock/AlarmClockSpeech.java","position":276,"original_position":276,"commit_id":"37cc5e95e01d3443edd615d5c870d7603beb313e","original_commit_id":"37cc5e95e01d3443edd615d5c870d7603beb313e","user":{"login":"sonarcloud[bot]","id":39514782,"node_id":"MDM6Qm90Mzk1MTQ3ODI=","avatar_url":"https://avatars2.githubusercontent.com/in/12526?v=4","gravatar_id":"","url":"https://api.github.com/users/sonarcloud%5Bbot%5D","html_url":"https://github.com/apps/sonarcloud","followers_url":"https://api.github.com/users/sonarcloud%5Bbot%5D/followers","following_url":"https://api.github.com/users/sonarcloud%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/sonarcloud%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/sonarcloud%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sonarcloud%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/sonarcloud%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/sonarcloud%5Bbot%5D/repos","events_url":"https://api.github.com/users/sonarcloud%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/sonarcloud%5Bbot%5D/received_events","type":"Bot","site_admin":false},"body":"![Code Smell](https://sonarsource.github.io/sonar-github/code_smell.png 'Code Smell') Code Smell: Define a constant instead of duplicating this literal \" rings in \" 3 times. ([squid:S1192](https://sonarcloud.io/organizations/amyassist/rules#rule_key=squid%3AS1192))\n\n[See it in SonarCloud](https://sonarcloud.io/project/issues?id=de.unistuttgart.iaas.amyassist%3Aamy&pullRequest=153&issues=AWR0FmyDl6vpliCeE0RK&open=AWR0FmyDl6vpliCeE0RK)\n\n[ISSUE_KEY]: AWR0FmyDl6vpliCeE0RK","created_at":"2018-07-09T14:01:41Z","updated_at":"2018-07-09T14:01:44Z","html_url":"https://github.com/AmyAssist/Amy/pull/153#discussion_r201012992","pull_request_url":"https://api.github.com/repos/AmyAssist/Amy/pulls/153","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/AmyAssist/Amy/pulls/comments/201012992"},"html":{"href":"https://github.com/AmyAssist/Amy/pull/153#discussion_r201012992"},"pull_request":{"href":"https://api.github.com/repos/AmyAssist/Amy/pulls/153"}}},"pull_request":{"url":"https://api.github.com/repos/AmyAssist/Amy/pulls/153","id":199889005,"node_id":"MDExOlB1bGxSZXF1ZXN0MTk5ODg5MDA1","html_url":"https://github.com/AmyAssist/Amy/pull/153","diff_url":"https://github.com/AmyAssist/Amy/pull/153.diff","patch_url":"https://github.com/AmyAssist/Amy/pull/153.patch","issue_url":"https://api.github.com/repos/AmyAssist/Amy/issues/153","number":153,"state":"open","locked":false,"title":"Sprint 2","user":{"login":"Legion2","id":12752323,"node_id":"MDQ6VXNlcjEyNzUyMzIz","avatar_url":"https://avatars3.githubusercontent.com/u/12752323?v=4","gravatar_id":"","url":"https://api.github.com/users/Legion2","html_url":"https://github.com/Legion2","followers_url":"https://api.github.com/users/Legion2/followers","following_url":"https://api.github.com/users/Legion2/following{/other_user}","gists_url":"https://api.github.com/users/Legion2/gists{/gist_id}","starred_url":"https://api.github.com/users/Legion2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Legion2/subscriptions","organizations_url":"https://api.github.com/users/Legion2/orgs","repos_url":"https://api.github.com/users/Legion2/repos","events_url":"https://api.github.com/users/Legion2/events{/privacy}","received_events_url":"https://api.github.com/users/Legion2/received_events","type":"User","site_admin":false},"body":"Version 0.3.0","created_at":"2018-07-07T09:27:26Z","updated_at":"2018-07-09T14:01:45Z","closed_at":null,"merged_at":null,"merge_commit_sha":"69bf2f00d69c58707ace27957b644cd304e14392","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/AmyAssist/Amy/pulls/153/commits","review_comments_url":"https://api.github.com/repos/AmyAssist/Amy/pulls/153/comments","review_comment_url":"https://api.github.com/repos/AmyAssist/Amy/pulls/comments{/number}","comments_url":"https://api.github.com/repos/AmyAssist/Amy/issues/153/comments","statuses_url":"https://api.github.com/repos/AmyAssist/Amy/statuses/37cc5e95e01d3443edd615d5c870d7603beb313e","head":{"label":"AmyAssist:dev","ref":"dev","sha":"37cc5e95e01d3443edd615d5c870d7603beb313e","user":{"login":"AmyAssist","id":39340355,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM5MzQwMzU1","avatar_url":"https://avatars0.githubusercontent.com/u/39340355?v=4","gravatar_id":"","url":"https://api.github.com/users/AmyAssist","html_url":"https://github.com/AmyAssist","followers_url":"https://api.github.com/users/AmyAssist/followers","following_url":"https://api.github.com/users/AmyAssist/following{/other_user}","gists_url":"https://api.github.com/users/AmyAssist/gists{/gist_id}","starred_url":"https://api.github.com/users/AmyAssist/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AmyAssist/subscriptions","organizations_url":"https://api.github.com/users/AmyAssist/orgs","repos_url":"https://api.github.com/users/AmyAssist/repos","events_url":"https://api.github.com/users/AmyAssist/events{/privacy}","received_events_url":"https://api.github.com/users/AmyAssist/received_events","type":"Organization","site_admin":false},"repo":{"id":134390462,"node_id":"MDEwOlJlcG9zaXRvcnkxMzQzOTA0NjI=","name":"Amy","full_name":"AmyAssist/Amy","owner":{"login":"AmyAssist","id":39340355,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM5MzQwMzU1","avatar_url":"https://avatars0.githubusercontent.com/u/39340355?v=4","gravatar_id":"","url":"https://api.github.com/users/AmyAssist","html_url":"https://github.com/AmyAssist","followers_url":"https://api.github.com/users/AmyAssist/followers","following_url":"https://api.github.com/users/AmyAssist/following{/other_user}","gists_url":"https://api.github.com/users/AmyAssist/gists{/gist_id}","starred_url":"https://api.github.com/users/AmyAssist/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AmyAssist/subscriptions","organizations_url":"https://api.github.com/users/AmyAssist/orgs","repos_url":"https://api.github.com/users/AmyAssist/repos","events_url":"https://api.github.com/users/AmyAssist/events{/privacy}","received_events_url":"https://api.github.com/users/AmyAssist/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/AmyAssist/Amy","description":"Personal Assistance System","fork":false,"url":"https://api.github.com/repos/AmyAssist/Amy","forks_url":"https://api.github.com/repos/AmyAssist/Amy/forks","keys_url":"https://api.github.com/repos/AmyAssist/Amy/keys{/key_id}","collaborators_url":"https://api.github.com/repos/AmyAssist/Amy/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/AmyAssist/Amy/teams","hooks_url":"https://api.github.com/repos/AmyAssist/Amy/hooks","issue_events_url":"https://api.github.com/repos/AmyAssist/Amy/issues/events{/number}","events_url":"https://api.github.com/repos/AmyAssist/Amy/events","assignees_url":"https://api.github.com/repos/AmyAssist/Amy/assignees{/user}","branches_url":"https://api.github.com/repos/AmyAssist/Amy/branches{/branch}","tags_url":"https://api.github.com/repos/AmyAssist/Amy/tags","blobs_url":"https://api.github.com/repos/AmyAssist/Amy/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/AmyAssist/Amy/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/AmyAssist/Amy/git/refs{/sha}","trees_url":"https://api.github.com/repos/AmyAssist/Amy/git/trees{/sha}","statuses_url":"https://api.github.com/repos/AmyAssist/Amy/statuses/{sha}","languages_url":"https://api.github.com/repos/AmyAssist/Amy/languages","stargazers_url":"https://api.github.com/repos/AmyAssist/Amy/stargazers","contributors_url":"https://api.github.com/repos/AmyAssist/Amy/contributors","subscribers_url":"https://api.github.com/repos/AmyAssist/Amy/subscribers","subscription_url":"https://api.github.com/repos/AmyAssist/Amy/subscription","commits_url":"https://api.github.com/repos/AmyAssist/Amy/commits{/sha}","git_commits_url":"https://api.github.com/repos/AmyAssist/Amy/git/commits{/sha}","comments_url":"https://api.github.com/repos/AmyAssist/Amy/comments{/number}","issue_comment_url":"https://api.github.com/repos/AmyAssist/Amy/issues/comments{/number}","contents_url":"https://api.github.com/repos/AmyAssist/Amy/contents/{+path}","compare_url":"https://api.github.com/repos/AmyAssist/Amy/compare/{base}...{head}","merges_url":"https://api.github.com/repos/AmyAssist/Amy/merges","archive_url":"https://api.github.com/repos/AmyAssist/Amy/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/AmyAssist/Amy/downloads","issues_url":"https://api.github.com/repos/AmyAssist/Amy/issues{/number}","pulls_url":"https://api.github.com/repos/AmyAssist/Amy/pulls{/number}","milestones_url":"https://api.github.com/repos/AmyAssist/Amy/milestones{/number}","notifications_url":"https://api.github.com/repos/AmyAssist/Amy/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/AmyAssist/Amy/labels{/name}","releases_url":"https://api.github.com/repos/AmyAssist/Amy/releases{/id}","deployments_url":"https://api.github.com/repos/AmyAssist/Amy/deployments","created_at":"2018-05-22T09:16:34Z","updated_at":"2018-07-09T13:48:20Z","pushed_at":"2018-07-09T13:55:55Z","git_url":"git://github.com/AmyAssist/Amy.git","ssh_url":"git@github.com:AmyAssist/Amy.git","clone_url":"https://github.com/AmyAssist/Amy.git","svn_url":"https://github.com/AmyAssist/Amy","homepage":null,"size":3191,"stargazers_count":6,"watchers_count":6,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":28,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":0,"open_issues":28,"watchers":6,"default_branch":"dev"}},"base":{"label":"AmyAssist:master","ref":"master","sha":"87bc0b7922e1bf1a58ede83827fde2d1320a1c40","user":{"login":"AmyAssist","id":39340355,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM5MzQwMzU1","avatar_url":"https://avatars0.githubusercontent.com/u/39340355?v=4","gravatar_id":"","url":"https://api.github.com/users/AmyAssist","html_url":"https://github.com/AmyAssist","followers_url":"https://api.github.com/users/AmyAssist/followers","following_url":"https://api.github.com/users/AmyAssist/following{/other_user}","gists_url":"https://api.github.com/users/AmyAssist/gists{/gist_id}","starred_url":"https://api.github.com/users/AmyAssist/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AmyAssist/subscriptions","organizations_url":"https://api.github.com/users/AmyAssist/orgs","repos_url":"https://api.github.com/users/AmyAssist/repos","events_url":"https://api.github.com/users/AmyAssist/events{/privacy}","received_events_url":"https://api.github.com/users/AmyAssist/received_events","type":"Organization","site_admin":false},"repo":{"id":134390462,"node_id":"MDEwOlJlcG9zaXRvcnkxMzQzOTA0NjI=","name":"Amy","full_name":"AmyAssist/Amy","owner":{"login":"AmyAssist","id":39340355,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM5MzQwMzU1","avatar_url":"https://avatars0.githubusercontent.com/u/39340355?v=4","gravatar_id":"","url":"https://api.github.com/users/AmyAssist","html_url":"https://github.com/AmyAssist","followers_url":"https://api.github.com/users/AmyAssist/followers","following_url":"https://api.github.com/users/AmyAssist/following{/other_user}","gists_url":"https://api.github.com/users/AmyAssist/gists{/gist_id}","starred_url":"https://api.github.com/users/AmyAssist/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AmyAssist/subscriptions","organizations_url":"https://api.github.com/users/AmyAssist/orgs","repos_url":"https://api.github.com/users/AmyAssist/repos","events_url":"https://api.github.com/users/AmyAssist/events{/privacy}","received_events_url":"https://api.github.com/users/AmyAssist/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/AmyAssist/Amy","description":"Personal Assistance System","fork":false,"url":"https://api.github.com/repos/AmyAssist/Amy","forks_url":"https://api.github.com/repos/AmyAssist/Amy/forks","keys_url":"https://api.github.com/repos/AmyAssist/Amy/keys{/key_id}","collaborators_url":"https://api.github.com/repos/AmyAssist/Amy/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/AmyAssist/Amy/teams","hooks_url":"https://api.github.com/repos/AmyAssist/Amy/hooks","issue_events_url":"https://api.github.com/repos/AmyAssist/Amy/issues/events{/number}","events_url":"https://api.github.com/repos/AmyAssist/Amy/events","assignees_url":"https://api.github.com/repos/AmyAssist/Amy/assignees{/user}","branches_url":"https://api.github.com/repos/AmyAssist/Amy/branches{/branch}","tags_url":"https://api.github.com/repos/AmyAssist/Amy/tags","blobs_url":"https://api.github.com/repos/AmyAssist/Amy/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/AmyAssist/Amy/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/AmyAssist/Amy/git/refs{/sha}","trees_url":"https://api.github.com/repos/AmyAssist/Amy/git/trees{/sha}","statuses_url":"https://api.github.com/repos/AmyAssist/Amy/statuses/{sha}","languages_url":"https://api.github.com/repos/AmyAssist/Amy/languages","stargazers_url":"https://api.github.com/repos/AmyAssist/Amy/stargazers","contributors_url":"https://api.github.com/repos/AmyAssist/Amy/contributors","subscribers_url":"https://api.github.com/repos/AmyAssist/Amy/subscribers","subscription_url":"https://api.github.com/repos/AmyAssist/Amy/subscription","commits_url":"https://api.github.com/repos/AmyAssist/Amy/commits{/sha}","git_commits_url":"https://api.github.com/repos/AmyAssist/Amy/git/commits{/sha}","comments_url":"https://api.github.com/repos/AmyAssist/Amy/comments{/number}","issue_comment_url":"https://api.github.com/repos/AmyAssist/Amy/issues/comments{/number}","contents_url":"https://api.github.com/repos/AmyAssist/Amy/contents/{+path}","compare_url":"https://api.github.com/repos/AmyAssist/Amy/compare/{base}...{head}","merges_url":"https://api.github.com/repos/AmyAssist/Amy/merges","archive_url":"https://api.github.com/repos/AmyAssist/Amy/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/AmyAssist/Amy/downloads","issues_url":"https://api.github.com/repos/AmyAssist/Amy/issues{/number}","pulls_url":"https://api.github.com/repos/AmyAssist/Amy/pulls{/number}","milestones_url":"https://api.github.com/repos/AmyAssist/Amy/milestones{/number}","notifications_url":"https://api.github.com/repos/AmyAssist/Amy/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/AmyAssist/Amy/labels{/name}","releases_url":"https://api.github.com/repos/AmyAssist/Amy/releases{/id}","deployments_url":"https://api.github.com/repos/AmyAssist/Amy/deployments","created_at":"2018-05-22T09:16:34Z","updated_at":"2018-07-09T13:48:20Z","pushed_at":"2018-07-09T13:55:55Z","git_url":"git://github.com/AmyAssist/Amy.git","ssh_url":"git@github.com:AmyAssist/Amy.git","clone_url":"https://github.com/AmyAssist/Amy.git","svn_url":"https://github.com/AmyAssist/Amy","homepage":null,"size":3191,"stargazers_count":6,"watchers_count":6,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":28,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":0,"open_issues":28,"watchers":6,"default_branch":"dev"}},"_links":{"self":{"href":"https://api.github.com/repos/AmyAssist/Amy/pulls/153"},"html":{"href":"https://github.com/AmyAssist/Amy/pull/153"},"issue":{"href":"https://api.github.com/repos/AmyAssist/Amy/issues/153"},"comments":{"href":"https://api.github.com/repos/AmyAssist/Amy/issues/153/comments"},"review_comments":{"href":"https://api.github.com/repos/AmyAssist/Amy/pulls/153/comments"},"review_comment":{"href":"https://api.github.com/repos/AmyAssist/Amy/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/AmyAssist/Amy/pulls/153/commits"},"statuses":{"href":"https://api.github.com/repos/AmyAssist/Amy/statuses/37cc5e95e01d3443edd615d5c870d7603beb313e"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"sonarcloud"}}