{"action":"created","comment":{"url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/pulls/comments/28121036","id":28121036,"diff_hunk":"@@ -26,128 +27,183 @@\n import org.json.JSONObject;\n \n public class RemoteInterface {\n-\tpublic static final String NO_TAG_VALUE = \"no_tag\";\n-\tpublic static final int NO_CONNECTIVITY_STATUS = -1009;\n-\tpublic static final int NO_API_KEY_STATUS = -1234;\n-\n-\tprivate static final String SDK_VERSION = \"1.4.4\";\n-\tprivate static final int DEFAULT_TIMEOUT = 3000;\n-\t\n-\tpublic RemoteInterface() { }\n-\t\n-\tprivate HttpClient getGenericHttpClient(int timeout) {\n-\t\tif (timeout <= 0)\n-\t\t\ttimeout = DEFAULT_TIMEOUT;\n-\t\tHttpParams httpParams = new BasicHttpParams();\n-\t\tHttpConnectionParams.setConnectionTimeout(httpParams, timeout);\n-\t\tHttpConnectionParams.setSoTimeout(httpParams, timeout);\n-\t\treturn new DefaultHttpClient(httpParams);\n-\t}\n-\t\n-\tprivate ServerResponse processEntityForJSON (HttpEntity entity, int statusCode, String tag, boolean log, BranchLinkData linkData) {\n-\t\tServerResponse result = new ServerResponse(tag, statusCode, linkData);\n-\t\ttry {\n-\t\t\tif (entity != null) {\n-\t\t    \tInputStream instream = entity.getContent();\n-\t\t    \tBufferedReader rd = new BufferedReader(new InputStreamReader(instream));\n-\t\t    \t\n-\t\t    \tString line = rd.readLine();\n-\t\t    \tif (log) PrefHelper.Debug(\"BranchSDK\", \"returned \" + line);\n-\n-\t\t    \tif (line != null) {\n-\t\t    \t\ttry {\n-\t\t    \t\t\tJSONObject jsonObj = new JSONObject(line);\n-\t\t    \t\t\tresult.setPost(jsonObj);\n-\t\t    \t\t} catch (JSONException ex) {\n-\t\t    \t\t\ttry {\n-\t\t    \t\t\t\tJSONArray jsonArray = new JSONArray(line);\n-\t\t    \t\t\t\tresult.setPost(jsonArray);\n-\t\t    \t\t\t} catch (JSONException ex2) {\n-\t\t    \t\t\t\tif (log) PrefHelper.Debug(getClass().getSimpleName(), \"JSON exception: \" + ex2.getMessage());\n-\t\t    \t\t\t}\n-\t\t    \t\t}\n-\t\t\t    } \n-\t\t    }\n-\t   \t} catch (IOException ex) { \n-\t   \t\tif (log) PrefHelper.Debug(getClass().getSimpleName(), \"IO exception: \" + ex.getMessage());\n-\t\t}\n-\t\t\n-\t\treturn result;\n-\t}\n-\t\n-\tpublic ServerResponse make_restful_get(String url, String tag, int timeout) {\n-\t\treturn make_restful_get(url, tag, timeout, true);\n-\t}\n-\t\n-\tpublic ServerResponse make_restful_get(String url, String tag, int timeout, boolean log) {\n-\t\ttry {    \t\n-\t\t\tif (url.indexOf('?') == -1) {\n-\t\t\t\turl += \"?sdk=android\" + SDK_VERSION;\n-\t\t\t} else {\n-\t\t\t\turl += \"&sdk=android\" + SDK_VERSION;\n-\t\t\t}\n-\t\t\tif (log) PrefHelper.Debug(\"BranchSDK\", \"getting \" + url);\n-\t\t    HttpGet request = new HttpGet(url);\n-\t\t    HttpResponse response = getGenericHttpClient(timeout).execute(request);\n-\t\t    return processEntityForJSON(response.getEntity(), response.getStatusLine().getStatusCode(), tag, log, null);\n-\n-\t\t} catch (ClientProtocolException ex) {\n-\t\t\tif (log) PrefHelper.Debug(getClass().getSimpleName(), \"Client protocol exception: \" + ex.getMessage());\n-\t\t} catch (SocketException ex) {\n-\t\t\tif (log) PrefHelper.Debug(getClass().getSimpleName(), \"Http connect exception: \" + ex.getMessage());\n-\t\t\treturn new ServerResponse(tag, NO_CONNECTIVITY_STATUS);\n-\t\t} catch (UnknownHostException ex) {\n-\t\t\tif (log) PrefHelper.Debug(getClass().getSimpleName(), \"Http connect exception: \" + ex.getMessage());\n-\t\t\treturn new ServerResponse(tag, NO_CONNECTIVITY_STATUS);\n-\t\t} catch (IOException ex) { \n-\t\t\tif (log) PrefHelper.Debug(getClass().getSimpleName(), \"IO exception: \" + ex.getMessage());\n-\t\t\treturn new ServerResponse(tag, 500);\n-\t\t}\n-\t\treturn null;\n-\t}\n-\n-\tpublic ServerResponse make_restful_post(JSONObject body, String url, String tag, int timeout) {\n-\t\treturn make_restful_post(body, url, tag, timeout, true, null);\n-\t}\n-\t\n-\tpublic ServerResponse make_restful_post(JSONObject body, String url, String tag, int timeout, BranchLinkData linkData) {\n-\t\treturn make_restful_post(body, url, tag, timeout, true, linkData);\n-\t}\n-\n-\tpublic ServerResponse make_restful_post(JSONObject body, String url, String tag, int timeout, boolean log) {\n-\t\treturn make_restful_post(body, url, tag, timeout, log, null);\n-\t}\n-\t\n-\tpublic ServerResponse make_restful_post(JSONObject body, String url, String tag, int timeout, boolean log, BranchLinkData linkData) {\n-\t\ttry {    \t\n-\t\t\tif (body.has(\"app_id\") && body.getString(\"app_id\").equals(PrefHelper.NO_STRING_VALUE)) {\n-\t\t\t\treturn new ServerResponse(tag, NO_API_KEY_STATUS);\n-\t\t\t}\n-\t\t\t\n-\t\t\tbody.put(\"sdk\", \"android\" + SDK_VERSION);\n-\t\t\tif (log) {\n-\t\t\t\tPrefHelper.Debug(\"BranchSDK\", \"posting to \" + url);\n-\t\t\t\tPrefHelper.Debug(\"BranchSDK\", \"Post value = \" + body.toString());\n-\t\t\t}\n-\t\t    HttpPost request = new HttpPost(url);\n-\t\t    request.setEntity(new ByteArrayEntity(body.toString().getBytes(\"UTF8\")));\n-\t\t    request.setHeader(\"Content-type\", \"application/json\");\n-\t\t    HttpResponse response = getGenericHttpClient(timeout).execute(request);\n-\t\t    return processEntityForJSON(response.getEntity(), response.getStatusLine().getStatusCode(), tag, log, linkData);\n-\n-\t\t} catch (SocketException ex) {\n-\t\t\tif (log) PrefHelper.Debug(getClass().getSimpleName(), \"Http connect exception: \" + ex.getMessage());\n-\t\t\treturn new ServerResponse(tag, NO_CONNECTIVITY_STATUS);\n-\t\t} catch (UnknownHostException ex) {\n-\t\t\tif (log) PrefHelper.Debug(getClass().getSimpleName(), \"Http connect exception: \" + ex.getMessage());\n-\t\t\treturn new ServerResponse(tag, NO_CONNECTIVITY_STATUS);\n-\t\t} catch (Exception ex) {\n-\t\t\tif (log) PrefHelper.Debug(getClass().getSimpleName(), \"Exception: \" + ex.getMessage());\n-\t\t\tif (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) {\n-\t\t\t\tif (ex instanceof NetworkOnMainThreadException)\n-\t\t\t\t\tLog.i(\"BranchSDK\", \"Branch Error: Don't call our synchronous methods on the main thread!!!\");\n-\t\t\t}\n-\t\t\treturn new ServerResponse(tag, 500);\n-\t\t}\n-\t}\n+    public static final String NO_TAG_VALUE = \"no_tag\";\n+    public static final int NO_CONNECTIVITY_STATUS = -1009;\n+    public static final int NO_API_KEY_STATUS = -1234;\n+\n+    private static final String SDK_VERSION = \"1.4.4\";\n+    private static final int DEFAULT_TIMEOUT = 3000;\n+\n+    protected PrefHelper prefHelper_;\n+\n+    public RemoteInterface() { }\n+\n+    public RemoteInterface(Context context) {\n+        prefHelper_ = PrefHelper.getInstance(context);\n+    }\n+\n+    private HttpClient getGenericHttpClient(int timeout) {\n+        if (timeout <= 0) {\n+            timeout = DEFAULT_TIMEOUT;\n+        }\n+        HttpParams httpParams = new BasicHttpParams();\n+        HttpConnectionParams.setConnectionTimeout(httpParams, timeout);\n+        HttpConnectionParams.setSoTimeout(httpParams, timeout);\n+        return new DefaultHttpClient(httpParams);\n+    }\n+\n+    private ServerResponse processEntityForJSON (HttpEntity entity, int statusCode, String tag, boolean log, BranchLinkData linkData) {\n+        ServerResponse result = new ServerResponse(tag, statusCode, linkData);\n+        try {\n+            if (entity != null) {\n+                InputStream instream = entity.getContent();\n+                BufferedReader rd = new BufferedReader(new InputStreamReader(instream));\n+\n+                String line = rd.readLine();\n+                if (log) {\n+                    PrefHelper.Debug(BranchConfig.TAG, \"returned \" + line);\n+                }\n+\n+                if (line != null) {\n+                    try {\n+                        JSONObject jsonObj = new JSONObject(line);\n+                        result.setPost(jsonObj);\n+                    } catch (JSONException ex) {\n+                        try {\n+                            JSONArray jsonArray = new JSONArray(line);\n+                            result.setPost(jsonArray);\n+                        } catch (JSONException ex2) {\n+                            if (log) {\n+                                PrefHelper.Debug(getClass().getSimpleName(), \"JSON exception: \"\n+                                    + ex2.getMessage());\n+                            }\n+                        }\n+                    }\n+                }\n+            }\n+        } catch (IOException ex) {\n+            if (log) {\n+                PrefHelper.Debug(getClass().getSimpleName(), \"IO exception: \"\n+                        + ex.getMessage());\n+            }\n+        }\n+        return result;\n+    }\n+\n+    //region GET Requests\n+    public ServerResponse make_restful_get(String url, String tag, int timeout) {\n+        return make_restful_get(url, tag, timeout, 0, true);\n+    }\n+\n+    public ServerResponse make_restful_get(String url, String tag, int timeout, int retryNumber, boolean log) {\n+        try {\n+            if (url.indexOf('?') == -1) {\n+                url += \"?sdk=android\" + SDK_VERSION;\n+            } else {\n+                url += \"&sdk=android\" + SDK_VERSION;\n+            }\n+            if (log) {\n+                PrefHelper.Debug(BranchConfig.TAG, \"getting \" + url);\n+            }\n+            HttpGet request = new HttpGet(url);\n+            HttpResponse response = getGenericHttpClient(timeout).execute(request);\n+\n+            int statusCode = response.getStatusLine().getStatusCode();\n+            boolean isRetryableStatusCode = statusCode >= 500;\n+\n+            // Retry request before processing\n+            if ( (retryNumber < prefHelper_.getRetryCount()) && isRetryableStatusCode) {\n+                retryNumber +=1;\n+                make_restful_get(url, tag, timeout, retryNumber, log);\n+            } else {\n+                return processEntityForJSON(response.getEntity(),\n+                        response.getStatusLine().getStatusCode(), tag, log, null);\n+            }\n+\n+        } catch (ClientProtocolException ex) {\n+            if (log) {\n+                PrefHelper.Debug(getClass().getSimpleName(), \"Client protocol exception: \" + ex.getMessage());\n+            }\n+        } catch (SocketException ex) {\n+            if (log) {\n+                PrefHelper.Debug(getClass().getSimpleName(), \"Http connect exception: \" + ex.getMessage());\n+            }\n+            return new ServerResponse(tag, NO_CONNECTIVITY_STATUS);\n+        } catch (UnknownHostException ex) {\n+            if (log) {\n+                PrefHelper.Debug(getClass().getSimpleName(), \"Http connect exception: \" + ex.getMessage());\n+            }\n+            return new ServerResponse(tag, NO_CONNECTIVITY_STATUS);\n+        } catch (IOException ex) {\n+            if (log) {\n+                PrefHelper.Debug(getClass().getSimpleName(), \"IO exception: \" + ex.getMessage());\n+            }\n+            return new ServerResponse(tag, 500);\n+        }\n+        return null;\n+    }\n+    //endregion\n+\n+    //region POST requests\n+    public ServerResponse make_restful_post(JSONObject body, String url, String tag, int timeout) {\n+        return make_restful_post(body, url, tag, timeout, 0, true, null);\n+    }\n+\n+    public ServerResponse make_restful_post(JSONObject body, String url, String tag, int timeout, BranchLinkData linkData) {\n+        return make_restful_post(body, url, tag, timeout, 0, true, linkData);\n+    }\n+\n+    public ServerResponse make_restful_post(JSONObject body, String url, String tag, int timeout, boolean log) {\n+        return make_restful_post(body, url, tag, timeout, 0, log, null);\n+    }\n+\n+    public ServerResponse make_restful_post(JSONObject body, String url, String tag, int timeout,\n+                                            int retryNumber, boolean log, BranchLinkData linkData) {\n+        try {\n+            if (body.has(\"app_id\") && body.getString(\"app_id\").equals(PrefHelper.NO_STRING_VALUE)) {","path":"Branch-SDK/src/io/branch/referral/RemoteInterface.java","position":269,"original_position":269,"commit_id":"19575cc2d17cf955f06c8cd355a474529c945e84","original_commit_id":"19575cc2d17cf955f06c8cd355a474529c945e84","user":{"login":"shortstuffsushi","id":1016147,"avatar_url":"https://avatars.githubusercontent.com/u/1016147?v=3","gravatar_id":"","url":"https://api.github.com/users/shortstuffsushi","html_url":"https://github.com/shortstuffsushi","followers_url":"https://api.github.com/users/shortstuffsushi/followers","following_url":"https://api.github.com/users/shortstuffsushi/following{/other_user}","gists_url":"https://api.github.com/users/shortstuffsushi/gists{/gist_id}","starred_url":"https://api.github.com/users/shortstuffsushi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shortstuffsushi/subscriptions","organizations_url":"https://api.github.com/users/shortstuffsushi/orgs","repos_url":"https://api.github.com/users/shortstuffsushi/repos","events_url":"https://api.github.com/users/shortstuffsushi/events{/privacy}","received_events_url":"https://api.github.com/users/shortstuffsushi/received_events","type":"User","site_admin":false},"body":"On iOS, I'm adding the app_id myself in this method, rather than having it passed into this method. That way, rather than having to remember this for every request, things that we *always* want are added to each request. I also add things like sdk=iOS0.x.x, etc.","created_at":"2015-04-10T03:40:14Z","updated_at":"2015-04-10T03:40:14Z","html_url":"https://github.com/BranchMetrics/Branch-Android-SDK/pull/58#discussion_r28121036","pull_request_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/pulls/58","_links":{"self":{"href":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/pulls/comments/28121036"},"html":{"href":"https://github.com/BranchMetrics/Branch-Android-SDK/pull/58#discussion_r28121036"},"pull_request":{"href":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/pulls/58"}}},"pull_request":{"url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/pulls/58","id":33010305,"html_url":"https://github.com/BranchMetrics/Branch-Android-SDK/pull/58","diff_url":"https://github.com/BranchMetrics/Branch-Android-SDK/pull/58.diff","patch_url":"https://github.com/BranchMetrics/Branch-Android-SDK/pull/58.patch","issue_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/issues/58","number":58,"state":"open","locked":false,"title":"Android retry","user":{"login":"Sarkar","id":821940,"avatar_url":"https://avatars.githubusercontent.com/u/821940?v=3","gravatar_id":"","url":"https://api.github.com/users/Sarkar","html_url":"https://github.com/Sarkar","followers_url":"https://api.github.com/users/Sarkar/followers","following_url":"https://api.github.com/users/Sarkar/following{/other_user}","gists_url":"https://api.github.com/users/Sarkar/gists{/gist_id}","starred_url":"https://api.github.com/users/Sarkar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Sarkar/subscriptions","organizations_url":"https://api.github.com/users/Sarkar/orgs","repos_url":"https://api.github.com/users/Sarkar/repos","events_url":"https://api.github.com/users/Sarkar/events{/privacy}","received_events_url":"https://api.github.com/users/Sarkar/received_events","type":"User","site_admin":false},"body":"Refactor retry to network requests instead of at the Branch level. Similar logic to @shortstuffsushi PR. \r\n\r\n@qinweigong - since you have a big PR request coming in, let's figure out the best strategy to avoid conflicts yeah? ","created_at":"2015-04-10T00:58:09Z","updated_at":"2015-04-10T03:40:14Z","closed_at":null,"merged_at":null,"merge_commit_sha":"6a4c7b51c844974b90e42957d4d74e2e24092b33","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/pulls/58/commits","review_comments_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/pulls/58/comments","review_comment_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/pulls/comments{/number}","comments_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/issues/58/comments","statuses_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/statuses/19575cc2d17cf955f06c8cd355a474529c945e84","head":{"label":"BranchMetrics:android-retry","ref":"android-retry","sha":"19575cc2d17cf955f06c8cd355a474529c945e84","user":{"login":"BranchMetrics","id":7772941,"avatar_url":"https://avatars.githubusercontent.com/u/7772941?v=3","gravatar_id":"","url":"https://api.github.com/users/BranchMetrics","html_url":"https://github.com/BranchMetrics","followers_url":"https://api.github.com/users/BranchMetrics/followers","following_url":"https://api.github.com/users/BranchMetrics/following{/other_user}","gists_url":"https://api.github.com/users/BranchMetrics/gists{/gist_id}","starred_url":"https://api.github.com/users/BranchMetrics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BranchMetrics/subscriptions","organizations_url":"https://api.github.com/users/BranchMetrics/orgs","repos_url":"https://api.github.com/users/BranchMetrics/repos","events_url":"https://api.github.com/users/BranchMetrics/events{/privacy}","received_events_url":"https://api.github.com/users/BranchMetrics/received_events","type":"Organization","site_admin":false},"repo":{"id":20421659,"name":"Branch-Android-SDK","full_name":"BranchMetrics/Branch-Android-SDK","owner":{"login":"BranchMetrics","id":7772941,"avatar_url":"https://avatars.githubusercontent.com/u/7772941?v=3","gravatar_id":"","url":"https://api.github.com/users/BranchMetrics","html_url":"https://github.com/BranchMetrics","followers_url":"https://api.github.com/users/BranchMetrics/followers","following_url":"https://api.github.com/users/BranchMetrics/following{/other_user}","gists_url":"https://api.github.com/users/BranchMetrics/gists{/gist_id}","starred_url":"https://api.github.com/users/BranchMetrics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BranchMetrics/subscriptions","organizations_url":"https://api.github.com/users/BranchMetrics/orgs","repos_url":"https://api.github.com/users/BranchMetrics/repos","events_url":"https://api.github.com/users/BranchMetrics/events{/privacy}","received_events_url":"https://api.github.com/users/BranchMetrics/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/BranchMetrics/Branch-Android-SDK","description":null,"fork":false,"url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK","forks_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/forks","keys_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/keys{/key_id}","collaborators_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/teams","hooks_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/hooks","issue_events_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/issues/events{/number}","events_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/events","assignees_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/assignees{/user}","branches_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/branches{/branch}","tags_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/tags","blobs_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/git/refs{/sha}","trees_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/git/trees{/sha}","statuses_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/statuses/{sha}","languages_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/languages","stargazers_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/stargazers","contributors_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/contributors","subscribers_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/subscribers","subscription_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/subscription","commits_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/commits{/sha}","git_commits_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/git/commits{/sha}","comments_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/comments{/number}","issue_comment_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/issues/comments{/number}","contents_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/contents/{+path}","compare_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/compare/{base}...{head}","merges_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/merges","archive_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/downloads","issues_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/issues{/number}","pulls_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/pulls{/number}","milestones_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/milestones{/number}","notifications_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/labels{/name}","releases_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/releases{/id}","created_at":"2014-06-02T22:17:59Z","updated_at":"2015-04-08T19:16:17Z","pushed_at":"2015-04-10T00:58:10Z","git_url":"git://github.com/BranchMetrics/Branch-Android-SDK.git","ssh_url":"git@github.com:BranchMetrics/Branch-Android-SDK.git","clone_url":"https://github.com/BranchMetrics/Branch-Android-SDK.git","svn_url":"https://github.com/BranchMetrics/Branch-Android-SDK","homepage":null,"size":8612,"stargazers_count":20,"watchers_count":20,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":9,"mirror_url":null,"open_issues_count":5,"forks":9,"open_issues":5,"watchers":20,"default_branch":"master"}},"base":{"label":"BranchMetrics:master","ref":"master","sha":"d70c5a71503e50a773b18e8545f28682b0f81eaf","user":{"login":"BranchMetrics","id":7772941,"avatar_url":"https://avatars.githubusercontent.com/u/7772941?v=3","gravatar_id":"","url":"https://api.github.com/users/BranchMetrics","html_url":"https://github.com/BranchMetrics","followers_url":"https://api.github.com/users/BranchMetrics/followers","following_url":"https://api.github.com/users/BranchMetrics/following{/other_user}","gists_url":"https://api.github.com/users/BranchMetrics/gists{/gist_id}","starred_url":"https://api.github.com/users/BranchMetrics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BranchMetrics/subscriptions","organizations_url":"https://api.github.com/users/BranchMetrics/orgs","repos_url":"https://api.github.com/users/BranchMetrics/repos","events_url":"https://api.github.com/users/BranchMetrics/events{/privacy}","received_events_url":"https://api.github.com/users/BranchMetrics/received_events","type":"Organization","site_admin":false},"repo":{"id":20421659,"name":"Branch-Android-SDK","full_name":"BranchMetrics/Branch-Android-SDK","owner":{"login":"BranchMetrics","id":7772941,"avatar_url":"https://avatars.githubusercontent.com/u/7772941?v=3","gravatar_id":"","url":"https://api.github.com/users/BranchMetrics","html_url":"https://github.com/BranchMetrics","followers_url":"https://api.github.com/users/BranchMetrics/followers","following_url":"https://api.github.com/users/BranchMetrics/following{/other_user}","gists_url":"https://api.github.com/users/BranchMetrics/gists{/gist_id}","starred_url":"https://api.github.com/users/BranchMetrics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BranchMetrics/subscriptions","organizations_url":"https://api.github.com/users/BranchMetrics/orgs","repos_url":"https://api.github.com/users/BranchMetrics/repos","events_url":"https://api.github.com/users/BranchMetrics/events{/privacy}","received_events_url":"https://api.github.com/users/BranchMetrics/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/BranchMetrics/Branch-Android-SDK","description":null,"fork":false,"url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK","forks_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/forks","keys_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/keys{/key_id}","collaborators_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/teams","hooks_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/hooks","issue_events_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/issues/events{/number}","events_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/events","assignees_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/assignees{/user}","branches_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/branches{/branch}","tags_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/tags","blobs_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/git/refs{/sha}","trees_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/git/trees{/sha}","statuses_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/statuses/{sha}","languages_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/languages","stargazers_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/stargazers","contributors_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/contributors","subscribers_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/subscribers","subscription_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/subscription","commits_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/commits{/sha}","git_commits_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/git/commits{/sha}","comments_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/comments{/number}","issue_comment_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/issues/comments{/number}","contents_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/contents/{+path}","compare_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/compare/{base}...{head}","merges_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/merges","archive_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/downloads","issues_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/issues{/number}","pulls_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/pulls{/number}","milestones_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/milestones{/number}","notifications_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/labels{/name}","releases_url":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/releases{/id}","created_at":"2014-06-02T22:17:59Z","updated_at":"2015-04-08T19:16:17Z","pushed_at":"2015-04-10T00:58:10Z","git_url":"git://github.com/BranchMetrics/Branch-Android-SDK.git","ssh_url":"git@github.com:BranchMetrics/Branch-Android-SDK.git","clone_url":"https://github.com/BranchMetrics/Branch-Android-SDK.git","svn_url":"https://github.com/BranchMetrics/Branch-Android-SDK","homepage":null,"size":8612,"stargazers_count":20,"watchers_count":20,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":9,"mirror_url":null,"open_issues_count":5,"forks":9,"open_issues":5,"watchers":20,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/pulls/58"},"html":{"href":"https://github.com/BranchMetrics/Branch-Android-SDK/pull/58"},"issue":{"href":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/issues/58"},"comments":{"href":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/issues/58/comments"},"review_comments":{"href":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/pulls/58/comments"},"review_comment":{"href":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/pulls/58/commits"},"statuses":{"href":"https://api.github.com/repos/BranchMetrics/Branch-Android-SDK/statuses/19575cc2d17cf955f06c8cd355a474529c945e84"}}}}