{"action":"created","comment":{"url":"https://api.github.com/repos/ansible/ansible/pulls/comments/100087258","pull_request_review_id":20781847,"id":100087258,"diff_hunk":"@@ -0,0 +1,2373 @@\n+#!/usr/bin/python\n+#\n+# PubNub Real-time Cloud-Hosted Push API and Push Notification Client Frameworks\n+# Copyright (C) 2016 PubNub Inc.\n+# http://www.pubnub.com/\n+# http://www.pubnub.com/terms\n+#\n+# This program is free software: you can redistribute it and/or modify\n+# it under the terms of the GNU General Public License as published by\n+# the Free Software Foundation, either version 3 of the License, or\n+# (at your option) any later version.\n+#\n+# This program is distributed in the hope that it will be useful,\n+# but WITHOUT ANY WARRANTY; without even the implied warranty of\n+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n+# GNU General Public License for more details.\n+#\n+# You should have received a copy of the GNU General Public License\n+# along with this program.  If not, see <http://www.gnu.org/licenses/>.\n+\n+\n+ANSIBLE_METADATA = {'status': ['preview'],\n+                    'supported_by': 'committer',\n+                    'version': '1.0'}\n+\n+\n+DOCUMENTATION = '''\n+---\n+module: pubnub_blocks\n+version_added: '2.2'\n+short_description: PubNub blocks management module.\n+description:\n+  - \"This module allows Ansible to interface with the PubNub BLOCKS infrastructure with functionality to create, remove, start, stop rename blocks and create,\n+  modify and remove event handlers\"\n+author:\n+  - PubNub <support@pubnub.com> (@pubnub)\n+  - Sergey Mamontov <sergey@pubnub.com> (@parfeon)\n+requirements:\n+  - \"python >= 2.7\"\n+options:\n+  email:\n+    description:\n+      - Email from account for which new session should be started.\n+      - Not required if C(cache) contains result of previous module call (in same play).\n+    required: false\n+  password:\n+    description:\n+      - Password which match to account to which specified C(email) belong.\n+      - Not required if C(cache) contains result of previous module call (in same play).\n+    required: false\n+  cache:\n+    description: >\n+       In case if single play use blocks management module few times it is preferred to enabled \\'caching\\' by making previous module to share gathered\n+       artifacts and pass them to this parameter.\n+    required: false\n+    default: {}\n+  application:\n+    description:\n+      - Name of target PubNub application for which blocks configuration on specific C(keyset) will be done.\n+    required: true\n+  keyset:\n+    description:\n+      - Name of application\\'s keys set which is bound to managed blocks.\n+    required: true\n+  state:\n+    description:\n+      - Intended block state after event handlers creation / update process will be completed.\n+    required: false\n+    default: \\'start\\'\n+    choices: [\\'start\\', \\'stop\\', \\'present\\', \\'absent\\']\n+  name:\n+    description:\n+      - Name of managed block which will be later visible on admin.pubnub.com.\n+    required: true\n+  description:\n+    description:\n+        - \"Short block description which will be later visible on admin.pubnub.com. Used only if block doesn\\'t exists and won\\'t change description for\n+        existing block.\"\n+    required: false\n+    default: \\'New block\\'\n+  event_handlers:\n+    description:\n+      - List of event handlers which should be updated for specified block C(name).\n+      - \"Each entry for new event handler should contain: C(name), C(src), C(channels), C(event). C(name) used as event handler name which can be used later to\n+      make changes to it.\"\n+      - C(src) is full path to file with event handler code.\n+      - C(channels) is name of channel from which event handler is waiting for events.\n+      - \"C(event) is type of event which is able to trigger event handler: I(js-before-publish), I(js-after-publish), I(js-after-presence).\"\n+      - \"Each entry for existing handlers should contain C(name) (so target handler can be identified). Rest parameters (C(src), C(channels) and C(event)) can\n+      be added if changes required for them.\"\n+      - \"It is possible to rename event handler by adding C(changes) key to event handler payload and pass dictionary, which will contain single key C(name),\n+      where new name should be passed.\"\n+      - To remove particular event handler it is possible to set C(state) for it to C(absent) and it will be removed.\n+    required: false\n+    default: []\n+  changes:\n+    description:\n+      - List of fields which should be changed by block itself (doesn\\'t affect any event handlers).\n+      - \"Possible options for change is: C(name).\"\n+    required: false\n+    default: {}\n+  validate_certs:\n+    description:\n+      - \"This key allow to try skip certificates check when performing REST API calls. Sometimes host may have issues with certificates on it and this will\n+      cause problems to call PubNub REST API.\"\n+      - If check should be ignored C(False) should be passed to this parameter.\n+    required: false\n+    default: true\n+'''\n+\n+EXAMPLES = '''\n+# Event handler create example.\n+- name: Create single event handler\n+  pubnub_blocks:\n+    email: '{{ email }}'\n+    password: '{{ password }}'\n+    application: '{{ app_name }}'\n+    keyset: '{{ keyset_name }}'\n+    name: '{{ block_name }}'\n+    event_handlers:\n+      -\n+        src: '{{ path_to_handler_source }}'\n+        name: '{{ handler_name }}'\n+        event: 'js-before-publish'\n+        channels: '{{ handler_channel }}'\n+\n+# Change event handler trigger event type.\n+- name: Change event handler 'event'\n+  pubnub_blocks:\n+    email: '{{ email }}'\n+    password: '{{ password }}'\n+    application: '{{ app_name }}'\n+    keyset: '{{ keyset_name }}'\n+    name: '{{ block_name }}'\n+    event_handlers:\n+      -\n+        name: '{{ handler_name }}'\n+        event: 'js-after-publish'\n+\n+# Stop block and event handlers.\n+- name: Stopping block\n+  pubnub_blocks:\n+    email: '{{ email }}'\n+    password: '{{ password }}'\n+    application: '{{ app_name }}'\n+    keyset: '{{ keyset_name }}'\n+    name: '{{ block_name }}'\n+    state: stop\n+\n+# Multiple module calls with cached result passing\n+- name: Create '{{ block_name }}' block\n+      register: module_cache\n+      pubnub_blocks:\n+        email: '{{ email }}'\n+        password: '{{ password }}'\n+        application: '{{ app_name }}'\n+        keyset: '{{ keyset_name }}'\n+        name: '{{ block_name }}'\n+        state: present\n+    - name: Add '{{ event_handler_1_name }}' event handler to '{{ block_name }}'\n+      register: module_cache\n+      pubnub_blocks:\n+        cache: '{{ module_cache }}'\n+        application: '{{ app_name }}'\n+        keyset: '{{ keyset_name }}'\n+        name: '{{ block_name }}'\n+        state: present\n+        event_handlers:\n+          -\n+            src: '{{ path_to_handler_1_source }}'\n+            name: '{{ event_handler_1_name }}'\n+            channels: '{{ event_handler_1_channel }}'\n+            event: 'js-before-publish'\n+    - name: Add '{{ event_handler_2_name }}' event handler to '{{ block_name }}'\n+      register: module_cache\n+      pubnub_blocks:\n+        cache: '{{ module_cache }}'\n+        application: '{{ app_name }}'\n+        keyset: '{{ keyset_name }}'\n+        name: '{{ block_name }}'\n+        state: present\n+        event_handlers:\n+          -\n+            src: '{{ path_to_handler_2_source }}'\n+            name: '{{ event_handler_2_name }}'\n+            channels: '{{ event_handler_2_channel }}'\n+            event: 'js-before-publish'\n+    - name: Start '{{ block_name }}' block\n+      register: module_cache\n+      pubnub_blocks:\n+        cache: '{{ module_cache }}'\n+        application: '{{ app_name }}'\n+        keyset: '{{ keyset_name }}'\n+        name: '{{ block_name }}'\n+        state: start\n+'''\n+\n+RETURN = '''\n+module_cache:","path":"lib/ansible/modules/cloud/pubnub/pubnub_blocks.py","position":199,"original_position":199,"commit_id":"609485c8fa24071f797f5f822b267ab7083917af","original_commit_id":"609485c8fa24071f797f5f822b267ab7083917af","user":{"login":"ryansb","id":636610,"avatar_url":"https://avatars.githubusercontent.com/u/636610?v=3","gravatar_id":"","url":"https://api.github.com/users/ryansb","html_url":"https://github.com/ryansb","followers_url":"https://api.github.com/users/ryansb/followers","following_url":"https://api.github.com/users/ryansb/following{/other_user}","gists_url":"https://api.github.com/users/ryansb/gists{/gist_id}","starred_url":"https://api.github.com/users/ryansb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ryansb/subscriptions","organizations_url":"https://api.github.com/users/ryansb/orgs","repos_url":"https://api.github.com/users/ryansb/repos","events_url":"https://api.github.com/users/ryansb/events{/privacy}","received_events_url":"https://api.github.com/users/ryansb/received_events","type":"User","site_admin":false},"body":"Instead of module_cache, can you name this something like \"auth_cache\" or \"credentials_cache\" since it seems to only contain account information? ","created_at":"2017-02-08T15:14:40Z","updated_at":"2017-02-08T15:45:26Z","html_url":"https://github.com/ansible/ansible/pull/20200#discussion_r100087258","pull_request_url":"https://api.github.com/repos/ansible/ansible/pulls/20200","_links":{"self":{"href":"https://api.github.com/repos/ansible/ansible/pulls/comments/100087258"},"html":{"href":"https://github.com/ansible/ansible/pull/20200#discussion_r100087258"},"pull_request":{"href":"https://api.github.com/repos/ansible/ansible/pulls/20200"}}},"pull_request":{"url":"https://api.github.com/repos/ansible/ansible/pulls/20200","id":101358963,"html_url":"https://github.com/ansible/ansible/pull/20200","diff_url":"https://github.com/ansible/ansible/pull/20200.diff","patch_url":"https://github.com/ansible/ansible/pull/20200.patch","issue_url":"https://api.github.com/repos/ansible/ansible/issues/20200","number":20200,"state":"open","locked":false,"title":"Add PubNub BLOCKS management module","user":{"login":"parfeon","id":794617,"avatar_url":"https://avatars.githubusercontent.com/u/794617?v=3","gravatar_id":"","url":"https://api.github.com/users/parfeon","html_url":"https://github.com/parfeon","followers_url":"https://api.github.com/users/parfeon/followers","following_url":"https://api.github.com/users/parfeon/following{/other_user}","gists_url":"https://api.github.com/users/parfeon/gists{/gist_id}","starred_url":"https://api.github.com/users/parfeon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/parfeon/subscriptions","organizations_url":"https://api.github.com/users/parfeon/orgs","repos_url":"https://api.github.com/users/parfeon/repos","events_url":"https://api.github.com/users/parfeon/events{/privacy}","received_events_url":"https://api.github.com/users/parfeon/received_events","type":"User","site_admin":false},"body":"##### ISSUE TYPE\r\n - New Module Pull Request\r\n\r\n##### COMPONENT NAME\r\npubnub_blocks\r\n\r\n##### ANSIBLE VERSION\r\n```\r\nansible 2.2.0.0\r\n  config file = \r\n  configured module search path = ['module', 'library']\r\n```\r\n\r\n##### SUMMARY\r\nThis module allow to manage [PubNub BLOCKS](https://www.pubnub.com/products/blocks/) during automated integration process. Module allow to create and / or delete blocks along with their event handlers.  \r\nAfter block creation and event handlers configuration it is possible to run or stop block. Module usage for different purposes covered in it's header and in this [README](https://github.com/pubnub/pubnub-blocks-ansible/blob/master/README.md#module-usage).\r\nBasic usage to create block and start it:\r\n```\r\n- name: Create block with event handlers\r\n  register: module_cache\r\n  pubnub_blocks:\r\n    email: '{{ email }}'\r\n    pwd: '{{ password }}'\r\n    application: '{{ app_name }}'\r\n    keyset: '{{ keyset_name }}'\r\n    block: 'Test Block 1'\r\n    event_handlers:\r\n      -\r\n        src: 'sources/eh1.js'\r\n        name: 'Event Handler 1'\r\n        channels: 'eh-channel-1'\r\n        event: 'js-before-publish'\r\n      -\r\n        src: 'sources/eh2.js'\r\n        name: 'Event Handler 2'\r\n        channels: 'eh-channel-2'\r\n        event: 'js-before-publish'\r\n- name: Start block\r\n  pubnub_blocks:\r\n    cache: '{{ module_cache | default({}) }}'\r\n    application: '{{ app_name }}'\r\n    keyset: '{{ keyset_name }}'\r\n    block: 'Test Block 1'\r\n    state: start\r\n```\r\nModule doesn't have specific output, because all _changed_ state depends on whether any block property / state has been changed.","created_at":"2017-01-12T23:03:37Z","updated_at":"2017-02-08T15:45:26Z","closed_at":null,"merged_at":null,"merge_commit_sha":"15f8a8aadb18f6acb2d06767782012245ed1a678","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/ansible/ansible/pulls/20200/commits","review_comments_url":"https://api.github.com/repos/ansible/ansible/pulls/20200/comments","review_comment_url":"https://api.github.com/repos/ansible/ansible/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ansible/ansible/issues/20200/comments","statuses_url":"https://api.github.com/repos/ansible/ansible/statuses/609485c8fa24071f797f5f822b267ab7083917af","head":{"label":"pubnub:devel","ref":"devel","sha":"609485c8fa24071f797f5f822b267ab7083917af","user":{"login":"pubnub","id":297109,"avatar_url":"https://avatars.githubusercontent.com/u/297109?v=3","gravatar_id":"","url":"https://api.github.com/users/pubnub","html_url":"https://github.com/pubnub","followers_url":"https://api.github.com/users/pubnub/followers","following_url":"https://api.github.com/users/pubnub/following{/other_user}","gists_url":"https://api.github.com/users/pubnub/gists{/gist_id}","starred_url":"https://api.github.com/users/pubnub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pubnub/subscriptions","organizations_url":"https://api.github.com/users/pubnub/orgs","repos_url":"https://api.github.com/users/pubnub/repos","events_url":"https://api.github.com/users/pubnub/events{/privacy}","received_events_url":"https://api.github.com/users/pubnub/received_events","type":"Organization","site_admin":false},"repo":{"id":78789276,"name":"ansible","full_name":"pubnub/ansible","owner":{"login":"pubnub","id":297109,"avatar_url":"https://avatars.githubusercontent.com/u/297109?v=3","gravatar_id":"","url":"https://api.github.com/users/pubnub","html_url":"https://github.com/pubnub","followers_url":"https://api.github.com/users/pubnub/followers","following_url":"https://api.github.com/users/pubnub/following{/other_user}","gists_url":"https://api.github.com/users/pubnub/gists{/gist_id}","starred_url":"https://api.github.com/users/pubnub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pubnub/subscriptions","organizations_url":"https://api.github.com/users/pubnub/orgs","repos_url":"https://api.github.com/users/pubnub/repos","events_url":"https://api.github.com/users/pubnub/events{/privacy}","received_events_url":"https://api.github.com/users/pubnub/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/pubnub/ansible","description":"Ansible is a radically simple IT automation platform that makes your applications and systems easier to deploy. Avoid writing scripts or custom code to deploy and update your applications— automate in a language that approaches plain English, using SSH, with no agents to install on remote systems.","fork":true,"url":"https://api.github.com/repos/pubnub/ansible","forks_url":"https://api.github.com/repos/pubnub/ansible/forks","keys_url":"https://api.github.com/repos/pubnub/ansible/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pubnub/ansible/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pubnub/ansible/teams","hooks_url":"https://api.github.com/repos/pubnub/ansible/hooks","issue_events_url":"https://api.github.com/repos/pubnub/ansible/issues/events{/number}","events_url":"https://api.github.com/repos/pubnub/ansible/events","assignees_url":"https://api.github.com/repos/pubnub/ansible/assignees{/user}","branches_url":"https://api.github.com/repos/pubnub/ansible/branches{/branch}","tags_url":"https://api.github.com/repos/pubnub/ansible/tags","blobs_url":"https://api.github.com/repos/pubnub/ansible/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pubnub/ansible/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pubnub/ansible/git/refs{/sha}","trees_url":"https://api.github.com/repos/pubnub/ansible/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pubnub/ansible/statuses/{sha}","languages_url":"https://api.github.com/repos/pubnub/ansible/languages","stargazers_url":"https://api.github.com/repos/pubnub/ansible/stargazers","contributors_url":"https://api.github.com/repos/pubnub/ansible/contributors","subscribers_url":"https://api.github.com/repos/pubnub/ansible/subscribers","subscription_url":"https://api.github.com/repos/pubnub/ansible/subscription","commits_url":"https://api.github.com/repos/pubnub/ansible/commits{/sha}","git_commits_url":"https://api.github.com/repos/pubnub/ansible/git/commits{/sha}","comments_url":"https://api.github.com/repos/pubnub/ansible/comments{/number}","issue_comment_url":"https://api.github.com/repos/pubnub/ansible/issues/comments{/number}","contents_url":"https://api.github.com/repos/pubnub/ansible/contents/{+path}","compare_url":"https://api.github.com/repos/pubnub/ansible/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pubnub/ansible/merges","archive_url":"https://api.github.com/repos/pubnub/ansible/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pubnub/ansible/downloads","issues_url":"https://api.github.com/repos/pubnub/ansible/issues{/number}","pulls_url":"https://api.github.com/repos/pubnub/ansible/pulls{/number}","milestones_url":"https://api.github.com/repos/pubnub/ansible/milestones{/number}","notifications_url":"https://api.github.com/repos/pubnub/ansible/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pubnub/ansible/labels{/name}","releases_url":"https://api.github.com/repos/pubnub/ansible/releases{/id}","deployments_url":"https://api.github.com/repos/pubnub/ansible/deployments","created_at":"2017-01-12T21:38:26Z","updated_at":"2017-01-12T21:38:43Z","pushed_at":"2017-02-07T00:14:26Z","git_url":"git://github.com/pubnub/ansible.git","ssh_url":"git@github.com:pubnub/ansible.git","clone_url":"https://github.com/pubnub/ansible.git","svn_url":"https://github.com/pubnub/ansible","homepage":"http://ansible.com/","size":62575,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"devel"}},"base":{"label":"ansible:devel","ref":"devel","sha":"232cb764daab4012b5837ac4d5929ccbef23616f","user":{"login":"ansible","id":1507452,"avatar_url":"https://avatars.githubusercontent.com/u/1507452?v=3","gravatar_id":"","url":"https://api.github.com/users/ansible","html_url":"https://github.com/ansible","followers_url":"https://api.github.com/users/ansible/followers","following_url":"https://api.github.com/users/ansible/following{/other_user}","gists_url":"https://api.github.com/users/ansible/gists{/gist_id}","starred_url":"https://api.github.com/users/ansible/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ansible/subscriptions","organizations_url":"https://api.github.com/users/ansible/orgs","repos_url":"https://api.github.com/users/ansible/repos","events_url":"https://api.github.com/users/ansible/events{/privacy}","received_events_url":"https://api.github.com/users/ansible/received_events","type":"Organization","site_admin":false},"repo":{"id":3638964,"name":"ansible","full_name":"ansible/ansible","owner":{"login":"ansible","id":1507452,"avatar_url":"https://avatars.githubusercontent.com/u/1507452?v=3","gravatar_id":"","url":"https://api.github.com/users/ansible","html_url":"https://github.com/ansible","followers_url":"https://api.github.com/users/ansible/followers","following_url":"https://api.github.com/users/ansible/following{/other_user}","gists_url":"https://api.github.com/users/ansible/gists{/gist_id}","starred_url":"https://api.github.com/users/ansible/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ansible/subscriptions","organizations_url":"https://api.github.com/users/ansible/orgs","repos_url":"https://api.github.com/users/ansible/repos","events_url":"https://api.github.com/users/ansible/events{/privacy}","received_events_url":"https://api.github.com/users/ansible/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ansible/ansible","description":"Ansible is a radically simple IT automation platform that makes your applications and systems easier to deploy. Avoid writing scripts or custom code to deploy and update your applications— automate in a language that approaches plain English, using SSH, with no agents to install on remote systems.","fork":false,"url":"https://api.github.com/repos/ansible/ansible","forks_url":"https://api.github.com/repos/ansible/ansible/forks","keys_url":"https://api.github.com/repos/ansible/ansible/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ansible/ansible/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ansible/ansible/teams","hooks_url":"https://api.github.com/repos/ansible/ansible/hooks","issue_events_url":"https://api.github.com/repos/ansible/ansible/issues/events{/number}","events_url":"https://api.github.com/repos/ansible/ansible/events","assignees_url":"https://api.github.com/repos/ansible/ansible/assignees{/user}","branches_url":"https://api.github.com/repos/ansible/ansible/branches{/branch}","tags_url":"https://api.github.com/repos/ansible/ansible/tags","blobs_url":"https://api.github.com/repos/ansible/ansible/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ansible/ansible/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ansible/ansible/git/refs{/sha}","trees_url":"https://api.github.com/repos/ansible/ansible/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ansible/ansible/statuses/{sha}","languages_url":"https://api.github.com/repos/ansible/ansible/languages","stargazers_url":"https://api.github.com/repos/ansible/ansible/stargazers","contributors_url":"https://api.github.com/repos/ansible/ansible/contributors","subscribers_url":"https://api.github.com/repos/ansible/ansible/subscribers","subscription_url":"https://api.github.com/repos/ansible/ansible/subscription","commits_url":"https://api.github.com/repos/ansible/ansible/commits{/sha}","git_commits_url":"https://api.github.com/repos/ansible/ansible/git/commits{/sha}","comments_url":"https://api.github.com/repos/ansible/ansible/comments{/number}","issue_comment_url":"https://api.github.com/repos/ansible/ansible/issues/comments{/number}","contents_url":"https://api.github.com/repos/ansible/ansible/contents/{+path}","compare_url":"https://api.github.com/repos/ansible/ansible/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ansible/ansible/merges","archive_url":"https://api.github.com/repos/ansible/ansible/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ansible/ansible/downloads","issues_url":"https://api.github.com/repos/ansible/ansible/issues{/number}","pulls_url":"https://api.github.com/repos/ansible/ansible/pulls{/number}","milestones_url":"https://api.github.com/repos/ansible/ansible/milestones{/number}","notifications_url":"https://api.github.com/repos/ansible/ansible/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ansible/ansible/labels{/name}","releases_url":"https://api.github.com/repos/ansible/ansible/releases{/id}","deployments_url":"https://api.github.com/repos/ansible/ansible/deployments","created_at":"2012-03-06T14:58:02Z","updated_at":"2017-02-08T15:29:32Z","pushed_at":"2017-02-08T15:43:37Z","git_url":"git://github.com/ansible/ansible.git","ssh_url":"git@github.com:ansible/ansible.git","clone_url":"https://github.com/ansible/ansible.git","svn_url":"https://github.com/ansible/ansible","homepage":"http://ansible.com/","size":65329,"stargazers_count":21274,"watchers_count":21274,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":6782,"mirror_url":null,"open_issues_count":2365,"forks":6782,"open_issues":2365,"watchers":21274,"default_branch":"devel"}},"_links":{"self":{"href":"https://api.github.com/repos/ansible/ansible/pulls/20200"},"html":{"href":"https://github.com/ansible/ansible/pull/20200"},"issue":{"href":"https://api.github.com/repos/ansible/ansible/issues/20200"},"comments":{"href":"https://api.github.com/repos/ansible/ansible/issues/20200/comments"},"review_comments":{"href":"https://api.github.com/repos/ansible/ansible/pulls/20200/comments"},"review_comment":{"href":"https://api.github.com/repos/ansible/ansible/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ansible/ansible/pulls/20200/commits"},"statuses":{"href":"https://api.github.com/repos/ansible/ansible/statuses/609485c8fa24071f797f5f822b267ab7083917af"}}}}
{"actor":{"display_login":"ryansb"}}