{"action":"created","comment":{"url":"https://api.github.com/repos/kabouzeid/Phonograph/pulls/comments/130226439","pull_request_review_id":53081911,"id":130226439,"diff_hunk":"@@ -0,0 +1,279 @@\n+package com.kabouzeid.gramophone.views;\n+\n+import android.app.Activity;\n+import android.content.Context;\n+import android.graphics.Rect;\n+import android.util.AttributeSet;\n+import android.view.MotionEvent;\n+import android.widget.HorizontalScrollView;\n+\n+import com.kabouzeid.gramophone.R;\n+import com.sothree.slidinguppanel.SlidingUpPanelLayout;\n+\n+/**\n+ * @author Lincoln (theduffmaster)\n+ *\n+ * A custom HorizontalScrollView that is only useful as the child of a TouchInterceptFrameLayout.\n+ * This allows for the TouchInterceptFrameLayout to disable and enable scrolling in addition to\n+ * being able to know when a user is and is not interacting with the scrolling view.\n+ *\n+ * Must have a TouchInterceptTextView as it's child. It can only have one child.\n+ */\n+public class TouchInterceptHorizontalScrollView extends HorizontalScrollView {\n+\n+    public static final String TAG = TouchInterceptHorizontalScrollView.class.getSimpleName();\n+\n+    // The delay before triggering onEndScroll()\n+    public static final int ON_END_SCROLL_DELAY = 1000;\n+    private static final int MAX_CLICK_DISTANCE = 5;\n+\n+    private float startX;\n+    private Rect scrollViewRect = new Rect();\n+\n+    private long lastScrollUpdate = -1;\n+\n+    private boolean mIsFling;\n+\n+    // Whether user is interacting with this again and to cancel text retruncate\n+    private boolean cancel;\n+    private boolean cancelCheck;\n+\n+    // Whether to untruncate the text in the TouchInterceptTextView\n+    private boolean unTruncate;\n+\n+    // Whether this was touched\n+    private boolean touched;\n+\n+    private OnEndScrollListener onEndScrollListener;\n+\n+    private SlidingUpPanelLayout queue;\n+\n+    private boolean mScrollable = true;\n+\n+    public TouchInterceptHorizontalScrollView(Context context) {\n+        super(context);\n+\n+        init();\n+    }\n+\n+    public TouchInterceptHorizontalScrollView(Context context, AttributeSet attrs) {\n+        super(context, attrs);\n+\n+        init();\n+    }\n+\n+    public TouchInterceptHorizontalScrollView(Context context, AttributeSet attrs, int defStyleAttr) {\n+        super(context, attrs, defStyleAttr);\n+\n+        init();\n+    }\n+\n+    private void init() {\n+        setTag(TouchInterceptHorizontalScrollView.TAG);\n+        setHorizontalScrollBarEnabled(false);\n+    }\n+\n+    public TouchInterceptFrameLayout getTouchInterceptFrameLayout() {\n+        return (TouchInterceptFrameLayout) getRootView().findViewWithTag(TouchInterceptFrameLayout.TAG);\n+    }\n+\n+    /**\n+     * @return Returns the child TouchInterceptTextView\n+     */\n+    public TouchInterceptTextView getTouchInterceptTextView() {\n+        return (TouchInterceptTextView) this.getChildAt(0);\n+    }\n+\n+    /**\n+     * Disables and enables the ScrollView\n+     *\n+     * @param scrollable set to \"true\" to enable, \"false\" to disable\n+     */\n+    public void setScrollable(boolean scrollable) {\n+        mScrollable = scrollable;\n+    }\n+\n+    /**\n+     * Returns whether the ScrollView is enabled or disabled\n+     *\n+     * @return Returns \"true\" if enabled, \"false\" if disabled\n+     */\n+    public boolean isScrollable() {\n+        return mScrollable;\n+    }\n+\n+    /**\n+     * @return Returns true if this ScrollView can be scrolled\n+     */\n+    public boolean canScroll() {\n+        return (canScrollHorizontally(1) || canScrollHorizontally(-1));\n+    }\n+\n+    @Override\n+    public boolean onTouchEvent(MotionEvent e) {\n+        switch (e.getAction()) {\n+            case MotionEvent.ACTION_DOWN:\n+                touched = true;\n+                cancel = true;\n+                startX = e.getX();\n+\n+                // If we can scroll pass the event to the superclass\n+                if (mScrollable) {\n+                    return super.onTouchEvent(e);\n+                }\n+\n+                // Only continue to handle the touch event if scrolling enabled\n+                return false;\n+\n+            case MotionEvent.ACTION_MOVE:\n+                float distance = Math.abs(e.getX() - startX);\n+\n+                // Currently scrolling so untruncate text\n+                if (unTruncate && distance > MAX_CLICK_DISTANCE) {\n+                    getTouchInterceptTextView().unTruncateText();\n+                    unTruncate = false;\n+                }\n+\n+            case MotionEvent.ACTION_UP:\n+                slidingPanelSetTouchEnabled(true);\n+                touched = false;\n+                // The user is done interacting with the scroll view\n+                cancel = false;\n+                postDelayed(new ScrollStateHandler(), ON_END_SCROLL_DELAY);\n+                lastScrollUpdate = System.currentTimeMillis();\n+                unTruncate = true;\n+\n+            default:\n+                return super.onTouchEvent(e);\n+        }\n+    }\n+\n+    @Override\n+    public boolean onInterceptTouchEvent(MotionEvent e) {\n+        if (e.getAction() == MotionEvent.ACTION_DOWN) {\n+            slidingPanelSetTouchEnabled(true);\n+        }\n+\n+        int x = Math.round(e.getRawX());\n+        int y = Math.round(e.getRawY());\n+\n+        scrollViewRect = new Rect();\n+\n+        getGlobalVisibleRect(scrollViewRect);\n+\n+        boolean touchedScrollView =\n+                x > scrollViewRect.left && x < scrollViewRect.right &&\n+                y > scrollViewRect.top && y < scrollViewRect.bottom;\n+\n+        if (!touchedScrollView) {\n+            return false;\n+        }\n+\n+        // Don't do anything with intercepted touch events if not scrollable\n+        if (!mScrollable) {\n+            onTouchEvent(e);\n+            return false;\n+        }\n+\n+        return super.onInterceptTouchEvent(e);\n+    }\n+\n+    /**\n+     * @return Returns the set OnEndScrollListener\n+     */\n+    public OnEndScrollListener getOnEndScrollListener() {\n+        return onEndScrollListener;\n+    }\n+\n+    /**\n+     * Sets an OnEndScrollListener. Only one can be set at a time.\n+     *\n+     * @param mOnEndScrollListener The OnEndScrollListener to be set\n+     */\n+    public void setOnEndScrollListener(OnEndScrollListener mOnEndScrollListener) {\n+        this.onEndScrollListener = mOnEndScrollListener;\n+    }\n+\n+    @Override\n+    public void fling(int velocityX) {\n+        super.fling(velocityX);\n+        mIsFling = true;\n+    }\n+\n+    @Override\n+    protected void onScrollChanged(int x, int y, int oldX, int oldY) {\n+        super.onScrollChanged(x, y, oldX, oldY);\n+\n+        if (touched | mIsFling) {\n+            slidingPanelSetTouchEnabled(false);\n+        }\n+\n+        CancelClick();\n+\n+        if (cancelCheck) {\n+            cancel = true;\n+        }\n+\n+        if (mIsFling && (Math.abs(x - oldX) < 2 || x >= getMeasuredWidth() || x == 0)) {\n+            slidingPanelSetTouchEnabled(true);\n+            touched = false;\n+            // The user is done interacting with the scroll view\n+            cancel = false;\n+            postDelayed(new ScrollStateHandler(), ON_END_SCROLL_DELAY);\n+            lastScrollUpdate = System.currentTimeMillis();\n+            mIsFling = false;\n+            cancelCheck = false;\n+            unTruncate = true;\n+        }\n+    }\n+\n+    /**\n+     * Enables and disables Sliding Panel dragging for the playing queue sliding panel.\n+     *\n+     * @param enable Set true to enable dragging, false to disable\n+     */\n+    public void slidingPanelSetTouchEnabled(boolean enable) {","path":"app/src/main/java/com/kabouzeid/gramophone/views/TouchInterceptHorizontalScrollView.java","position":235,"original_position":235,"commit_id":"cbf25cbb766e95e82720d259ee80e23301a296df","original_commit_id":"cbf25cbb766e95e82720d259ee80e23301a296df","user":{"login":"theduffmaster","id":6335389,"avatar_url":"https://avatars3.githubusercontent.com/u/6335389?v=4","gravatar_id":"","url":"https://api.github.com/users/theduffmaster","html_url":"https://github.com/theduffmaster","followers_url":"https://api.github.com/users/theduffmaster/followers","following_url":"https://api.github.com/users/theduffmaster/following{/other_user}","gists_url":"https://api.github.com/users/theduffmaster/gists{/gist_id}","starred_url":"https://api.github.com/users/theduffmaster/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/theduffmaster/subscriptions","organizations_url":"https://api.github.com/users/theduffmaster/orgs","repos_url":"https://api.github.com/users/theduffmaster/repos","events_url":"https://api.github.com/users/theduffmaster/events{/privacy}","received_events_url":"https://api.github.com/users/theduffmaster/received_events","type":"User","site_admin":false},"body":"It doesn't seem like it even does it's job very well so I'm going to remove it.","created_at":"2017-07-29T19:06:56Z","updated_at":"2017-07-29T19:06:56Z","html_url":"https://github.com/kabouzeid/Phonograph/pull/160#discussion_r130226439","pull_request_url":"https://api.github.com/repos/kabouzeid/Phonograph/pulls/160","_links":{"self":{"href":"https://api.github.com/repos/kabouzeid/Phonograph/pulls/comments/130226439"},"html":{"href":"https://github.com/kabouzeid/Phonograph/pull/160#discussion_r130226439"},"pull_request":{"href":"https://api.github.com/repos/kabouzeid/Phonograph/pulls/160"}}},"pull_request":{"url":"https://api.github.com/repos/kabouzeid/Phonograph/pulls/160","id":123370245,"html_url":"https://github.com/kabouzeid/Phonograph/pull/160","diff_url":"https://github.com/kabouzeid/Phonograph/pull/160.diff","patch_url":"https://github.com/kabouzeid/Phonograph/pull/160.patch","issue_url":"https://api.github.com/repos/kabouzeid/Phonograph/issues/160","number":160,"state":"open","locked":false,"title":"Put song title text view into a horizontal scrollview so you can see the full song title on songs with longer song titles","user":{"login":"theduffmaster","id":6335389,"avatar_url":"https://avatars3.githubusercontent.com/u/6335389?v=4","gravatar_id":"","url":"https://api.github.com/users/theduffmaster","html_url":"https://github.com/theduffmaster","followers_url":"https://api.github.com/users/theduffmaster/followers","following_url":"https://api.github.com/users/theduffmaster/following{/other_user}","gists_url":"https://api.github.com/users/theduffmaster/gists{/gist_id}","starred_url":"https://api.github.com/users/theduffmaster/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/theduffmaster/subscriptions","organizations_url":"https://api.github.com/users/theduffmaster/orgs","repos_url":"https://api.github.com/users/theduffmaster/repos","events_url":"https://api.github.com/users/theduffmaster/events{/privacy}","received_events_url":"https://api.github.com/users/theduffmaster/received_events","type":"User","site_admin":false},"body":"There's not a lot of room for the song title in the current song view, which means the song title gets cut off most of the time and it's hard to figure out what the full name of the song is without going into the song details dialog. All of this is very annoying. Putting the textview into a horizontal scroll view is an elegant solution because it doesn't compromise any existing functionality, it doesn't change anything and it is very easy for the user to interact with. ","created_at":"2017-05-31T21:13:17Z","updated_at":"2017-07-29T19:06:56Z","closed_at":null,"merged_at":null,"merge_commit_sha":"7243f3aacf22ff381bef4639d609b25d986ad637","assignee":{"login":"kabouzeid","id":7303830,"avatar_url":"https://avatars1.githubusercontent.com/u/7303830?v=4","gravatar_id":"","url":"https://api.github.com/users/kabouzeid","html_url":"https://github.com/kabouzeid","followers_url":"https://api.github.com/users/kabouzeid/followers","following_url":"https://api.github.com/users/kabouzeid/following{/other_user}","gists_url":"https://api.github.com/users/kabouzeid/gists{/gist_id}","starred_url":"https://api.github.com/users/kabouzeid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kabouzeid/subscriptions","organizations_url":"https://api.github.com/users/kabouzeid/orgs","repos_url":"https://api.github.com/users/kabouzeid/repos","events_url":"https://api.github.com/users/kabouzeid/events{/privacy}","received_events_url":"https://api.github.com/users/kabouzeid/received_events","type":"User","site_admin":false},"assignees":[{"login":"kabouzeid","id":7303830,"avatar_url":"https://avatars1.githubusercontent.com/u/7303830?v=4","gravatar_id":"","url":"https://api.github.com/users/kabouzeid","html_url":"https://github.com/kabouzeid","followers_url":"https://api.github.com/users/kabouzeid/followers","following_url":"https://api.github.com/users/kabouzeid/following{/other_user}","gists_url":"https://api.github.com/users/kabouzeid/gists{/gist_id}","starred_url":"https://api.github.com/users/kabouzeid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kabouzeid/subscriptions","organizations_url":"https://api.github.com/users/kabouzeid/orgs","repos_url":"https://api.github.com/users/kabouzeid/repos","events_url":"https://api.github.com/users/kabouzeid/events{/privacy}","received_events_url":"https://api.github.com/users/kabouzeid/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/kabouzeid/Phonograph/pulls/160/commits","review_comments_url":"https://api.github.com/repos/kabouzeid/Phonograph/pulls/160/comments","review_comment_url":"https://api.github.com/repos/kabouzeid/Phonograph/pulls/comments{/number}","comments_url":"https://api.github.com/repos/kabouzeid/Phonograph/issues/160/comments","statuses_url":"https://api.github.com/repos/kabouzeid/Phonograph/statuses/cbf25cbb766e95e82720d259ee80e23301a296df","head":{"label":"theduffmaster:song_name_scroll","ref":"song_name_scroll","sha":"cbf25cbb766e95e82720d259ee80e23301a296df","user":{"login":"theduffmaster","id":6335389,"avatar_url":"https://avatars3.githubusercontent.com/u/6335389?v=4","gravatar_id":"","url":"https://api.github.com/users/theduffmaster","html_url":"https://github.com/theduffmaster","followers_url":"https://api.github.com/users/theduffmaster/followers","following_url":"https://api.github.com/users/theduffmaster/following{/other_user}","gists_url":"https://api.github.com/users/theduffmaster/gists{/gist_id}","starred_url":"https://api.github.com/users/theduffmaster/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/theduffmaster/subscriptions","organizations_url":"https://api.github.com/users/theduffmaster/orgs","repos_url":"https://api.github.com/users/theduffmaster/repos","events_url":"https://api.github.com/users/theduffmaster/events{/privacy}","received_events_url":"https://api.github.com/users/theduffmaster/received_events","type":"User","site_admin":false},"repo":{"id":92979553,"name":"Phonograph","full_name":"theduffmaster/Phonograph","owner":{"login":"theduffmaster","id":6335389,"avatar_url":"https://avatars3.githubusercontent.com/u/6335389?v=4","gravatar_id":"","url":"https://api.github.com/users/theduffmaster","html_url":"https://github.com/theduffmaster","followers_url":"https://api.github.com/users/theduffmaster/followers","following_url":"https://api.github.com/users/theduffmaster/following{/other_user}","gists_url":"https://api.github.com/users/theduffmaster/gists{/gist_id}","starred_url":"https://api.github.com/users/theduffmaster/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/theduffmaster/subscriptions","organizations_url":"https://api.github.com/users/theduffmaster/orgs","repos_url":"https://api.github.com/users/theduffmaster/repos","events_url":"https://api.github.com/users/theduffmaster/events{/privacy}","received_events_url":"https://api.github.com/users/theduffmaster/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/theduffmaster/Phonograph","description":"A material designed music player for Android","fork":true,"url":"https://api.github.com/repos/theduffmaster/Phonograph","forks_url":"https://api.github.com/repos/theduffmaster/Phonograph/forks","keys_url":"https://api.github.com/repos/theduffmaster/Phonograph/keys{/key_id}","collaborators_url":"https://api.github.com/repos/theduffmaster/Phonograph/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/theduffmaster/Phonograph/teams","hooks_url":"https://api.github.com/repos/theduffmaster/Phonograph/hooks","issue_events_url":"https://api.github.com/repos/theduffmaster/Phonograph/issues/events{/number}","events_url":"https://api.github.com/repos/theduffmaster/Phonograph/events","assignees_url":"https://api.github.com/repos/theduffmaster/Phonograph/assignees{/user}","branches_url":"https://api.github.com/repos/theduffmaster/Phonograph/branches{/branch}","tags_url":"https://api.github.com/repos/theduffmaster/Phonograph/tags","blobs_url":"https://api.github.com/repos/theduffmaster/Phonograph/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/theduffmaster/Phonograph/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/theduffmaster/Phonograph/git/refs{/sha}","trees_url":"https://api.github.com/repos/theduffmaster/Phonograph/git/trees{/sha}","statuses_url":"https://api.github.com/repos/theduffmaster/Phonograph/statuses/{sha}","languages_url":"https://api.github.com/repos/theduffmaster/Phonograph/languages","stargazers_url":"https://api.github.com/repos/theduffmaster/Phonograph/stargazers","contributors_url":"https://api.github.com/repos/theduffmaster/Phonograph/contributors","subscribers_url":"https://api.github.com/repos/theduffmaster/Phonograph/subscribers","subscription_url":"https://api.github.com/repos/theduffmaster/Phonograph/subscription","commits_url":"https://api.github.com/repos/theduffmaster/Phonograph/commits{/sha}","git_commits_url":"https://api.github.com/repos/theduffmaster/Phonograph/git/commits{/sha}","comments_url":"https://api.github.com/repos/theduffmaster/Phonograph/comments{/number}","issue_comment_url":"https://api.github.com/repos/theduffmaster/Phonograph/issues/comments{/number}","contents_url":"https://api.github.com/repos/theduffmaster/Phonograph/contents/{+path}","compare_url":"https://api.github.com/repos/theduffmaster/Phonograph/compare/{base}...{head}","merges_url":"https://api.github.com/repos/theduffmaster/Phonograph/merges","archive_url":"https://api.github.com/repos/theduffmaster/Phonograph/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/theduffmaster/Phonograph/downloads","issues_url":"https://api.github.com/repos/theduffmaster/Phonograph/issues{/number}","pulls_url":"https://api.github.com/repos/theduffmaster/Phonograph/pulls{/number}","milestones_url":"https://api.github.com/repos/theduffmaster/Phonograph/milestones{/number}","notifications_url":"https://api.github.com/repos/theduffmaster/Phonograph/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/theduffmaster/Phonograph/labels{/name}","releases_url":"https://api.github.com/repos/theduffmaster/Phonograph/releases{/id}","deployments_url":"https://api.github.com/repos/theduffmaster/Phonograph/deployments","created_at":"2017-05-31T19:07:37Z","updated_at":"2017-05-31T20:19:30Z","pushed_at":"2017-07-29T02:14:01Z","git_url":"git://github.com/theduffmaster/Phonograph.git","ssh_url":"git@github.com:theduffmaster/Phonograph.git","clone_url":"https://github.com/theduffmaster/Phonograph.git","svn_url":"https://github.com/theduffmaster/Phonograph","homepage":"","size":13358,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_projects":true,"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":"kabouzeid:master","ref":"master","sha":"58069084d98b61608fe8e07fe49d7c04176ca4a7","user":{"login":"kabouzeid","id":7303830,"avatar_url":"https://avatars1.githubusercontent.com/u/7303830?v=4","gravatar_id":"","url":"https://api.github.com/users/kabouzeid","html_url":"https://github.com/kabouzeid","followers_url":"https://api.github.com/users/kabouzeid/followers","following_url":"https://api.github.com/users/kabouzeid/following{/other_user}","gists_url":"https://api.github.com/users/kabouzeid/gists{/gist_id}","starred_url":"https://api.github.com/users/kabouzeid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kabouzeid/subscriptions","organizations_url":"https://api.github.com/users/kabouzeid/orgs","repos_url":"https://api.github.com/users/kabouzeid/repos","events_url":"https://api.github.com/users/kabouzeid/events{/privacy}","received_events_url":"https://api.github.com/users/kabouzeid/received_events","type":"User","site_admin":false},"repo":{"id":31720673,"name":"Phonograph","full_name":"kabouzeid/Phonograph","owner":{"login":"kabouzeid","id":7303830,"avatar_url":"https://avatars1.githubusercontent.com/u/7303830?v=4","gravatar_id":"","url":"https://api.github.com/users/kabouzeid","html_url":"https://github.com/kabouzeid","followers_url":"https://api.github.com/users/kabouzeid/followers","following_url":"https://api.github.com/users/kabouzeid/following{/other_user}","gists_url":"https://api.github.com/users/kabouzeid/gists{/gist_id}","starred_url":"https://api.github.com/users/kabouzeid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kabouzeid/subscriptions","organizations_url":"https://api.github.com/users/kabouzeid/orgs","repos_url":"https://api.github.com/users/kabouzeid/repos","events_url":"https://api.github.com/users/kabouzeid/events{/privacy}","received_events_url":"https://api.github.com/users/kabouzeid/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/kabouzeid/Phonograph","description":"A material designed music player for Android","fork":false,"url":"https://api.github.com/repos/kabouzeid/Phonograph","forks_url":"https://api.github.com/repos/kabouzeid/Phonograph/forks","keys_url":"https://api.github.com/repos/kabouzeid/Phonograph/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kabouzeid/Phonograph/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kabouzeid/Phonograph/teams","hooks_url":"https://api.github.com/repos/kabouzeid/Phonograph/hooks","issue_events_url":"https://api.github.com/repos/kabouzeid/Phonograph/issues/events{/number}","events_url":"https://api.github.com/repos/kabouzeid/Phonograph/events","assignees_url":"https://api.github.com/repos/kabouzeid/Phonograph/assignees{/user}","branches_url":"https://api.github.com/repos/kabouzeid/Phonograph/branches{/branch}","tags_url":"https://api.github.com/repos/kabouzeid/Phonograph/tags","blobs_url":"https://api.github.com/repos/kabouzeid/Phonograph/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kabouzeid/Phonograph/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kabouzeid/Phonograph/git/refs{/sha}","trees_url":"https://api.github.com/repos/kabouzeid/Phonograph/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kabouzeid/Phonograph/statuses/{sha}","languages_url":"https://api.github.com/repos/kabouzeid/Phonograph/languages","stargazers_url":"https://api.github.com/repos/kabouzeid/Phonograph/stargazers","contributors_url":"https://api.github.com/repos/kabouzeid/Phonograph/contributors","subscribers_url":"https://api.github.com/repos/kabouzeid/Phonograph/subscribers","subscription_url":"https://api.github.com/repos/kabouzeid/Phonograph/subscription","commits_url":"https://api.github.com/repos/kabouzeid/Phonograph/commits{/sha}","git_commits_url":"https://api.github.com/repos/kabouzeid/Phonograph/git/commits{/sha}","comments_url":"https://api.github.com/repos/kabouzeid/Phonograph/comments{/number}","issue_comment_url":"https://api.github.com/repos/kabouzeid/Phonograph/issues/comments{/number}","contents_url":"https://api.github.com/repos/kabouzeid/Phonograph/contents/{+path}","compare_url":"https://api.github.com/repos/kabouzeid/Phonograph/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kabouzeid/Phonograph/merges","archive_url":"https://api.github.com/repos/kabouzeid/Phonograph/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kabouzeid/Phonograph/downloads","issues_url":"https://api.github.com/repos/kabouzeid/Phonograph/issues{/number}","pulls_url":"https://api.github.com/repos/kabouzeid/Phonograph/pulls{/number}","milestones_url":"https://api.github.com/repos/kabouzeid/Phonograph/milestones{/number}","notifications_url":"https://api.github.com/repos/kabouzeid/Phonograph/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kabouzeid/Phonograph/labels{/name}","releases_url":"https://api.github.com/repos/kabouzeid/Phonograph/releases{/id}","deployments_url":"https://api.github.com/repos/kabouzeid/Phonograph/deployments","created_at":"2015-03-05T15:28:53Z","updated_at":"2017-07-27T19:52:56Z","pushed_at":"2017-07-29T17:29:25Z","git_url":"git://github.com/kabouzeid/Phonograph.git","ssh_url":"git@github.com:kabouzeid/Phonograph.git","clone_url":"https://github.com/kabouzeid/Phonograph.git","svn_url":"https://github.com/kabouzeid/Phonograph","homepage":"","size":13155,"stargazers_count":1262,"watchers_count":1262,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":229,"mirror_url":null,"open_issues_count":67,"forks":229,"open_issues":67,"watchers":1262,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/kabouzeid/Phonograph/pulls/160"},"html":{"href":"https://github.com/kabouzeid/Phonograph/pull/160"},"issue":{"href":"https://api.github.com/repos/kabouzeid/Phonograph/issues/160"},"comments":{"href":"https://api.github.com/repos/kabouzeid/Phonograph/issues/160/comments"},"review_comments":{"href":"https://api.github.com/repos/kabouzeid/Phonograph/pulls/160/comments"},"review_comment":{"href":"https://api.github.com/repos/kabouzeid/Phonograph/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/kabouzeid/Phonograph/pulls/160/commits"},"statuses":{"href":"https://api.github.com/repos/kabouzeid/Phonograph/statuses/cbf25cbb766e95e82720d259ee80e23301a296df"}}}}
{"actor":{"display_login":"theduffmaster"}}