{"action":"created","comment":{"url":"https://api.github.com/repos/fog/fog-xml/pulls/comments/154442700","pull_request_review_id":80613671,"id":154442700,"diff_hunk":"@@ -0,0 +1,390 @@\n+require \"minitest_helper\"\n+\n+module Fog\n+  module Parsers\n+    module AWS\n+      class Base < Fog::Parsers::Base\n+        def self.schema\n+          aws_schema.merge!({\n+            'ResponseMetadata' => {\n+              'RequestId' => :string\n+            }\n+          })\n+        end\n+\n+        def self.aws_schema\n+          {}\n+        end\n+\n+        def self.member\n+          'member'\n+        end\n+\n+        def reset\n+          super\n+          @response['ResponseMetadata'] = {}\n+        end\n+      end\n+    end\n+  end\n+end\n+\n+class Fog::Parsers::SchemaTest < Minitest::Spec\n+  class ParserWrapper < Fog::Parsers::AWS::Base\n+    def input_xml\n+      raise NotImplementedError\n+    end\n+\n+    def expected_output\n+      raise NotImplementedError\n+    end\n+\n+    def perform_test\n+      @wrapper = Nokogiri::XML::SAX::Parser.new(self.class.new)\n+      @wrapper.parse(input_xml)\n+      @wrapper.document.response\n+    end\n+  end\n+\n+  class RequestIdOnly < ParserWrapper\n+    def input_xml\n+      <<~XML\n+        <RequestResponse xmlns=\"http://ses.amazonaws.com/doc/2010-12-01/\">\n+          <RequestResult>\n+            <Node1>\n+              <String>string-value</String>\n+            </Node1>\n+          </RequestResult>\n+          <ResponseMetadata>\n+            <RequestId>9580fd15-d539-11e7-b50f-55c5aff10410</RequestId>\n+          </ResponseMetadata>\n+        </RequestResponse>\n+      XML\n+    end\n+\n+    def expected_output\n+      {\n+        'ResponseMetadata' => {\n+          'RequestId' => '9580fd15-d539-11e7-b50f-55c5aff10410'\n+        },\n+      }\n+    end\n+  end\n+\n+  describe RequestIdOnly do\n+    subject { RequestIdOnly.new }\n+    it { subject.perform_test.must_equal subject.expected_output }\n+  end\n+\n+  class With_1_NodeOf_4_Values < ParserWrapper\n+    def self.aws_schema\n+      {\n+        'Node1' => {\n+          'String' => :string,\n+          'Timestamp' => :time,\n+          'Boolean' => :boolean,\n+          'Enum' => 'Choice1|Choice2'\n+        },\n+      }\n+    end\n+\n+    def input_xml\n+      <<~XML\n+        <RequestResponse xmlns=\"http://ses.amazonaws.com/doc/2010-12-01/\">\n+          <RequestResult>\n+            <Node1>\n+              <String>string-value</String>\n+              <Timestamp>2017-11-20T22:15:01.632Z</Timestamp>\n+              <Boolean>true</Boolean>\n+              <Enum>Choice1</Enum>\n+            </Node1>\n+          </RequestResult>\n+          <ResponseMetadata>\n+            <RequestId>9580fd15-d539-11e7-b50f-55c5aff10410</RequestId>\n+          </ResponseMetadata>\n+        </RequestResponse>\n+      XML\n+    end\n+\n+    def expected_output\n+      {\n+        'Node1' => {\n+          'String' => 'string-value',\n+          'Timestamp' => Time.parse('2017-11-20T22:15:01.632Z'),\n+          'Boolean' => true,\n+          'Enum' => 'Choice1',\n+        },\n+        'ResponseMetadata' => {\n+          'RequestId' => '9580fd15-d539-11e7-b50f-55c5aff10410'\n+        },\n+      }\n+    end\n+  end\n+\n+  describe With_1_NodeOf_4_Values do\n+    subject { With_1_NodeOf_4_Values.new }\n+    it { subject.perform_test.must_equal subject.expected_output }\n+  end\n+\n+  class With_1_NodeOf_1_ArrayOf_3_Values < ParserWrapper\n+    def self.aws_schema\n+      {\n+        'Node1' => [:string],\n+      }\n+    end\n+\n+    def input_xml\n+      <<~XML\n+        <RequestResponse xmlns=\"http://ses.amazonaws.com/doc/2010-12-01/\">\n+          <RequestResult>\n+            <Node1>\n+              <member>string-value-1</member>\n+              <member>string-value-2</member>\n+              <member>string-value-3</member>\n+             </Node1>\n+          </RequestResult>\n+          <ResponseMetadata>\n+            <RequestId>9580fd15-d539-11e7-b50f-55c5aff10410</RequestId>\n+          </ResponseMetadata>\n+        </RequestResponse>\n+      XML\n+    end\n+\n+    def expected_output\n+      {\n+        'Node1' => [\n+          'string-value-1',\n+          'string-value-2',\n+          'string-value-3',\n+        ],\n+        'ResponseMetadata' => {\n+          'RequestId' => '9580fd15-d539-11e7-b50f-55c5aff10410'\n+        },\n+      }\n+    end\n+  end\n+\n+  describe With_1_NodeOf_1_ArrayOf_3_Values do\n+    subject { With_1_NodeOf_1_ArrayOf_3_Values.new }\n+    it { subject.perform_test.must_equal subject.expected_output }\n+  end\n+\n+  class With_1_NodeOf_1_ArrayOf_2_NodesOf_1_Value_And_1_Value < ParserWrapper\n+    def self.aws_schema\n+      {\n+        'Node1' => [{\n+          'String' => :string\n+        }],\n+        'Boolean' => :boolean\n+      }\n+    end\n+\n+    def input_xml\n+      <<~XML\n+        <RequestResponse xmlns=\"http://ses.amazonaws.com/doc/2010-12-01/\">\n+          <RequestResult>\n+            <Node1>\n+              <member>\n+                <String>string-value-1</String>\n+              </member>\n+              <member>\n+                <String>string-value-2</String>\n+              </member>\n+            </Node1>\n+            <Boolean>true</Boolean> \n+          </RequestResult>\n+          <ResponseMetadata>\n+            <RequestId>9580fd15-d539-11e7-b50f-55c5aff10410</RequestId>\n+          </ResponseMetadata>\n+        </RequestResponse>\n+      XML\n+    end\n+\n+    def expected_output\n+      {\n+        'Node1' => [\n+          { 'String' => 'string-value-1'},\n+          { 'String' => 'string-value-2'},\n+        ],\n+        'Boolean' => true,\n+        'ResponseMetadata' => {\n+          'RequestId' => '9580fd15-d539-11e7-b50f-55c5aff10410'\n+        },\n+      }\n+    end\n+  end\n+\n+  describe With_1_NodeOf_1_ArrayOf_2_NodesOf_1_Value_And_1_Value do\n+    subject { With_1_NodeOf_1_ArrayOf_2_NodesOf_1_Value_And_1_Value.new }\n+    it { subject.perform_test.must_equal subject.expected_output }\n+  end\n+\n+  class DescribeActiveReceiptRuleSet < ParserWrapper\n+    def self.aws_schema\n+      {\n+        'Metadata' => {\n+          'Name' => :string,\n+          'CreatedTimestamp' => :time,\n+        },\n+        'Rules' => [{\n+          'Actions' => [{\n+            'AddHeaderAction' => {\n+              'HeaderName' => :string,\n+              'HeaderValue' => :string,\n+            },\n+            'BounceAction' => {\n+              'Message' => :string,\n+              'Sender' => :string,\n+              'SmtpReplyCode' => :string,\n+              'StatusCode' => :string,\n+              'TopicArn' => :string,\n+            },\n+            'LambdaAction' => {\n+              'FunctionArn' => :string,\n+              'InvocationType' => 'Event|RequestResponse',\n+              'TopicArn' => :string,\n+            },\n+            'S3Action' => {\n+              'BucketName' => :string,\n+              'KmsKeyArn' => :string,\n+              'ObjectKeyPrefix' => :string,\n+              'TopicArn' => :string,\n+            },\n+            'SNSAction' => {\n+              'Encoding' => 'UTF-8|Base64',\n+              'TopicArn' => :string,\n+            },\n+            'StopAction' => {\n+              'Scope' => 'RuleSet',\n+              'TopicArn' => :string,\n+            },\n+            'WorkmailAction' => {\n+              'OrganizationArn' => :string,\n+              'TopicArn' => :string,\n+            },\n+          }],\n+          'Enabled' => :boolean,\n+          'Name' => :string,\n+          'Recipients' => [:string],\n+          'ScanEnabled' => :boolean,\n+          'TlsPolicy' => 'Require|Optional',\n+        }]\n+      }\n+    end\n+\n+    def input_xml\n+      <<~XML\n+        <DescribeActiveReceiptRuleSetResponse xmlns=\"http://ses.amazonaws.com/doc/2010-12-01/\">\n+          <DescribeActiveReceiptRuleSetResult>\n+            <Metadata>\n+              <Name>string-value-1</Name>\n+              <CreatedTimestamp>2017-11-20T22:15:01.632Z</CreatedTimestamp>\n+            </Metadata>\n+            <Rules>\n+              <member>\n+                <Recipients>\n+                  <member>string-value-2</member>\n+                  <member>string-value-3</member>\n+                </Recipients>\n+                <Name>string-value-4</Name>\n+                <TlsPolicy>Require</TlsPolicy>\n+                <Actions>\n+                  <member>\n+                    <AddHeaderAction>\n+                      <HeaderValue>string-value-5</HeaderValue>\n+                      <HeaderName>string-value-6</HeaderName>\n+                    </AddHeaderAction>\n+                  </member>\n+                  <member>\n+                    <StopAction>\n+                      <Scope>RuleSet</Scope>\n+                    </StopAction>\n+                  </member>\n+                </Actions>\n+                <Enabled>true</Enabled>\n+                <ScanEnabled>true</ScanEnabled>\n+              </member>\n+              <member>\n+                <Recipients>\n+                  <member>string-value-7</member>\n+                </Recipients>\n+                <Name>string-value-8</Name>\n+                <TlsPolicy>Optional</TlsPolicy>\n+                <Actions>\n+                  <member>\n+                    <StopAction>\n+                      <Scope>RuleSet</Scope>\n+                    </StopAction>\n+                  </member>\n+                </Actions>\n+                <Enabled>false</Enabled>\n+                <ScanEnabled>true</ScanEnabled>\n+              </member>\n+            </Rules>\n+          </DescribeActiveReceiptRuleSetResult>\n+          <ResponseMetadata>\n+            <RequestId>9580fd15-d539-11e7-b50f-55c5aff10410</RequestId>\n+          </ResponseMetadata>\n+        </DescribeActiveReceiptRuleSetResponse>\n+      XML\n+    end\n+\n+    def expected_output\n+      {\n+        'Metadata' => {\n+          'Name' => 'string-value-1',\n+          'CreatedTimestamp' => Time.parse('2017-11-20T22:15:01.632Z'),\n+        },\n+        'Rules' => [\n+          {\n+            'Recipients' => [\n+              'string-value-2',\n+              'string-value-3',\n+            ],\n+            'Name' => 'string-value-4',\n+            'TlsPolicy' => 'Require',\n+            'Actions' => [\n+              {\n+                'AddHeaderAction' => {\n+                  'HeaderValue' => 'string-value-5',\n+                  'HeaderName' => 'string-value-6',\n+                }\n+              },\n+              {\n+                'StopAction' => {\n+                  'Scope' => 'RuleSet'","path":"spec/fog/parsers/schema_spec.rb","position":355,"original_position":355,"commit_id":"bbd4229110dbefee0261fcd3e7d1913800e13769","original_commit_id":"bbd4229110dbefee0261fcd3e7d1913800e13769","user":{"login":"houndci-bot","id":6697940,"avatar_url":"https://avatars0.githubusercontent.com/u/6697940?v=4","gravatar_id":"","url":"https://api.github.com/users/houndci-bot","html_url":"https://github.com/houndci-bot","followers_url":"https://api.github.com/users/houndci-bot/followers","following_url":"https://api.github.com/users/houndci-bot/following{/other_user}","gists_url":"https://api.github.com/users/houndci-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/houndci-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/houndci-bot/subscriptions","organizations_url":"https://api.github.com/users/houndci-bot/orgs","repos_url":"https://api.github.com/users/houndci-bot/repos","events_url":"https://api.github.com/users/houndci-bot/events{/privacy}","received_events_url":"https://api.github.com/users/houndci-bot/received_events","type":"User","site_admin":false},"body":"Prefer double-quoted strings unless you need single quotes to avoid extra backslashes for escaping.","created_at":"2017-12-01T20:35:44Z","updated_at":"2017-12-01T20:35:44Z","html_url":"https://github.com/fog/fog-xml/pull/12#discussion_r154442700","pull_request_url":"https://api.github.com/repos/fog/fog-xml/pulls/12","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/fog/fog-xml/pulls/comments/154442700"},"html":{"href":"https://github.com/fog/fog-xml/pull/12#discussion_r154442700"},"pull_request":{"href":"https://api.github.com/repos/fog/fog-xml/pulls/12"}}},"pull_request":{"url":"https://api.github.com/repos/fog/fog-xml/pulls/12","id":155951769,"html_url":"https://github.com/fog/fog-xml/pull/12","diff_url":"https://github.com/fog/fog-xml/pull/12.diff","patch_url":"https://github.com/fog/fog-xml/pull/12.patch","issue_url":"https://api.github.com/repos/fog/fog-xml/issues/12","number":12,"state":"open","locked":false,"title":"added schema dsl definition for declarative parsers implementation","user":{"login":"patleb","id":7095781,"avatar_url":"https://avatars0.githubusercontent.com/u/7095781?v=4","gravatar_id":"","url":"https://api.github.com/users/patleb","html_url":"https://github.com/patleb","followers_url":"https://api.github.com/users/patleb/followers","following_url":"https://api.github.com/users/patleb/following{/other_user}","gists_url":"https://api.github.com/users/patleb/gists{/gist_id}","starred_url":"https://api.github.com/users/patleb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/patleb/subscriptions","organizations_url":"https://api.github.com/users/patleb/orgs","repos_url":"https://api.github.com/users/patleb/repos","events_url":"https://api.github.com/users/patleb/events{/privacy}","received_events_url":"https://api.github.com/users/patleb/received_events","type":"User","site_admin":false},"body":"Hi, I wanted to add some requests to fog-aws, but it became hard to keep parser implementation simple when the result was nested and with several collections. So, I've added a declarative way to build parsers.","created_at":"2017-12-01T20:35:37Z","updated_at":"2017-12-01T20:35:44Z","closed_at":null,"merged_at":null,"merge_commit_sha":"244eb2746e719bcd17feed99970b9caa5e860239","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/fog/fog-xml/pulls/12/commits","review_comments_url":"https://api.github.com/repos/fog/fog-xml/pulls/12/comments","review_comment_url":"https://api.github.com/repos/fog/fog-xml/pulls/comments{/number}","comments_url":"https://api.github.com/repos/fog/fog-xml/issues/12/comments","statuses_url":"https://api.github.com/repos/fog/fog-xml/statuses/bbd4229110dbefee0261fcd3e7d1913800e13769","head":{"label":"patleb:master","ref":"master","sha":"bbd4229110dbefee0261fcd3e7d1913800e13769","user":{"login":"patleb","id":7095781,"avatar_url":"https://avatars0.githubusercontent.com/u/7095781?v=4","gravatar_id":"","url":"https://api.github.com/users/patleb","html_url":"https://github.com/patleb","followers_url":"https://api.github.com/users/patleb/followers","following_url":"https://api.github.com/users/patleb/following{/other_user}","gists_url":"https://api.github.com/users/patleb/gists{/gist_id}","starred_url":"https://api.github.com/users/patleb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/patleb/subscriptions","organizations_url":"https://api.github.com/users/patleb/orgs","repos_url":"https://api.github.com/users/patleb/repos","events_url":"https://api.github.com/users/patleb/events{/privacy}","received_events_url":"https://api.github.com/users/patleb/received_events","type":"User","site_admin":false},"repo":{"id":112779458,"name":"fog-xml","full_name":"patleb/fog-xml","owner":{"login":"patleb","id":7095781,"avatar_url":"https://avatars0.githubusercontent.com/u/7095781?v=4","gravatar_id":"","url":"https://api.github.com/users/patleb","html_url":"https://github.com/patleb","followers_url":"https://api.github.com/users/patleb/followers","following_url":"https://api.github.com/users/patleb/following{/other_user}","gists_url":"https://api.github.com/users/patleb/gists{/gist_id}","starred_url":"https://api.github.com/users/patleb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/patleb/subscriptions","organizations_url":"https://api.github.com/users/patleb/orgs","repos_url":"https://api.github.com/users/patleb/repos","events_url":"https://api.github.com/users/patleb/events{/privacy}","received_events_url":"https://api.github.com/users/patleb/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/patleb/fog-xml","description":"Shared XML related functionality for fog","fork":true,"url":"https://api.github.com/repos/patleb/fog-xml","forks_url":"https://api.github.com/repos/patleb/fog-xml/forks","keys_url":"https://api.github.com/repos/patleb/fog-xml/keys{/key_id}","collaborators_url":"https://api.github.com/repos/patleb/fog-xml/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/patleb/fog-xml/teams","hooks_url":"https://api.github.com/repos/patleb/fog-xml/hooks","issue_events_url":"https://api.github.com/repos/patleb/fog-xml/issues/events{/number}","events_url":"https://api.github.com/repos/patleb/fog-xml/events","assignees_url":"https://api.github.com/repos/patleb/fog-xml/assignees{/user}","branches_url":"https://api.github.com/repos/patleb/fog-xml/branches{/branch}","tags_url":"https://api.github.com/repos/patleb/fog-xml/tags","blobs_url":"https://api.github.com/repos/patleb/fog-xml/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/patleb/fog-xml/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/patleb/fog-xml/git/refs{/sha}","trees_url":"https://api.github.com/repos/patleb/fog-xml/git/trees{/sha}","statuses_url":"https://api.github.com/repos/patleb/fog-xml/statuses/{sha}","languages_url":"https://api.github.com/repos/patleb/fog-xml/languages","stargazers_url":"https://api.github.com/repos/patleb/fog-xml/stargazers","contributors_url":"https://api.github.com/repos/patleb/fog-xml/contributors","subscribers_url":"https://api.github.com/repos/patleb/fog-xml/subscribers","subscription_url":"https://api.github.com/repos/patleb/fog-xml/subscription","commits_url":"https://api.github.com/repos/patleb/fog-xml/commits{/sha}","git_commits_url":"https://api.github.com/repos/patleb/fog-xml/git/commits{/sha}","comments_url":"https://api.github.com/repos/patleb/fog-xml/comments{/number}","issue_comment_url":"https://api.github.com/repos/patleb/fog-xml/issues/comments{/number}","contents_url":"https://api.github.com/repos/patleb/fog-xml/contents/{+path}","compare_url":"https://api.github.com/repos/patleb/fog-xml/compare/{base}...{head}","merges_url":"https://api.github.com/repos/patleb/fog-xml/merges","archive_url":"https://api.github.com/repos/patleb/fog-xml/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/patleb/fog-xml/downloads","issues_url":"https://api.github.com/repos/patleb/fog-xml/issues{/number}","pulls_url":"https://api.github.com/repos/patleb/fog-xml/pulls{/number}","milestones_url":"https://api.github.com/repos/patleb/fog-xml/milestones{/number}","notifications_url":"https://api.github.com/repos/patleb/fog-xml/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/patleb/fog-xml/labels{/name}","releases_url":"https://api.github.com/repos/patleb/fog-xml/releases{/id}","deployments_url":"https://api.github.com/repos/patleb/fog-xml/deployments","created_at":"2017-12-01T19:38:39Z","updated_at":"2017-12-01T19:38:41Z","pushed_at":"2017-12-01T20:31:27Z","git_url":"git://github.com/patleb/fog-xml.git","ssh_url":"git@github.com:patleb/fog-xml.git","clone_url":"https://github.com/patleb/fog-xml.git","svn_url":"https://github.com/patleb/fog-xml","homepage":"","size":22,"stargazers_count":0,"watchers_count":0,"language":"Ruby","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":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"fog:master","ref":"master","sha":"a659550b97c8a61709f82b1c563ff7b66567e0e5","user":{"login":"fog","id":991149,"avatar_url":"https://avatars3.githubusercontent.com/u/991149?v=4","gravatar_id":"","url":"https://api.github.com/users/fog","html_url":"https://github.com/fog","followers_url":"https://api.github.com/users/fog/followers","following_url":"https://api.github.com/users/fog/following{/other_user}","gists_url":"https://api.github.com/users/fog/gists{/gist_id}","starred_url":"https://api.github.com/users/fog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fog/subscriptions","organizations_url":"https://api.github.com/users/fog/orgs","repos_url":"https://api.github.com/users/fog/repos","events_url":"https://api.github.com/users/fog/events{/privacy}","received_events_url":"https://api.github.com/users/fog/received_events","type":"Organization","site_admin":false},"repo":{"id":20736291,"name":"fog-xml","full_name":"fog/fog-xml","owner":{"login":"fog","id":991149,"avatar_url":"https://avatars3.githubusercontent.com/u/991149?v=4","gravatar_id":"","url":"https://api.github.com/users/fog","html_url":"https://github.com/fog","followers_url":"https://api.github.com/users/fog/followers","following_url":"https://api.github.com/users/fog/following{/other_user}","gists_url":"https://api.github.com/users/fog/gists{/gist_id}","starred_url":"https://api.github.com/users/fog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fog/subscriptions","organizations_url":"https://api.github.com/users/fog/orgs","repos_url":"https://api.github.com/users/fog/repos","events_url":"https://api.github.com/users/fog/events{/privacy}","received_events_url":"https://api.github.com/users/fog/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/fog/fog-xml","description":"Shared XML related functionality for fog","fork":false,"url":"https://api.github.com/repos/fog/fog-xml","forks_url":"https://api.github.com/repos/fog/fog-xml/forks","keys_url":"https://api.github.com/repos/fog/fog-xml/keys{/key_id}","collaborators_url":"https://api.github.com/repos/fog/fog-xml/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/fog/fog-xml/teams","hooks_url":"https://api.github.com/repos/fog/fog-xml/hooks","issue_events_url":"https://api.github.com/repos/fog/fog-xml/issues/events{/number}","events_url":"https://api.github.com/repos/fog/fog-xml/events","assignees_url":"https://api.github.com/repos/fog/fog-xml/assignees{/user}","branches_url":"https://api.github.com/repos/fog/fog-xml/branches{/branch}","tags_url":"https://api.github.com/repos/fog/fog-xml/tags","blobs_url":"https://api.github.com/repos/fog/fog-xml/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/fog/fog-xml/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/fog/fog-xml/git/refs{/sha}","trees_url":"https://api.github.com/repos/fog/fog-xml/git/trees{/sha}","statuses_url":"https://api.github.com/repos/fog/fog-xml/statuses/{sha}","languages_url":"https://api.github.com/repos/fog/fog-xml/languages","stargazers_url":"https://api.github.com/repos/fog/fog-xml/stargazers","contributors_url":"https://api.github.com/repos/fog/fog-xml/contributors","subscribers_url":"https://api.github.com/repos/fog/fog-xml/subscribers","subscription_url":"https://api.github.com/repos/fog/fog-xml/subscription","commits_url":"https://api.github.com/repos/fog/fog-xml/commits{/sha}","git_commits_url":"https://api.github.com/repos/fog/fog-xml/git/commits{/sha}","comments_url":"https://api.github.com/repos/fog/fog-xml/comments{/number}","issue_comment_url":"https://api.github.com/repos/fog/fog-xml/issues/comments{/number}","contents_url":"https://api.github.com/repos/fog/fog-xml/contents/{+path}","compare_url":"https://api.github.com/repos/fog/fog-xml/compare/{base}...{head}","merges_url":"https://api.github.com/repos/fog/fog-xml/merges","archive_url":"https://api.github.com/repos/fog/fog-xml/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/fog/fog-xml/downloads","issues_url":"https://api.github.com/repos/fog/fog-xml/issues{/number}","pulls_url":"https://api.github.com/repos/fog/fog-xml/pulls{/number}","milestones_url":"https://api.github.com/repos/fog/fog-xml/milestones{/number}","notifications_url":"https://api.github.com/repos/fog/fog-xml/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/fog/fog-xml/labels{/name}","releases_url":"https://api.github.com/repos/fog/fog-xml/releases{/id}","deployments_url":"https://api.github.com/repos/fog/fog-xml/deployments","created_at":"2014-06-11T18:32:48Z","updated_at":"2017-01-15T10:04:49Z","pushed_at":"2017-12-01T20:35:39Z","git_url":"git://github.com/fog/fog-xml.git","ssh_url":"git@github.com:fog/fog-xml.git","clone_url":"https://github.com/fog/fog-xml.git","svn_url":"https://github.com/fog/fog-xml","homepage":"","size":22,"stargazers_count":2,"watchers_count":2,"language":"Ruby","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":7,"mirror_url":null,"archived":false,"open_issues_count":1,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit"},"forks":7,"open_issues":1,"watchers":2,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/fog/fog-xml/pulls/12"},"html":{"href":"https://github.com/fog/fog-xml/pull/12"},"issue":{"href":"https://api.github.com/repos/fog/fog-xml/issues/12"},"comments":{"href":"https://api.github.com/repos/fog/fog-xml/issues/12/comments"},"review_comments":{"href":"https://api.github.com/repos/fog/fog-xml/pulls/12/comments"},"review_comment":{"href":"https://api.github.com/repos/fog/fog-xml/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/fog/fog-xml/pulls/12/commits"},"statuses":{"href":"https://api.github.com/repos/fog/fog-xml/statuses/bbd4229110dbefee0261fcd3e7d1913800e13769"}},"author_association":"NONE"}}
{"actor":{"display_login":"houndci-bot"}}