{"action":"closed","number":3,"pull_request":{"url":"https://api.github.com/repos/excid3/animatedgifme/pulls/3","id":69814724,"html_url":"https://github.com/excid3/animatedgifme/pull/3","diff_url":"https://github.com/excid3/animatedgifme/pull/3.diff","patch_url":"https://github.com/excid3/animatedgifme/pull/3.patch","issue_url":"https://api.github.com/repos/excid3/animatedgifme/issues/3","number":3,"state":"closed","locked":false,"title":"Refactor class method","user":{"login":"shakycode","id":13086902,"avatar_url":"https://avatars.githubusercontent.com/u/13086902?v=3","gravatar_id":"","url":"https://api.github.com/users/shakycode","html_url":"https://github.com/shakycode","followers_url":"https://api.github.com/users/shakycode/followers","following_url":"https://api.github.com/users/shakycode/following{/other_user}","gists_url":"https://api.github.com/users/shakycode/gists{/gist_id}","starred_url":"https://api.github.com/users/shakycode/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shakycode/subscriptions","organizations_url":"https://api.github.com/users/shakycode/orgs","repos_url":"https://api.github.com/users/shakycode/repos","events_url":"https://api.github.com/users/shakycode/events{/privacy}","received_events_url":"https://api.github.com/users/shakycode/received_events","type":"User","site_admin":false},"body":"@excid3 I think this is what you're looking for.  I changed `retrieve_url` to a class method and and setup the rest of the methods to just use `retrieve_url`.  This way API changes are cleaner and less volatile like you mentioned.  To adapt and change future behavior all we need to do is change the retrieve_url method.\r\n\r\nI tried to put this in a private method but each time I do I get nomethod error for module.  Regardless of calling self on it or not.  So I've left it as a public method for the time being.  Would love your feedback on this.\r\n\r\nBut this PR should satisfy your spec and I've tested it thoroughly and the breaking change is now fixed and is more DRY solution-wise.\r\n\r\nLet me know! 🎱 \r\n\r\n","created_at":"2016-05-12T10:40:40Z","updated_at":"2016-05-12T13:52:12Z","closed_at":"2016-05-12T13:52:12Z","merged_at":"2016-05-12T13:52:12Z","merge_commit_sha":"16e53144aa8b60d1a2d595e39e3de8b0912088df","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/excid3/animatedgifme/pulls/3/commits","review_comments_url":"https://api.github.com/repos/excid3/animatedgifme/pulls/3/comments","review_comment_url":"https://api.github.com/repos/excid3/animatedgifme/pulls/comments{/number}","comments_url":"https://api.github.com/repos/excid3/animatedgifme/issues/3/comments","statuses_url":"https://api.github.com/repos/excid3/animatedgifme/statuses/16c379a2f36cb4cdd53451d0e77c470c4b914368","head":{"label":"shakycode:master","ref":"master","sha":"16c379a2f36cb4cdd53451d0e77c470c4b914368","user":{"login":"shakycode","id":13086902,"avatar_url":"https://avatars.githubusercontent.com/u/13086902?v=3","gravatar_id":"","url":"https://api.github.com/users/shakycode","html_url":"https://github.com/shakycode","followers_url":"https://api.github.com/users/shakycode/followers","following_url":"https://api.github.com/users/shakycode/following{/other_user}","gists_url":"https://api.github.com/users/shakycode/gists{/gist_id}","starred_url":"https://api.github.com/users/shakycode/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shakycode/subscriptions","organizations_url":"https://api.github.com/users/shakycode/orgs","repos_url":"https://api.github.com/users/shakycode/repos","events_url":"https://api.github.com/users/shakycode/events{/privacy}","received_events_url":"https://api.github.com/users/shakycode/received_events","type":"User","site_admin":false},"repo":{"id":58569078,"name":"animatedgifme","full_name":"shakycode/animatedgifme","owner":{"login":"shakycode","id":13086902,"avatar_url":"https://avatars.githubusercontent.com/u/13086902?v=3","gravatar_id":"","url":"https://api.github.com/users/shakycode","html_url":"https://github.com/shakycode","followers_url":"https://api.github.com/users/shakycode/followers","following_url":"https://api.github.com/users/shakycode/following{/other_user}","gists_url":"https://api.github.com/users/shakycode/gists{/gist_id}","starred_url":"https://api.github.com/users/shakycode/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shakycode/subscriptions","organizations_url":"https://api.github.com/users/shakycode/orgs","repos_url":"https://api.github.com/users/shakycode/repos","events_url":"https://api.github.com/users/shakycode/events{/privacy}","received_events_url":"https://api.github.com/users/shakycode/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/shakycode/animatedgifme","description":"A ruby library for http://animatedgif.me","fork":true,"url":"https://api.github.com/repos/shakycode/animatedgifme","forks_url":"https://api.github.com/repos/shakycode/animatedgifme/forks","keys_url":"https://api.github.com/repos/shakycode/animatedgifme/keys{/key_id}","collaborators_url":"https://api.github.com/repos/shakycode/animatedgifme/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/shakycode/animatedgifme/teams","hooks_url":"https://api.github.com/repos/shakycode/animatedgifme/hooks","issue_events_url":"https://api.github.com/repos/shakycode/animatedgifme/issues/events{/number}","events_url":"https://api.github.com/repos/shakycode/animatedgifme/events","assignees_url":"https://api.github.com/repos/shakycode/animatedgifme/assignees{/user}","branches_url":"https://api.github.com/repos/shakycode/animatedgifme/branches{/branch}","tags_url":"https://api.github.com/repos/shakycode/animatedgifme/tags","blobs_url":"https://api.github.com/repos/shakycode/animatedgifme/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/shakycode/animatedgifme/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/shakycode/animatedgifme/git/refs{/sha}","trees_url":"https://api.github.com/repos/shakycode/animatedgifme/git/trees{/sha}","statuses_url":"https://api.github.com/repos/shakycode/animatedgifme/statuses/{sha}","languages_url":"https://api.github.com/repos/shakycode/animatedgifme/languages","stargazers_url":"https://api.github.com/repos/shakycode/animatedgifme/stargazers","contributors_url":"https://api.github.com/repos/shakycode/animatedgifme/contributors","subscribers_url":"https://api.github.com/repos/shakycode/animatedgifme/subscribers","subscription_url":"https://api.github.com/repos/shakycode/animatedgifme/subscription","commits_url":"https://api.github.com/repos/shakycode/animatedgifme/commits{/sha}","git_commits_url":"https://api.github.com/repos/shakycode/animatedgifme/git/commits{/sha}","comments_url":"https://api.github.com/repos/shakycode/animatedgifme/comments{/number}","issue_comment_url":"https://api.github.com/repos/shakycode/animatedgifme/issues/comments{/number}","contents_url":"https://api.github.com/repos/shakycode/animatedgifme/contents/{+path}","compare_url":"https://api.github.com/repos/shakycode/animatedgifme/compare/{base}...{head}","merges_url":"https://api.github.com/repos/shakycode/animatedgifme/merges","archive_url":"https://api.github.com/repos/shakycode/animatedgifme/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/shakycode/animatedgifme/downloads","issues_url":"https://api.github.com/repos/shakycode/animatedgifme/issues{/number}","pulls_url":"https://api.github.com/repos/shakycode/animatedgifme/pulls{/number}","milestones_url":"https://api.github.com/repos/shakycode/animatedgifme/milestones{/number}","notifications_url":"https://api.github.com/repos/shakycode/animatedgifme/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/shakycode/animatedgifme/labels{/name}","releases_url":"https://api.github.com/repos/shakycode/animatedgifme/releases{/id}","deployments_url":"https://api.github.com/repos/shakycode/animatedgifme/deployments","created_at":"2016-05-11T18:10:11Z","updated_at":"2016-05-11T18:10:12Z","pushed_at":"2016-05-12T10:34:08Z","git_url":"git://github.com/shakycode/animatedgifme.git","ssh_url":"git@github.com:shakycode/animatedgifme.git","clone_url":"https://github.com/shakycode/animatedgifme.git","svn_url":"https://github.com/shakycode/animatedgifme","homepage":null,"size":4,"stargazers_count":0,"watchers_count":0,"language":"Ruby","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"excid3:master","ref":"master","sha":"22503612f77e6566ba75de9e17a33a63c9bb254b","user":{"login":"excid3","id":67093,"avatar_url":"https://avatars.githubusercontent.com/u/67093?v=3","gravatar_id":"","url":"https://api.github.com/users/excid3","html_url":"https://github.com/excid3","followers_url":"https://api.github.com/users/excid3/followers","following_url":"https://api.github.com/users/excid3/following{/other_user}","gists_url":"https://api.github.com/users/excid3/gists{/gist_id}","starred_url":"https://api.github.com/users/excid3/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/excid3/subscriptions","organizations_url":"https://api.github.com/users/excid3/orgs","repos_url":"https://api.github.com/users/excid3/repos","events_url":"https://api.github.com/users/excid3/events{/privacy}","received_events_url":"https://api.github.com/users/excid3/received_events","type":"User","site_admin":false},"repo":{"id":23739033,"name":"animatedgifme","full_name":"excid3/animatedgifme","owner":{"login":"excid3","id":67093,"avatar_url":"https://avatars.githubusercontent.com/u/67093?v=3","gravatar_id":"","url":"https://api.github.com/users/excid3","html_url":"https://github.com/excid3","followers_url":"https://api.github.com/users/excid3/followers","following_url":"https://api.github.com/users/excid3/following{/other_user}","gists_url":"https://api.github.com/users/excid3/gists{/gist_id}","starred_url":"https://api.github.com/users/excid3/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/excid3/subscriptions","organizations_url":"https://api.github.com/users/excid3/orgs","repos_url":"https://api.github.com/users/excid3/repos","events_url":"https://api.github.com/users/excid3/events{/privacy}","received_events_url":"https://api.github.com/users/excid3/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/excid3/animatedgifme","description":"A ruby library for http://animatedgif.me","fork":false,"url":"https://api.github.com/repos/excid3/animatedgifme","forks_url":"https://api.github.com/repos/excid3/animatedgifme/forks","keys_url":"https://api.github.com/repos/excid3/animatedgifme/keys{/key_id}","collaborators_url":"https://api.github.com/repos/excid3/animatedgifme/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/excid3/animatedgifme/teams","hooks_url":"https://api.github.com/repos/excid3/animatedgifme/hooks","issue_events_url":"https://api.github.com/repos/excid3/animatedgifme/issues/events{/number}","events_url":"https://api.github.com/repos/excid3/animatedgifme/events","assignees_url":"https://api.github.com/repos/excid3/animatedgifme/assignees{/user}","branches_url":"https://api.github.com/repos/excid3/animatedgifme/branches{/branch}","tags_url":"https://api.github.com/repos/excid3/animatedgifme/tags","blobs_url":"https://api.github.com/repos/excid3/animatedgifme/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/excid3/animatedgifme/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/excid3/animatedgifme/git/refs{/sha}","trees_url":"https://api.github.com/repos/excid3/animatedgifme/git/trees{/sha}","statuses_url":"https://api.github.com/repos/excid3/animatedgifme/statuses/{sha}","languages_url":"https://api.github.com/repos/excid3/animatedgifme/languages","stargazers_url":"https://api.github.com/repos/excid3/animatedgifme/stargazers","contributors_url":"https://api.github.com/repos/excid3/animatedgifme/contributors","subscribers_url":"https://api.github.com/repos/excid3/animatedgifme/subscribers","subscription_url":"https://api.github.com/repos/excid3/animatedgifme/subscription","commits_url":"https://api.github.com/repos/excid3/animatedgifme/commits{/sha}","git_commits_url":"https://api.github.com/repos/excid3/animatedgifme/git/commits{/sha}","comments_url":"https://api.github.com/repos/excid3/animatedgifme/comments{/number}","issue_comment_url":"https://api.github.com/repos/excid3/animatedgifme/issues/comments{/number}","contents_url":"https://api.github.com/repos/excid3/animatedgifme/contents/{+path}","compare_url":"https://api.github.com/repos/excid3/animatedgifme/compare/{base}...{head}","merges_url":"https://api.github.com/repos/excid3/animatedgifme/merges","archive_url":"https://api.github.com/repos/excid3/animatedgifme/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/excid3/animatedgifme/downloads","issues_url":"https://api.github.com/repos/excid3/animatedgifme/issues{/number}","pulls_url":"https://api.github.com/repos/excid3/animatedgifme/pulls{/number}","milestones_url":"https://api.github.com/repos/excid3/animatedgifme/milestones{/number}","notifications_url":"https://api.github.com/repos/excid3/animatedgifme/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/excid3/animatedgifme/labels{/name}","releases_url":"https://api.github.com/repos/excid3/animatedgifme/releases{/id}","deployments_url":"https://api.github.com/repos/excid3/animatedgifme/deployments","created_at":"2014-09-06T16:26:11Z","updated_at":"2016-04-06T18:46:43Z","pushed_at":"2016-05-12T13:52:12Z","git_url":"git://github.com/excid3/animatedgifme.git","ssh_url":"git@github.com:excid3/animatedgifme.git","clone_url":"https://github.com/excid3/animatedgifme.git","svn_url":"https://github.com/excid3/animatedgifme","homepage":null,"size":128,"stargazers_count":6,"watchers_count":6,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":5,"mirror_url":null,"open_issues_count":1,"forks":5,"open_issues":1,"watchers":6,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/excid3/animatedgifme/pulls/3"},"html":{"href":"https://github.com/excid3/animatedgifme/pull/3"},"issue":{"href":"https://api.github.com/repos/excid3/animatedgifme/issues/3"},"comments":{"href":"https://api.github.com/repos/excid3/animatedgifme/issues/3/comments"},"review_comments":{"href":"https://api.github.com/repos/excid3/animatedgifme/pulls/3/comments"},"review_comment":{"href":"https://api.github.com/repos/excid3/animatedgifme/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/excid3/animatedgifme/pulls/3/commits"},"statuses":{"href":"https://api.github.com/repos/excid3/animatedgifme/statuses/16c379a2f36cb4cdd53451d0e77c470c4b914368"}},"merged":true,"mergeable":null,"mergeable_state":"unknown","merged_by":{"login":"excid3","id":67093,"avatar_url":"https://avatars.githubusercontent.com/u/67093?v=3","gravatar_id":"","url":"https://api.github.com/users/excid3","html_url":"https://github.com/excid3","followers_url":"https://api.github.com/users/excid3/followers","following_url":"https://api.github.com/users/excid3/following{/other_user}","gists_url":"https://api.github.com/users/excid3/gists{/gist_id}","starred_url":"https://api.github.com/users/excid3/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/excid3/subscriptions","organizations_url":"https://api.github.com/users/excid3/orgs","repos_url":"https://api.github.com/users/excid3/repos","events_url":"https://api.github.com/users/excid3/events{/privacy}","received_events_url":"https://api.github.com/users/excid3/received_events","type":"User","site_admin":false},"comments":2,"review_comments":0,"commits":2,"additions":7,"deletions":8,"changed_files":2}}