{"action":"created","comment":{"url":"https://api.github.com/repos/carystokes/cookie_monstah/pulls/comments/83052678","pull_request_review_id":3918525,"id":83052678,"diff_hunk":"@@ -0,0 +1,463 @@\n+module CarrierWave\n+  module Storage\n+\n+    ##\n+    # Stores things using the \"fog\" gem.\n+    #\n+    # fog supports storing files with AWS, Google, Local and Rackspace\n+    #\n+    # You need to setup some options to configure your usage:\n+    #\n+    # [:fog_credentials]  host info and credentials for service\n+    # [:fog_directory]    specifies name of directory to store data in, assumed to already exist\n+    #\n+    # [:fog_attributes]                   (optional) additional attributes to set on files\n+    # [:fog_public]                       (optional) public readability, defaults to true\n+    # [:fog_authenticated_url_expiration] (optional) time (in seconds) that authenticated urls\n+    #   will be valid, when fog_public is false and provider is AWS or Google, defaults to 600\n+    # [:fog_use_ssl_for_aws]              (optional) #public_url will use https for the AWS generated URL]\n+    #\n+    #\n+    # AWS credentials contain the following keys:\n+    #\n+    # [:aws_access_key_id]\n+    # [:aws_secret_access_key]\n+    # [:region]                 (optional) defaults to 'us-east-1'\n+    #   :region should be one of ['eu-west-1', 'us-east-1', 'ap-southeast-1', 'us-west-1', 'ap-northeast-1', 'eu-central-1']\n+    #\n+    #\n+    # Google credentials contain the following keys:\n+    # [:google_storage_access_key_id]\n+    # [:google_storage_secrete_access_key]\n+    #\n+    #\n+    # Local credentials contain the following keys:\n+    #\n+    # [:local_root]             local path to files\n+    #\n+    #\n+    # Rackspace credentials contain the following keys:\n+    #\n+    # [:rackspace_username]\n+    # [:rackspace_api_key]\n+    #\n+    #\n+    # A full example with AWS credentials:\n+    #     CarrierWave.configure do |config|\n+    #       config.fog_credentials = {\n+    #         :aws_access_key_id => 'xxxxxx',\n+    #         :aws_secret_access_key => 'yyyyyy',\n+    #         :provider => 'AWS'\n+    #       }\n+    #       config.fog_directory = 'directoryname'\n+    #       config.fog_public = true\n+    #     end\n+    #\n+    class Fog < Abstract\n+      class << self\n+        def connection_cache\n+          @connection_cache ||= {}\n+        end\n+      end\n+\n+      ##\n+      # Store a file\n+      #\n+      # === Parameters\n+      #\n+      # [file (CarrierWave::SanitizedFile)] the file to store\n+      #\n+      # === Returns\n+      #\n+      # [CarrierWave::Storage::Fog::File] the stored file\n+      #\n+      def store!(file)\n+        f = CarrierWave::Storage::Fog::File.new(uploader, self, uploader.store_path)\n+        f.store(file)\n+        f\n+      end\n+\n+      ##\n+      # Retrieve a file\n+      #\n+      # === Parameters\n+      #\n+      # [identifier (String)] unique identifier for file\n+      #\n+      # === Returns\n+      #\n+      # [CarrierWave::Storage::Fog::File] the stored file\n+      #\n+      def retrieve!(identifier)\n+        CarrierWave::Storage::Fog::File.new(uploader, self, uploader.store_path(identifier))\n+      end\n+\n+      ##\n+      # Stores given file to cache directory.\n+      #\n+      # === Parameters\n+      #\n+      # [new_file (File, IOString, Tempfile)] any kind of file object\n+      #\n+      # === Returns\n+      #\n+      # [CarrierWave::SanitizedFile] a sanitized file\n+      #\n+      def cache!(new_file)\n+        f = CarrierWave::Storage::Fog::File.new(uploader, self, uploader.cache_path)\n+        f.store(new_file)\n+        f\n+      end\n+\n+      ##\n+      # Retrieves the file with the given cache_name from the cache.\n+      #\n+      # === Parameters\n+      #\n+      # [cache_name (String)] uniquely identifies a cache file\n+      #\n+      # === Raises\n+      #\n+      # [CarrierWave::InvalidParameter] if the cache_name is incorrectly formatted.\n+      #\n+      def retrieve_from_cache!(identifier)\n+        CarrierWave::Storage::Fog::File.new(uploader, self, uploader.cache_path(identifier))\n+      end\n+\n+      ##\n+      # Deletes a cache dir\n+      #\n+      def delete_dir!(path)\n+        # do nothing, because there's no such things as 'empty directory'\n+      end\n+\n+      def clean_cache!(seconds)\n+        connection.directories.new(\n+          :key    => uploader.fog_directory,\n+          :public => uploader.fog_public\n+        ).files.all(:prefix => uploader.cache_dir).each do |file|\n+          # generate_cache_id returns key formated TIMEINT-PID-COUNTER-RND\n+          time = file.key.scan(/(\\d+)-\\d+-\\d+-\\d+/).first.map { |t| t.to_i }\n+          time = Time.at(*time)\n+          file.destroy if time < (Time.now.utc - seconds)\n+        end\n+      end\n+\n+      def connection\n+        @connection ||= begin\n+          options = credentials = uploader.fog_credentials\n+          self.class.connection_cache[credentials] ||= ::Fog::Storage.new(options)\n+        end\n+      end\n+\n+      class File\n+        include CarrierWave::Utilities::Uri\n+\n+        ##\n+        # Current local path to file\n+        #\n+        # === Returns\n+        #\n+        # [String] a path to file\n+        #\n+        attr_reader :path\n+\n+        ##\n+        # Return all attributes from file\n+        #\n+        # === Returns\n+        #\n+        # [Hash] attributes from file\n+        #\n+        def attributes\n+          file.attributes\n+        end\n+\n+        ##\n+        # Return a temporary authenticated url to a private file, if available\n+        # Only supported for AWS, Rackspace and Google providers\n+        #\n+        # === Returns\n+        #\n+        # [String] temporary authenticated url\n+        #   or\n+        # [NilClass] no authenticated url available\n+        #\n+        def authenticated_url(options = {})\n+          if ['AWS', 'Google', 'Rackspace', 'OpenStack'].include?(@uploader.fog_credentials[:provider])\n+            # avoid a get by using local references\n+            local_directory = connection.directories.new(:key => @uploader.fog_directory)\n+            local_file = local_directory.files.new(:key => path)\n+            expire_at = ::Fog::Time.now + @uploader.fog_authenticated_url_expiration\n+            case @uploader.fog_credentials[:provider]\n+              when 'AWS'\n+                local_file.url(expire_at, options)\n+              when 'Rackspace'\n+                connection.get_object_https_url(@uploader.fog_directory, path, expire_at, options)\n+              when 'OpenStack'\n+                connection.get_object_https_url(@uploader.fog_directory, path, expire_at)\n+              else\n+                local_file.url(expire_at)\n+            end\n+          end\n+        end\n+\n+        ##\n+        # Lookup value for file content-type header\n+        #\n+        # === Returns\n+        #\n+        # [String] value of content-type\n+        #\n+        def content_type\n+          @content_type || !file.nil? && file.content_type\n+        end\n+\n+        ##\n+        # Set non-default content-type header (default is file.content_type)\n+        #\n+        # === Returns\n+        #\n+        # [String] returns new content type value\n+        #\n+        def content_type=(new_content_type)\n+          @content_type = new_content_type\n+        end\n+\n+        ##\n+        # Remove the file from service\n+        #\n+        # === Returns\n+        #\n+        # [Boolean] true for success or raises error\n+        #\n+        def delete\n+          # avoid a get by just using local reference\n+          directory.files.new(:key => path).destroy\n+        end\n+\n+        ##\n+        # Return extension of file\n+        #\n+        # === Returns\n+        #\n+        # [String] extension of file or nil if the file has no extension\n+        #\n+        def extension\n+          path_elements = path.split('.')\n+          path_elements.last if path_elements.size > 1\n+        end\n+\n+        ##\n+        # deprecated: All attributes from file (includes headers)\n+        #\n+        # === Returns\n+        #\n+        # [Hash] attributes from file\n+        #\n+        def headers\n+          location = caller.first\n+          warning = \"[yellow][WARN] headers is deprecated, use attributes instead[/]\"\n+          warning << \" [light_black](#{location})[/]\"\n+          Formatador.display_line(warning)\n+          attributes\n+        end\n+\n+        def initialize(uploader, base, path)\n+          @uploader, @base, @path = uploader, base, path\n+        end\n+\n+        ##\n+        # Read content of file from service\n+        #\n+        # === Returns\n+        #\n+        # [String] contents of file\n+        def read\n+          file.body\n+        end\n+\n+        ##\n+        # Return size of file body\n+        #\n+        # === Returns\n+        #\n+        # [Integer] size of file body\n+        #\n+        def size\n+          file.nil? ? 0 : file.content_length\n+        end\n+\n+        ##\n+        # Check if the file exists on the remote service\n+        #\n+        # === Returns\n+        #\n+        # [Boolean] true if file exists or false\n+        def exists?\n+          !!directory.files.head(path)\n+        end\n+\n+        ##\n+        # Write file to service\n+        #\n+        # === Returns\n+        #\n+        # [Boolean] true on success or raises error\n+        def store(new_file)\n+          if new_file.is_a?(self.class)\n+            new_file.copy_to(path)\n+          else\n+            fog_file = new_file.to_file\n+            @content_type ||= new_file.content_type\n+            @file = directory.files.create({\n+              :body         => (fog_file ? fog_file : new_file).read,\n+              :content_type => @content_type,\n+              :key          => path,\n+              :public       => @uploader.fog_public\n+            }.merge(@uploader.fog_attributes))\n+            fog_file.close if fog_file && !fog_file.closed?\n+          end\n+          true\n+        end\n+\n+        ##\n+        # Return a url to a public file, if available\n+        #\n+        # === Returns\n+        #\n+        # [String] public url\n+        #   or\n+        # [NilClass] no public url available\n+        #\n+        def public_url\n+          encoded_path = encode_path(path)\n+          if host = @uploader.asset_host\n+            if host.respond_to? :call\n+              \"#{host.call(self)}/#{encoded_path}\"\n+            else\n+              \"#{host}/#{encoded_path}\"\n+            end\n+          else\n+            # AWS/Google optimized for speed over correctness\n+            case @uploader.fog_credentials[:provider].to_s\n+            when 'AWS'\n+              # check if some endpoint is set in fog_credentials\n+              if @uploader.fog_credentials.has_key?(:endpoint)\n+                \"#{@uploader.fog_credentials[:endpoint]}/#{@uploader.fog_directory}/#{encoded_path}\"\n+              else\n+                protocol = @uploader.fog_use_ssl_for_aws ? \"https\" : \"http\"\n+                # if directory is a valid subdomain, use that style for access\n+                if @uploader.fog_directory.to_s =~ /^(?:[a-z]|\\d(?!\\d{0,2}(?:\\d{1,3}){3}$))(?:[a-z0-9\\.]|(?![\\-])|\\-(?![\\.])){1,61}[a-z0-9]$/\n+                  \"#{protocol}://#{@uploader.fog_directory}.s3.amazonaws.com/#{encoded_path}\"\n+                else\n+                  # directory is not a valid subdomain, so use path style for access\n+                  \"#{protocol}://s3.amazonaws.com/#{@uploader.fog_directory}/#{encoded_path}\"\n+                end\n+              end\n+            when 'Google'\n+              # https://cloud.google.com/storage/docs/access-public-data\n+              \"https://storage.googleapis.com/#{@uploader.fog_directory}/#{encoded_path}\"\n+            else\n+              # avoid a get by just using local reference\n+              directory.files.new(:key => path).public_url\n+            end\n+          end\n+        end\n+\n+        ##\n+        # Return url to file, if avaliable\n+        #\n+        # === Returns\n+        #\n+        # [String] url\n+        #   or\n+        # [NilClass] no url available\n+        #\n+        def url(options = {})\n+          if !@uploader.fog_public\n+            authenticated_url(options)\n+          else\n+            public_url\n+          end\n+        end\n+\n+        ##\n+        # Return file name, if available\n+        #\n+        # === Returns\n+        #\n+        # [String] file name\n+        #   or\n+        # [NilClass] no file name available\n+        #\n+        def filename(options = {})\n+          return unless file_url = url(options)\n+          CGI.unescape(file_url.split('?').first).gsub(/.*\\/(.*?$)/, '\\1')\n+        end\n+\n+        ##\n+        # Creates a copy of this file and returns it.\n+        #\n+        # === Parameters\n+        #\n+        # [new_path (String)] The path where the file should be copied to.\n+        #\n+        # === Returns\n+        #\n+        # @return [CarrierWave::Storage::Fog::File] the location where the file will be stored.\n+        #\n+        def copy_to(new_path)\n+          connection.copy_object(@uploader.fog_directory, file.key, @uploader.fog_directory, new_path, acl_header)\n+          CarrierWave::Storage::Fog::File.new(@uploader, @base, new_path)\n+        end\n+\n+      private","path":"lib/carrierwave/storage/fog.rb","position":415,"original_position":415,"commit_id":"f196ec28a1216c714dfa73a63d7c1ddf587ec37a","original_commit_id":"f196ec28a1216c714dfa73a63d7c1ddf587ec37a","user":{"login":"houndci-bot","id":6697940,"avatar_url":"https://avatars.githubusercontent.com/u/6697940?v=3","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":"Indent access modifiers like private.","created_at":"2016-10-12T17:09:03Z","updated_at":"2016-10-12T17:09:03Z","html_url":"https://github.com/carystokes/cookie_monstah/pull/18#discussion_r83052678","pull_request_url":"https://api.github.com/repos/carystokes/cookie_monstah/pulls/18","_links":{"self":{"href":"https://api.github.com/repos/carystokes/cookie_monstah/pulls/comments/83052678"},"html":{"href":"https://github.com/carystokes/cookie_monstah/pull/18#discussion_r83052678"},"pull_request":{"href":"https://api.github.com/repos/carystokes/cookie_monstah/pulls/18"}}},"pull_request":{"url":"https://api.github.com/repos/carystokes/cookie_monstah/pulls/18","id":89055399,"html_url":"https://github.com/carystokes/cookie_monstah/pull/18","diff_url":"https://github.com/carystokes/cookie_monstah/pull/18.diff","patch_url":"https://github.com/carystokes/cookie_monstah/pull/18.patch","issue_url":"https://api.github.com/repos/carystokes/cookie_monstah/issues/18","number":18,"state":"open","locked":false,"title":"carrierwave uploads","user":{"login":"mhawley1230","id":12414030,"avatar_url":"https://avatars.githubusercontent.com/u/12414030?v=3","gravatar_id":"","url":"https://api.github.com/users/mhawley1230","html_url":"https://github.com/mhawley1230","followers_url":"https://api.github.com/users/mhawley1230/followers","following_url":"https://api.github.com/users/mhawley1230/following{/other_user}","gists_url":"https://api.github.com/users/mhawley1230/gists{/gist_id}","starred_url":"https://api.github.com/users/mhawley1230/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mhawley1230/subscriptions","organizations_url":"https://api.github.com/users/mhawley1230/orgs","repos_url":"https://api.github.com/users/mhawley1230/repos","events_url":"https://api.github.com/users/mhawley1230/events{/privacy}","received_events_url":"https://api.github.com/users/mhawley1230/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-10-12T17:08:52Z","updated_at":"2016-10-12T17:09:03Z","closed_at":null,"merged_at":null,"merge_commit_sha":"85c1d86d8ebad3716609ab9b3338f957899de004","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/carystokes/cookie_monstah/pulls/18/commits","review_comments_url":"https://api.github.com/repos/carystokes/cookie_monstah/pulls/18/comments","review_comment_url":"https://api.github.com/repos/carystokes/cookie_monstah/pulls/comments{/number}","comments_url":"https://api.github.com/repos/carystokes/cookie_monstah/issues/18/comments","statuses_url":"https://api.github.com/repos/carystokes/cookie_monstah/statuses/f196ec28a1216c714dfa73a63d7c1ddf587ec37a","head":{"label":"carystokes:test-deployment","ref":"test-deployment","sha":"f196ec28a1216c714dfa73a63d7c1ddf587ec37a","user":{"login":"carystokes","id":18637300,"avatar_url":"https://avatars.githubusercontent.com/u/18637300?v=3","gravatar_id":"","url":"https://api.github.com/users/carystokes","html_url":"https://github.com/carystokes","followers_url":"https://api.github.com/users/carystokes/followers","following_url":"https://api.github.com/users/carystokes/following{/other_user}","gists_url":"https://api.github.com/users/carystokes/gists{/gist_id}","starred_url":"https://api.github.com/users/carystokes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/carystokes/subscriptions","organizations_url":"https://api.github.com/users/carystokes/orgs","repos_url":"https://api.github.com/users/carystokes/repos","events_url":"https://api.github.com/users/carystokes/events{/privacy}","received_events_url":"https://api.github.com/users/carystokes/received_events","type":"User","site_admin":false},"repo":{"id":69880278,"name":"cookie_monstah","full_name":"carystokes/cookie_monstah","owner":{"login":"carystokes","id":18637300,"avatar_url":"https://avatars.githubusercontent.com/u/18637300?v=3","gravatar_id":"","url":"https://api.github.com/users/carystokes","html_url":"https://github.com/carystokes","followers_url":"https://api.github.com/users/carystokes/followers","following_url":"https://api.github.com/users/carystokes/following{/other_user}","gists_url":"https://api.github.com/users/carystokes/gists{/gist_id}","starred_url":"https://api.github.com/users/carystokes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/carystokes/subscriptions","organizations_url":"https://api.github.com/users/carystokes/orgs","repos_url":"https://api.github.com/users/carystokes/repos","events_url":"https://api.github.com/users/carystokes/events{/privacy}","received_events_url":"https://api.github.com/users/carystokes/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/carystokes/cookie_monstah","description":null,"fork":false,"url":"https://api.github.com/repos/carystokes/cookie_monstah","forks_url":"https://api.github.com/repos/carystokes/cookie_monstah/forks","keys_url":"https://api.github.com/repos/carystokes/cookie_monstah/keys{/key_id}","collaborators_url":"https://api.github.com/repos/carystokes/cookie_monstah/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/carystokes/cookie_monstah/teams","hooks_url":"https://api.github.com/repos/carystokes/cookie_monstah/hooks","issue_events_url":"https://api.github.com/repos/carystokes/cookie_monstah/issues/events{/number}","events_url":"https://api.github.com/repos/carystokes/cookie_monstah/events","assignees_url":"https://api.github.com/repos/carystokes/cookie_monstah/assignees{/user}","branches_url":"https://api.github.com/repos/carystokes/cookie_monstah/branches{/branch}","tags_url":"https://api.github.com/repos/carystokes/cookie_monstah/tags","blobs_url":"https://api.github.com/repos/carystokes/cookie_monstah/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/carystokes/cookie_monstah/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/carystokes/cookie_monstah/git/refs{/sha}","trees_url":"https://api.github.com/repos/carystokes/cookie_monstah/git/trees{/sha}","statuses_url":"https://api.github.com/repos/carystokes/cookie_monstah/statuses/{sha}","languages_url":"https://api.github.com/repos/carystokes/cookie_monstah/languages","stargazers_url":"https://api.github.com/repos/carystokes/cookie_monstah/stargazers","contributors_url":"https://api.github.com/repos/carystokes/cookie_monstah/contributors","subscribers_url":"https://api.github.com/repos/carystokes/cookie_monstah/subscribers","subscription_url":"https://api.github.com/repos/carystokes/cookie_monstah/subscription","commits_url":"https://api.github.com/repos/carystokes/cookie_monstah/commits{/sha}","git_commits_url":"https://api.github.com/repos/carystokes/cookie_monstah/git/commits{/sha}","comments_url":"https://api.github.com/repos/carystokes/cookie_monstah/comments{/number}","issue_comment_url":"https://api.github.com/repos/carystokes/cookie_monstah/issues/comments{/number}","contents_url":"https://api.github.com/repos/carystokes/cookie_monstah/contents/{+path}","compare_url":"https://api.github.com/repos/carystokes/cookie_monstah/compare/{base}...{head}","merges_url":"https://api.github.com/repos/carystokes/cookie_monstah/merges","archive_url":"https://api.github.com/repos/carystokes/cookie_monstah/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/carystokes/cookie_monstah/downloads","issues_url":"https://api.github.com/repos/carystokes/cookie_monstah/issues{/number}","pulls_url":"https://api.github.com/repos/carystokes/cookie_monstah/pulls{/number}","milestones_url":"https://api.github.com/repos/carystokes/cookie_monstah/milestones{/number}","notifications_url":"https://api.github.com/repos/carystokes/cookie_monstah/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/carystokes/cookie_monstah/labels{/name}","releases_url":"https://api.github.com/repos/carystokes/cookie_monstah/releases{/id}","deployments_url":"https://api.github.com/repos/carystokes/cookie_monstah/deployments","created_at":"2016-10-03T14:45:21Z","updated_at":"2016-10-03T15:08:55Z","pushed_at":"2016-10-12T17:08:52Z","git_url":"git://github.com/carystokes/cookie_monstah.git","ssh_url":"git@github.com:carystokes/cookie_monstah.git","clone_url":"https://github.com/carystokes/cookie_monstah.git","svn_url":"https://github.com/carystokes/cookie_monstah","homepage":null,"size":33636,"stargazers_count":0,"watchers_count":0,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"carystokes:master","ref":"master","sha":"d8d141e67b20e61c7a33884bed145a56e3060ebe","user":{"login":"carystokes","id":18637300,"avatar_url":"https://avatars.githubusercontent.com/u/18637300?v=3","gravatar_id":"","url":"https://api.github.com/users/carystokes","html_url":"https://github.com/carystokes","followers_url":"https://api.github.com/users/carystokes/followers","following_url":"https://api.github.com/users/carystokes/following{/other_user}","gists_url":"https://api.github.com/users/carystokes/gists{/gist_id}","starred_url":"https://api.github.com/users/carystokes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/carystokes/subscriptions","organizations_url":"https://api.github.com/users/carystokes/orgs","repos_url":"https://api.github.com/users/carystokes/repos","events_url":"https://api.github.com/users/carystokes/events{/privacy}","received_events_url":"https://api.github.com/users/carystokes/received_events","type":"User","site_admin":false},"repo":{"id":69880278,"name":"cookie_monstah","full_name":"carystokes/cookie_monstah","owner":{"login":"carystokes","id":18637300,"avatar_url":"https://avatars.githubusercontent.com/u/18637300?v=3","gravatar_id":"","url":"https://api.github.com/users/carystokes","html_url":"https://github.com/carystokes","followers_url":"https://api.github.com/users/carystokes/followers","following_url":"https://api.github.com/users/carystokes/following{/other_user}","gists_url":"https://api.github.com/users/carystokes/gists{/gist_id}","starred_url":"https://api.github.com/users/carystokes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/carystokes/subscriptions","organizations_url":"https://api.github.com/users/carystokes/orgs","repos_url":"https://api.github.com/users/carystokes/repos","events_url":"https://api.github.com/users/carystokes/events{/privacy}","received_events_url":"https://api.github.com/users/carystokes/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/carystokes/cookie_monstah","description":null,"fork":false,"url":"https://api.github.com/repos/carystokes/cookie_monstah","forks_url":"https://api.github.com/repos/carystokes/cookie_monstah/forks","keys_url":"https://api.github.com/repos/carystokes/cookie_monstah/keys{/key_id}","collaborators_url":"https://api.github.com/repos/carystokes/cookie_monstah/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/carystokes/cookie_monstah/teams","hooks_url":"https://api.github.com/repos/carystokes/cookie_monstah/hooks","issue_events_url":"https://api.github.com/repos/carystokes/cookie_monstah/issues/events{/number}","events_url":"https://api.github.com/repos/carystokes/cookie_monstah/events","assignees_url":"https://api.github.com/repos/carystokes/cookie_monstah/assignees{/user}","branches_url":"https://api.github.com/repos/carystokes/cookie_monstah/branches{/branch}","tags_url":"https://api.github.com/repos/carystokes/cookie_monstah/tags","blobs_url":"https://api.github.com/repos/carystokes/cookie_monstah/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/carystokes/cookie_monstah/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/carystokes/cookie_monstah/git/refs{/sha}","trees_url":"https://api.github.com/repos/carystokes/cookie_monstah/git/trees{/sha}","statuses_url":"https://api.github.com/repos/carystokes/cookie_monstah/statuses/{sha}","languages_url":"https://api.github.com/repos/carystokes/cookie_monstah/languages","stargazers_url":"https://api.github.com/repos/carystokes/cookie_monstah/stargazers","contributors_url":"https://api.github.com/repos/carystokes/cookie_monstah/contributors","subscribers_url":"https://api.github.com/repos/carystokes/cookie_monstah/subscribers","subscription_url":"https://api.github.com/repos/carystokes/cookie_monstah/subscription","commits_url":"https://api.github.com/repos/carystokes/cookie_monstah/commits{/sha}","git_commits_url":"https://api.github.com/repos/carystokes/cookie_monstah/git/commits{/sha}","comments_url":"https://api.github.com/repos/carystokes/cookie_monstah/comments{/number}","issue_comment_url":"https://api.github.com/repos/carystokes/cookie_monstah/issues/comments{/number}","contents_url":"https://api.github.com/repos/carystokes/cookie_monstah/contents/{+path}","compare_url":"https://api.github.com/repos/carystokes/cookie_monstah/compare/{base}...{head}","merges_url":"https://api.github.com/repos/carystokes/cookie_monstah/merges","archive_url":"https://api.github.com/repos/carystokes/cookie_monstah/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/carystokes/cookie_monstah/downloads","issues_url":"https://api.github.com/repos/carystokes/cookie_monstah/issues{/number}","pulls_url":"https://api.github.com/repos/carystokes/cookie_monstah/pulls{/number}","milestones_url":"https://api.github.com/repos/carystokes/cookie_monstah/milestones{/number}","notifications_url":"https://api.github.com/repos/carystokes/cookie_monstah/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/carystokes/cookie_monstah/labels{/name}","releases_url":"https://api.github.com/repos/carystokes/cookie_monstah/releases{/id}","deployments_url":"https://api.github.com/repos/carystokes/cookie_monstah/deployments","created_at":"2016-10-03T14:45:21Z","updated_at":"2016-10-03T15:08:55Z","pushed_at":"2016-10-12T17:08:52Z","git_url":"git://github.com/carystokes/cookie_monstah.git","ssh_url":"git@github.com:carystokes/cookie_monstah.git","clone_url":"https://github.com/carystokes/cookie_monstah.git","svn_url":"https://github.com/carystokes/cookie_monstah","homepage":null,"size":33636,"stargazers_count":0,"watchers_count":0,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/carystokes/cookie_monstah/pulls/18"},"html":{"href":"https://github.com/carystokes/cookie_monstah/pull/18"},"issue":{"href":"https://api.github.com/repos/carystokes/cookie_monstah/issues/18"},"comments":{"href":"https://api.github.com/repos/carystokes/cookie_monstah/issues/18/comments"},"review_comments":{"href":"https://api.github.com/repos/carystokes/cookie_monstah/pulls/18/comments"},"review_comment":{"href":"https://api.github.com/repos/carystokes/cookie_monstah/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/carystokes/cookie_monstah/pulls/18/commits"},"statuses":{"href":"https://api.github.com/repos/carystokes/cookie_monstah/statuses/f196ec28a1216c714dfa73a63d7c1ddf587ec37a"}}}}
{"actor":{"display_login":"houndci-bot"}}