{"action":"created","comment":{"url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/pulls/comments/211119629","pull_request_review_id":147475018,"id":211119629,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxMTExOTYyOQ==","diff_hunk":"@@ -111,15 +110,34 @@ public static Path getFilePath(Path directoryPath, String fileName) throws IOExc\n         return filePath;\n     }\n \n-    /**\n-     * Gets the Path of a specified file, without creating it\n-     *\n-     * @param directoryPath The {@link Path} of the file's parent directory\n-     * @param fileName      The name of the file\n-     * @return The Path of the file\n-     * @throws IOException\n-     */\n-    public static Path resolveFilePath(Path directoryPath, String fileName) throws IOException {\n-        return Paths.get(directoryPath.toString(), fileName);\n+    static void usingPath(Path path, PathRW pathRW) throws IOException {\n+        try (Reader reader = getReader(path);\n+             Writer writer = getWriter(path)) {\n+            pathRW.useFile(reader, writer);\n+        }\n+    }\n+\n+    public interface PathRW {\n+        void useFile(Reader reader, Writer writer) throws IOException;\n+    }\n+\n+    static <T> T readingPath(Path path, PathR<T> pathR) throws IOException {\n+        try (Reader reader = getReader(path)) {\n+            return pathR.useFile(reader);\n+        }\n+    }\n+\n+    public interface PathR<T> {\n+        T useFile(Reader reader) throws IOException;\n+    }\n+\n+    static void writingPath(Path path, PathW pathW) throws IOException {\n+        try (Writer writer = getWriter(path)) {\n+            pathW.useFile(writer);\n+        }\n+    }\n+\n+    public interface PathW {\n+        void useFile(Writer writer) throws IOException;","path":"src/main/java/com/okta/tools/helpers/FileHelper.java","position":164,"original_position":164,"commit_id":"87f90ac171ae3888d6681bc2b5c0781433353a34","original_commit_id":"87f90ac171ae3888d6681bc2b5c0781433353a34","user":{"login":"AlainODea","id":16341,"node_id":"MDQ6VXNlcjE2MzQx","avatar_url":"https://avatars1.githubusercontent.com/u/16341?v=4","gravatar_id":"","url":"https://api.github.com/users/AlainODea","html_url":"https://github.com/AlainODea","followers_url":"https://api.github.com/users/AlainODea/followers","following_url":"https://api.github.com/users/AlainODea/following{/other_user}","gists_url":"https://api.github.com/users/AlainODea/gists{/gist_id}","starred_url":"https://api.github.com/users/AlainODea/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AlainODea/subscriptions","organizations_url":"https://api.github.com/users/AlainODea/orgs","repos_url":"https://api.github.com/users/AlainODea/repos","events_url":"https://api.github.com/users/AlainODea/events{/privacy}","received_events_url":"https://api.github.com/users/AlainODea/received_events","type":"User","site_admin":false},"body":"❓ I'm not sure I love the names of these utility methods or interfaces, but I couldn't come up with anything better. I like the outcome in code tho.","created_at":"2018-08-19T23:51:00Z","updated_at":"2018-08-19T23:51:44Z","html_url":"https://github.com/oktadeveloper/okta-aws-cli-assume-role/pull/183#discussion_r211119629","pull_request_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/pulls/183","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/pulls/comments/211119629"},"html":{"href":"https://github.com/oktadeveloper/okta-aws-cli-assume-role/pull/183#discussion_r211119629"},"pull_request":{"href":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/pulls/183"}}},"pull_request":{"url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/pulls/183","id":209385882,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA5Mzg1ODgy","html_url":"https://github.com/oktadeveloper/okta-aws-cli-assume-role/pull/183","diff_url":"https://github.com/oktadeveloper/okta-aws-cli-assume-role/pull/183.diff","patch_url":"https://github.com/oktadeveloper/okta-aws-cli-assume-role/pull/183.patch","issue_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/issues/183","number":183,"state":"open","locked":false,"title":":bug: Correctly handle nested configs","user":{"login":"AlainODea","id":16341,"node_id":"MDQ6VXNlcjE2MzQx","avatar_url":"https://avatars1.githubusercontent.com/u/16341?v=4","gravatar_id":"","url":"https://api.github.com/users/AlainODea","html_url":"https://github.com/AlainODea","followers_url":"https://api.github.com/users/AlainODea/followers","following_url":"https://api.github.com/users/AlainODea/following{/other_user}","gists_url":"https://api.github.com/users/AlainODea/gists{/gist_id}","starred_url":"https://api.github.com/users/AlainODea/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AlainODea/subscriptions","organizations_url":"https://api.github.com/users/AlainODea/orgs","repos_url":"https://api.github.com/users/AlainODea/repos","events_url":"https://api.github.com/users/AlainODea/events{/privacy}","received_events_url":"https://api.github.com/users/AlainODea/received_events","type":"User","site_admin":false},"body":"Problem Statement\r\n-----------------\r\n\r\nIssue #141 states:\r\n> Existing `~/.aws/config` with nested properties are overwritten improperly by this tool.\r\n> For example, `s3` configuration uses [indentation for its properties](https://docs.aws.amazon.com/cli/latest/topic/s3-config.html) e.g.\r\n> ```\r\n> [profile development]\r\n> aws_access_key_id=foo\r\n> aws_secret_access_key=bar\r\n> s3 =\r\n>   max_concurrent_requests = 20\r\n>   max_queue_size = 10000\r\n> ```\r\n> When `awscli` is run, the `config` is written out like so:\r\n> ```\r\n> [profile development]\r\n> aws_access_key_id=foo\r\n> aws_secret_access_key=bar\r\n> s3 =\r\n> max_concurrent_requests = 20\r\n> max_queue_size = 10000\r\n> ```\r\n> which is not correctly read by `aws s3` commands!\r\n> \r\n> Specifically, the following test https://github.com/oktadeveloper/okta-aws-cli-assume-role/blob/054c45c5b0b58195db45bd25b528c0436331d7ed/src/test/java/com/okta/tools/aws/settings/ConfigurationTest.java#L110-L130 if modified to contain s3 keys as follows:\r\n> ```java\r\n>     @Test\r\n>     void addOrUpdateProfileToExistingProfile() throws IOException {\r\n>         final String existingCombined = manualRole + \"\\n\"\r\n>                 + \"s3 =\\n\"\r\n>                 + \"    max_queue_size = 1000\" + \"\\n\\n\" + existingProfile;\r\n> \r\n>         final StringReader configurationReader = new StringReader(existingCombined);\r\n>         final StringWriter configurationWriter = new StringWriter();\r\n>         final Configuration configuration = new Configuration(configurationReader);\r\n> \r\n>         final String updatedPrefix = \"updated_\";\r\n>         final String expected = \"[profile \" + profileName + \"]\\n\"\r\n>                 + Configuration.ROLE_ARN + \" = \" + updatedPrefix + role_arn + \"\\n\"\r\n>                 + SOURCE_PROFILE + \" = \" + profileName + \"_source\\n\"\r\n>                 + Configuration.REGION + \" = \" + region + \"\\n\"\r\n>                 + \"s3 =\\n\"\r\n>                 + \"    max_queue_size = 1000\"\r\n>                 + \"\\n\\n\" + existingProfile;\r\n> \r\n> \r\n>         configuration.addOrUpdateProfile(profileName, updatedPrefix + role_arn);\r\n>         configuration.save(configurationWriter);\r\n> \r\n>         String given = StringUtils.remove(configurationWriter.toString().trim(), '\\r');\r\n> \r\n>         assertEquals(expected, given);\r\n>     }\r\n> ```\r\n> will not pass.\r\n\r\nSolution\r\n--------\r\n - Add Apache Commons Configuration2\r\n\r\n - Adapt configuration2's INIConfiguration to support AWS quirks\r\n\r\n - Remove Ini4j (unmaintained, has park page for website)\r\n\r\n - Refactor file handling code\r\n\r\nResolves #141\r\n\r\nApologies for the extensiveness of this change. The configuration\r\nhandling likely needs a refactor to make it easier to support future\r\nmodification.","created_at":"2018-08-19T23:33:26Z","updated_at":"2018-08-19T23:51:44Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ebb6dda61cf90c0f01e20d80bfcec688003635d9","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/pulls/183/commits","review_comments_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/pulls/183/comments","review_comment_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/pulls/comments{/number}","comments_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/issues/183/comments","statuses_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/statuses/87f90ac171ae3888d6681bc2b5c0781433353a34","head":{"label":"AlainODea:ao-BUG-breaks-nested-config","ref":"ao-BUG-breaks-nested-config","sha":"87f90ac171ae3888d6681bc2b5c0781433353a34","user":{"login":"AlainODea","id":16341,"node_id":"MDQ6VXNlcjE2MzQx","avatar_url":"https://avatars1.githubusercontent.com/u/16341?v=4","gravatar_id":"","url":"https://api.github.com/users/AlainODea","html_url":"https://github.com/AlainODea","followers_url":"https://api.github.com/users/AlainODea/followers","following_url":"https://api.github.com/users/AlainODea/following{/other_user}","gists_url":"https://api.github.com/users/AlainODea/gists{/gist_id}","starred_url":"https://api.github.com/users/AlainODea/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AlainODea/subscriptions","organizations_url":"https://api.github.com/users/AlainODea/orgs","repos_url":"https://api.github.com/users/AlainODea/repos","events_url":"https://api.github.com/users/AlainODea/events{/privacy}","received_events_url":"https://api.github.com/users/AlainODea/received_events","type":"User","site_admin":false},"repo":{"id":86876992,"node_id":"MDEwOlJlcG9zaXRvcnk4Njg3Njk5Mg==","name":"okta-aws-cli-assume-role","full_name":"AlainODea/okta-aws-cli-assume-role","owner":{"login":"AlainODea","id":16341,"node_id":"MDQ6VXNlcjE2MzQx","avatar_url":"https://avatars1.githubusercontent.com/u/16341?v=4","gravatar_id":"","url":"https://api.github.com/users/AlainODea","html_url":"https://github.com/AlainODea","followers_url":"https://api.github.com/users/AlainODea/followers","following_url":"https://api.github.com/users/AlainODea/following{/other_user}","gists_url":"https://api.github.com/users/AlainODea/gists{/gist_id}","starred_url":"https://api.github.com/users/AlainODea/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AlainODea/subscriptions","organizations_url":"https://api.github.com/users/AlainODea/orgs","repos_url":"https://api.github.com/users/AlainODea/repos","events_url":"https://api.github.com/users/AlainODea/events{/privacy}","received_events_url":"https://api.github.com/users/AlainODea/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/AlainODea/okta-aws-cli-assume-role","description":"Okta AWS CLI Assume Role Tool","fork":true,"url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role","forks_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/forks","keys_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/keys{/key_id}","collaborators_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/teams","hooks_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/hooks","issue_events_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/issues/events{/number}","events_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/events","assignees_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/assignees{/user}","branches_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/branches{/branch}","tags_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/tags","blobs_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/git/refs{/sha}","trees_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/git/trees{/sha}","statuses_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/statuses/{sha}","languages_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/languages","stargazers_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/stargazers","contributors_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/contributors","subscribers_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/subscribers","subscription_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/subscription","commits_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/commits{/sha}","git_commits_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/git/commits{/sha}","comments_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/comments{/number}","issue_comment_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/issues/comments{/number}","contents_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/contents/{+path}","compare_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/compare/{base}...{head}","merges_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/merges","archive_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/downloads","issues_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/issues{/number}","pulls_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/pulls{/number}","milestones_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/milestones{/number}","notifications_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/labels{/name}","releases_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/releases{/id}","deployments_url":"https://api.github.com/repos/AlainODea/okta-aws-cli-assume-role/deployments","created_at":"2017-04-01T02:34:18Z","updated_at":"2018-08-19T17:48:11Z","pushed_at":"2018-08-19T23:31:50Z","git_url":"git://github.com/AlainODea/okta-aws-cli-assume-role.git","ssh_url":"git@github.com:AlainODea/okta-aws-cli-assume-role.git","clone_url":"https://github.com/AlainODea/okta-aws-cli-assume-role.git","svn_url":"https://github.com/AlainODea/okta-aws-cli-assume-role","homepage":null,"size":349,"stargazers_count":0,"watchers_count":0,"language":"HTML","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"oktadeveloper:master","ref":"master","sha":"12c8e2d1e009eb83c2d6bea2e50330d10d2ed25b","user":{"login":"oktadeveloper","id":13510430,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNTEwNDMw","avatar_url":"https://avatars0.githubusercontent.com/u/13510430?v=4","gravatar_id":"","url":"https://api.github.com/users/oktadeveloper","html_url":"https://github.com/oktadeveloper","followers_url":"https://api.github.com/users/oktadeveloper/followers","following_url":"https://api.github.com/users/oktadeveloper/following{/other_user}","gists_url":"https://api.github.com/users/oktadeveloper/gists{/gist_id}","starred_url":"https://api.github.com/users/oktadeveloper/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oktadeveloper/subscriptions","organizations_url":"https://api.github.com/users/oktadeveloper/orgs","repos_url":"https://api.github.com/users/oktadeveloper/repos","events_url":"https://api.github.com/users/oktadeveloper/events{/privacy}","received_events_url":"https://api.github.com/users/oktadeveloper/received_events","type":"Organization","site_admin":false},"repo":{"id":60885042,"node_id":"MDEwOlJlcG9zaXRvcnk2MDg4NTA0Mg==","name":"okta-aws-cli-assume-role","full_name":"oktadeveloper/okta-aws-cli-assume-role","owner":{"login":"oktadeveloper","id":13510430,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNTEwNDMw","avatar_url":"https://avatars0.githubusercontent.com/u/13510430?v=4","gravatar_id":"","url":"https://api.github.com/users/oktadeveloper","html_url":"https://github.com/oktadeveloper","followers_url":"https://api.github.com/users/oktadeveloper/followers","following_url":"https://api.github.com/users/oktadeveloper/following{/other_user}","gists_url":"https://api.github.com/users/oktadeveloper/gists{/gist_id}","starred_url":"https://api.github.com/users/oktadeveloper/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oktadeveloper/subscriptions","organizations_url":"https://api.github.com/users/oktadeveloper/orgs","repos_url":"https://api.github.com/users/oktadeveloper/repos","events_url":"https://api.github.com/users/oktadeveloper/events{/privacy}","received_events_url":"https://api.github.com/users/oktadeveloper/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/oktadeveloper/okta-aws-cli-assume-role","description":"Okta AWS CLI Assume Role Tool","fork":false,"url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role","forks_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/forks","keys_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/keys{/key_id}","collaborators_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/teams","hooks_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/hooks","issue_events_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/issues/events{/number}","events_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/events","assignees_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/assignees{/user}","branches_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/branches{/branch}","tags_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/tags","blobs_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/git/refs{/sha}","trees_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/git/trees{/sha}","statuses_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/statuses/{sha}","languages_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/languages","stargazers_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/stargazers","contributors_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/contributors","subscribers_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/subscribers","subscription_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/subscription","commits_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/commits{/sha}","git_commits_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/git/commits{/sha}","comments_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/comments{/number}","issue_comment_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/issues/comments{/number}","contents_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/contents/{+path}","compare_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/compare/{base}...{head}","merges_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/merges","archive_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/downloads","issues_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/issues{/number}","pulls_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/pulls{/number}","milestones_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/milestones{/number}","notifications_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/labels{/name}","releases_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/releases{/id}","deployments_url":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/deployments","created_at":"2016-06-11T01:02:30Z","updated_at":"2018-08-17T19:10:22Z","pushed_at":"2018-08-19T23:33:27Z","git_url":"git://github.com/oktadeveloper/okta-aws-cli-assume-role.git","ssh_url":"git@github.com:oktadeveloper/okta-aws-cli-assume-role.git","clone_url":"https://github.com/oktadeveloper/okta-aws-cli-assume-role.git","svn_url":"https://github.com/oktadeveloper/okta-aws-cli-assume-role","homepage":null,"size":343,"stargazers_count":82,"watchers_count":82,"language":"HTML","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":68,"mirror_url":null,"archived":false,"open_issues_count":22,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":68,"open_issues":22,"watchers":82,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/pulls/183"},"html":{"href":"https://github.com/oktadeveloper/okta-aws-cli-assume-role/pull/183"},"issue":{"href":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/issues/183"},"comments":{"href":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/issues/183/comments"},"review_comments":{"href":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/pulls/183/comments"},"review_comment":{"href":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/pulls/183/commits"},"statuses":{"href":"https://api.github.com/repos/oktadeveloper/okta-aws-cli-assume-role/statuses/87f90ac171ae3888d6681bc2b5c0781433353a34"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"AlainODea"}}