GitHub PullRequestReviewCommentEvent at 2014-12-26 07:33:13
Repository: DexDrip
Actor: tzachi-dar
Payload: {"action":"created","comment":{"url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/pulls/comments/22279808","id":22279808,"diff_hunk":"@@ -0,0 +1,342 @@\n+package com.eveningoutpost.dexdrip.Services;\n+\n+import java.io.IOException;\n+import java.util.Date;\n+import java.io.BufferedReader;\n+import java.io.InputStreamReader;\n+import java.io.PrintWriter;\n+import java.net.Socket;\n+import java.net.SocketTimeoutException;\n+import java.util.LinkedList;\n+import java.util.List;\n+\n+import android.content.Context;\n+import android.util.Log;\n+\n+import com.google.gson.Gson;\n+import com.google.gson.GsonBuilder;\n+import com.eveningoutpost.dexdrip.Sensor;\n+import com.eveningoutpost.dexdrip.Models.BgReading;\n+import com.eveningoutpost.dexdrip.Models.TransmitterData;\n+\n+public class WixelReader  extends Thread {\n+\n+    private final static String TAG = WixelReader.class.getName();\n+    private static WixelReader singleton;\n+    \n+    public synchronized static WixelReader getInstance(Context ctx) {\n+        if(singleton == null) {\n+           singleton = new WixelReader(ctx);\n+        }\n+        return singleton;\n+    }\n+\n+    private final Context mContext;\n+\n+    private volatile boolean mStop = false;\n+    private static boolean sStarted = false;\n+\n+    public WixelReader(Context ctx) {\n+        mContext = ctx.getApplicationContext();\n+    }\n+\n+    public static void sStart(Context ctx) {\n+        if(sStarted) {\n+            return;\n+        }\n+        WixelReader theWixelReader =  getInstance(ctx);\n+        theWixelReader.start();\n+        sStarted = true;\n+        \n+    }\n+    \n+    public static void sStop() {\n+        if(!sStarted) {\n+            return;\n+        }\n+        WixelReader theWixelReader =  getInstance(null);\n+        theWixelReader.Stop();\n+        try {\n+            theWixelReader.join();\n+        } catch (InterruptedException e) {\n+            Log.e(TAG, \"cought InterruptedException, could not wait for the wixel thread to exit\");\n+        }\n+        sStarted = false;\n+    }\n+    \n+    public static boolean IsConfigured() {\n+        return true;\n+    }\n+\n+    public static boolean allmostEquals( TransmitterRawData e1, TransmitterRawData e2) \n+    {\n+        // relative time is in ms\n+        if (Math.abs(e1.RelativeTime - e2.RelativeTime) < 5000 ) {\n+            return true;\n+        }\n+        return false;\n+    }\n+    \n+ // last in the array, is first in time\n+    public static List<TransmitterRawData> Merge2Lists(List<TransmitterRawData> list1 , List<TransmitterRawData> list2)\n+    {\n+        List<TransmitterRawData> merged = new LinkedList <TransmitterRawData>();\n+        while (true) {\n+            if(list1.size() == 0 && list2.size() == 0) { \n+                break;\n+            }\n+            if (list1.size() == 0) {\n+                merged.addAll(list2);\n+                break;\n+            }\n+            if (list2.size() == 0) {\n+                merged.addAll(list1);\n+                break;\n+            }\n+            if (allmostEquals(list1.get(0), list2.get(0))) {\n+                list2.remove(0);\n+                merged.add(list1.remove(0));\n+                continue;\n+            }\n+            if(list1.get(0).RelativeTime > list2.get(0).RelativeTime) {\n+                merged.add(list1.remove(0));\n+            } else {\n+                merged.add(list2.remove(0));\n+            }\n+\n+        }\n+        return merged;\n+    }\n+    \n+    public static List<TransmitterRawData> MergeLists(List <List<TransmitterRawData>> allTransmitterRawData)\n+    {\n+        List<TransmitterRawData> MergedList;\n+        MergedList = allTransmitterRawData.remove(0);\n+        for (List<TransmitterRawData> it : allTransmitterRawData) {\n+            MergedList = Merge2Lists(MergedList, it);\n+        }\n+        \n+        return MergedList;\n+    }\n+            \n+    public static List<TransmitterRawData> ReadHost(String hostAndIp, int numberOfRecords)\n+    {\n+        int port;\n+        System.out.println(\"Reading From \" + hostAndIp);\n+        Log.i(TAG,\"Reading From \" + hostAndIp);\n+        String []hosts = hostAndIp.split(\":\");\n+        if(hosts.length != 2) {\n+            System.out.println(\"Invalid hostAndIp \" + hostAndIp);\n+            Log.e(TAG, \"Invalid hostAndIp \" + hostAndIp);\n+            \n+            return null;\n+        }\n+        try {\n+            port = Integer.parseInt(hosts[1]);\n+        } catch (NumberFormatException nfe) {\n+            System.out.println(\"Invalid port \" +hosts[1]);\n+            Log.e(TAG, \"Invalid hostAndIp \" + hostAndIp);\n+            return null;\n+            \n+        }\n+        if (port < 10 || port > 65536) {\n+            System.out.println(\"Invalid port \" +hosts[1]);\n+            Log.e(TAG, \"Invalid hostAndIp \" + hostAndIp);\n+            return null;\n+            \n+        }\n+        System.out.println(\"Reading from \" + hosts[0] + \" \" + port);\n+        List<TransmitterRawData> ret;\n+        try {\n+            ret = Read(hosts[0], port, numberOfRecords);\n+        } catch(Exception e) {\n+            // We had some error, need to move on...\n+            System.out.println(\"read from host failed cought expation\" + hostAndIp);\n+            Log.e(TAG, \"read from host failed\" + hostAndIp);\n+\n+            return null;\n+            \n+        }\n+        return ret;\n+    }\n+    \n+    // format of string is ip1:port1,ip2:port2;\n+    public static TransmitterRawData[] Read(String hostsNames, int numberOfRecords)\n+    {\n+        String []hosts = hostsNames.split(\",\");\n+        if(hosts.length == 0) {\n+            Log.e(TAG, \"Error no hosts were found \" + hostsNames);\n+            return null;\n+        }\n+        List <List<TransmitterRawData>> allTransmitterRawData =  new LinkedList <List<TransmitterRawData>>();\n+        \n+        // go over all hosts and read data from them\n+        for(String host : hosts) {\n+            List<TransmitterRawData> tmpList= ReadHost(host, numberOfRecords);\n+            if(tmpList != null && tmpList.size() > 0) {\n+                allTransmitterRawData.add(tmpList);\n+            }\n+        }\n+        // merge the information\n+        if (allTransmitterRawData.size() == 0) {\n+            System.out.println(\"Could not read anything from \" + hostsNames);\n+            Log.e(TAG, \"Could not read anything from \" + hostsNames);\n+            return null;\n+\n+        }\n+        List<TransmitterRawData> mergedData= MergeLists(allTransmitterRawData);\n+        \n+        \n+        TransmitterRawData []trd_array;\n+        trd_array = new TransmitterRawData[mergedData.size()];\n+        mergedData.toArray(trd_array);\n+        System.out.println(\"Final Results========================================================================\");\n+        for (int i= 0; i < trd_array.length; i++) {\n+ //           System.out.println( trd_array[i].toTableString());\n+        }\n+        return trd_array;\n+        \n+    }\n+    \n+    public static List<TransmitterRawData> Read(String hostName,int port, int numberOfRecords)\n+    {\n+        List<TransmitterRawData> trd_list = new LinkedList<TransmitterRawData>();\n+        try\n+        {\n+            Log.i(TAG, \"Read called\");\n+            Gson gson = new GsonBuilder().create();\n+\n+            // An example of using gson.\n+            ComunicationHeader ch = new ComunicationHeader();\n+            ch.version = 1;\n+            ch.numberOfRecords = numberOfRecords;\n+            String flat = gson.toJson(ch);\n+            ComunicationHeader ch2 = gson.fromJson(flat, ComunicationHeader.class);  \n+            System.out.println(\"Results code\" + flat + ch2.version);\n+\n+\n+            // Real client code\n+            Socket MySocket = new Socket(hostName, port);\n+\n+            System.out.println(\"After the new socket \\n\");\n+            MySocket.setSoTimeout(2000); \n+                     \n+            System.out.println(\"client connected... \" );\n+            \n+            PrintWriter out = new PrintWriter(MySocket.getOutputStream(), true);\n+            BufferedReader in = new BufferedReader(new InputStreamReader(MySocket.getInputStream()));\n+\n+            out.println(flat);\n+            \n+            while(true) {","path":"app/src/main/java/com/eveningoutpost/dexdrip/Services/WixelReader.java","position":231,"original_position":231,"commit_id":"2eb902d63cfc379a80dd3ceaab76db0dbc525972","original_commit_id":"2eb902d63cfc379a80dd3ceaab76db0dbc525972","user":{"login":"tzachi-dar","id":7942372,"avatar_url":"https://avatars.githubusercontent.com/u/7942372?v=3","gravatar_id":"","url":"https://api.github.com/users/tzachi-dar","html_url":"https://github.com/tzachi-dar","followers_url":"https://api.github.com/users/tzachi-dar/followers","following_url":"https://api.github.com/users/tzachi-dar/following{/other_user}","gists_url":"https://api.github.com/users/tzachi-dar/gists{/gist_id}","starred_url":"https://api.github.com/users/tzachi-dar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tzachi-dar/subscriptions","organizations_url":"https://api.github.com/users/tzachi-dar/orgs","repos_url":"https://api.github.com/users/tzachi-dar/repos","events_url":"https://api.github.com/users/tzachi-dar/events{/privacy}","received_events_url":"https://api.github.com/users/tzachi-dar/received_events","type":"User","site_admin":false},"body":"Hi,\r\nWell this code does not really loop for ever.\r\n\r\nThe condition \"if(data.equals(\"\")) \" means until the server has closed the connection.\r\nSo, what this code does is connect to the other side and receive data. for every object that it receives it creates a new object and add it to the list.\r\n\r\nSo it continues to run as long as there is data.\r\nTwo things make this code not pulling:\r\n1) the read is blocking.\r\n2) There is a socket timeout of 2 seconds which means that it will quit the loop if there is no data in 2 seconds.\r\n\r\nSo, yes it will leave the loop once asked since it getts out of there very fast.","created_at":"2014-12-26T07:33:13Z","updated_at":"2014-12-26T07:33:13Z","html_url":"https://github.com/StephenBlackWasAlreadyTaken/DexDrip/pull/24#discussion_r22279808","pull_request_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/pulls/24","_links":{"self":{"href":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/pulls/comments/22279808"},"html":{"href":"https://github.com/StephenBlackWasAlreadyTaken/DexDrip/pull/24#discussion_r22279808"},"pull_request":{"href":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/pulls/24"}}},"pull_request":{"url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/pulls/24","id":26587271,"html_url":"https://github.com/StephenBlackWasAlreadyTaken/DexDrip/pull/24","diff_url":"https://github.com/StephenBlackWasAlreadyTaken/DexDrip/pull/24.diff","patch_url":"https://github.com/StephenBlackWasAlreadyTaken/DexDrip/pull/24.patch","issue_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/issues/24","number":24,"state":"open","locked":false,"title":"Tzachi2","user":{"login":"tzachi-dar","id":7942372,"avatar_url":"https://avatars.githubusercontent.com/u/7942372?v=3","gravatar_id":"","url":"https://api.github.com/users/tzachi-dar","html_url":"https://github.com/tzachi-dar","followers_url":"https://api.github.com/users/tzachi-dar/followers","following_url":"https://api.github.com/users/tzachi-dar/following{/other_user}","gists_url":"https://api.github.com/users/tzachi-dar/gists{/gist_id}","starred_url":"https://api.github.com/users/tzachi-dar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tzachi-dar/subscriptions","organizations_url":"https://api.github.com/users/tzachi-dar/orgs","repos_url":"https://api.github.com/users/tzachi-dar/repos","events_url":"https://api.github.com/users/tzachi-dar/events{/privacy}","received_events_url":"https://api.github.com/users/tzachi-dar/received_events","type":"User","site_admin":false},"body":"Hi,\r\n\r\nPlease review the following pr.\r\nIt allows one to start working with the wifi receivers.","created_at":"2014-12-26T00:05:39Z","updated_at":"2014-12-26T07:33:13Z","closed_at":null,"merged_at":null,"merge_commit_sha":"31400d1c02309f6dd8b79259139437bfcfeb76e6","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/pulls/24/commits","review_comments_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/pulls/24/comments","review_comment_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/pulls/comments/{number}","comments_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/issues/24/comments","statuses_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/statuses/2eb902d63cfc379a80dd3ceaab76db0dbc525972","head":{"label":"tzachi-dar:tzachi2","ref":"tzachi2","sha":"2eb902d63cfc379a80dd3ceaab76db0dbc525972","user":{"login":"tzachi-dar","id":7942372,"avatar_url":"https://avatars.githubusercontent.com/u/7942372?v=3","gravatar_id":"","url":"https://api.github.com/users/tzachi-dar","html_url":"https://github.com/tzachi-dar","followers_url":"https://api.github.com/users/tzachi-dar/followers","following_url":"https://api.github.com/users/tzachi-dar/following{/other_user}","gists_url":"https://api.github.com/users/tzachi-dar/gists{/gist_id}","starred_url":"https://api.github.com/users/tzachi-dar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tzachi-dar/subscriptions","organizations_url":"https://api.github.com/users/tzachi-dar/orgs","repos_url":"https://api.github.com/users/tzachi-dar/repos","events_url":"https://api.github.com/users/tzachi-dar/events{/privacy}","received_events_url":"https://api.github.com/users/tzachi-dar/received_events","type":"User","site_admin":false},"repo":{"id":28331915,"name":"DexDrip","full_name":"tzachi-dar/DexDrip","owner":{"login":"tzachi-dar","id":7942372,"avatar_url":"https://avatars.githubusercontent.com/u/7942372?v=3","gravatar_id":"","url":"https://api.github.com/users/tzachi-dar","html_url":"https://github.com/tzachi-dar","followers_url":"https://api.github.com/users/tzachi-dar/followers","following_url":"https://api.github.com/users/tzachi-dar/following{/other_user}","gists_url":"https://api.github.com/users/tzachi-dar/gists{/gist_id}","starred_url":"https://api.github.com/users/tzachi-dar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tzachi-dar/subscriptions","organizations_url":"https://api.github.com/users/tzachi-dar/orgs","repos_url":"https://api.github.com/users/tzachi-dar/repos","events_url":"https://api.github.com/users/tzachi-dar/events{/privacy}","received_events_url":"https://api.github.com/users/tzachi-dar/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/tzachi-dar/DexDrip","description":"Android Application that collects dex signals, allows calibrations, and uploads","fork":true,"url":"https://api.github.com/repos/tzachi-dar/DexDrip","forks_url":"https://api.github.com/repos/tzachi-dar/DexDrip/forks","keys_url":"https://api.github.com/repos/tzachi-dar/DexDrip/keys{/key_id}","collaborators_url":"https://api.github.com/repos/tzachi-dar/DexDrip/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/tzachi-dar/DexDrip/teams","hooks_url":"https://api.github.com/repos/tzachi-dar/DexDrip/hooks","issue_events_url":"https://api.github.com/repos/tzachi-dar/DexDrip/issues/events{/number}","events_url":"https://api.github.com/repos/tzachi-dar/DexDrip/events","assignees_url":"https://api.github.com/repos/tzachi-dar/DexDrip/assignees{/user}","branches_url":"https://api.github.com/repos/tzachi-dar/DexDrip/branches{/branch}","tags_url":"https://api.github.com/repos/tzachi-dar/DexDrip/tags","blobs_url":"https://api.github.com/repos/tzachi-dar/DexDrip/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/tzachi-dar/DexDrip/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/tzachi-dar/DexDrip/git/refs{/sha}","trees_url":"https://api.github.com/repos/tzachi-dar/DexDrip/git/trees{/sha}","statuses_url":"https://api.github.com/repos/tzachi-dar/DexDrip/statuses/{sha}","languages_url":"https://api.github.com/repos/tzachi-dar/DexDrip/languages","stargazers_url":"https://api.github.com/repos/tzachi-dar/DexDrip/stargazers","contributors_url":"https://api.github.com/repos/tzachi-dar/DexDrip/contributors","subscribers_url":"https://api.github.com/repos/tzachi-dar/DexDrip/subscribers","subscription_url":"https://api.github.com/repos/tzachi-dar/DexDrip/subscription","commits_url":"https://api.github.com/repos/tzachi-dar/DexDrip/commits{/sha}","git_commits_url":"https://api.github.com/repos/tzachi-dar/DexDrip/git/commits{/sha}","comments_url":"https://api.github.com/repos/tzachi-dar/DexDrip/comments{/number}","issue_comment_url":"https://api.github.com/repos/tzachi-dar/DexDrip/issues/comments/{number}","contents_url":"https://api.github.com/repos/tzachi-dar/DexDrip/contents/{+path}","compare_url":"https://api.github.com/repos/tzachi-dar/DexDrip/compare/{base}...{head}","merges_url":"https://api.github.com/repos/tzachi-dar/DexDrip/merges","archive_url":"https://api.github.com/repos/tzachi-dar/DexDrip/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/tzachi-dar/DexDrip/downloads","issues_url":"https://api.github.com/repos/tzachi-dar/DexDrip/issues{/number}","pulls_url":"https://api.github.com/repos/tzachi-dar/DexDrip/pulls{/number}","milestones_url":"https://api.github.com/repos/tzachi-dar/DexDrip/milestones{/number}","notifications_url":"https://api.github.com/repos/tzachi-dar/DexDrip/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/tzachi-dar/DexDrip/labels{/name}","releases_url":"https://api.github.com/repos/tzachi-dar/DexDrip/releases{/id}","created_at":"2014-12-22T09:12:02Z","updated_at":"2014-12-24T22:26:43Z","pushed_at":"2014-12-26T00:01:55Z","git_url":"git://github.com/tzachi-dar/DexDrip.git","ssh_url":"git@github.com:tzachi-dar/DexDrip.git","clone_url":"https://github.com/tzachi-dar/DexDrip.git","svn_url":"https://github.com/tzachi-dar/DexDrip","homepage":null,"size":2201,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"StephenBlackWasAlreadyTaken:master","ref":"master","sha":"4ec0c92386cf8b9b51145c0881edfa5117ed0009","user":{"login":"StephenBlackWasAlreadyTaken","id":649942,"avatar_url":"https://avatars.githubusercontent.com/u/649942?v=3","gravatar_id":"","url":"https://api.github.com/users/StephenBlackWasAlreadyTaken","html_url":"https://github.com/StephenBlackWasAlreadyTaken","followers_url":"https://api.github.com/users/StephenBlackWasAlreadyTaken/followers","following_url":"https://api.github.com/users/StephenBlackWasAlreadyTaken/following{/other_user}","gists_url":"https://api.github.com/users/StephenBlackWasAlreadyTaken/gists{/gist_id}","starred_url":"https://api.github.com/users/StephenBlackWasAlreadyTaken/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/StephenBlackWasAlreadyTaken/subscriptions","organizations_url":"https://api.github.com/users/StephenBlackWasAlreadyTaken/orgs","repos_url":"https://api.github.com/users/StephenBlackWasAlreadyTaken/repos","events_url":"https://api.github.com/users/StephenBlackWasAlreadyTaken/events{/privacy}","received_events_url":"https://api.github.com/users/StephenBlackWasAlreadyTaken/received_events","type":"User","site_admin":false},"repo":{"id":26684382,"name":"DexDrip","full_name":"StephenBlackWasAlreadyTaken/DexDrip","owner":{"login":"StephenBlackWasAlreadyTaken","id":649942,"avatar_url":"https://avatars.githubusercontent.com/u/649942?v=3","gravatar_id":"","url":"https://api.github.com/users/StephenBlackWasAlreadyTaken","html_url":"https://github.com/StephenBlackWasAlreadyTaken","followers_url":"https://api.github.com/users/StephenBlackWasAlreadyTaken/followers","following_url":"https://api.github.com/users/StephenBlackWasAlreadyTaken/following{/other_user}","gists_url":"https://api.github.com/users/StephenBlackWasAlreadyTaken/gists{/gist_id}","starred_url":"https://api.github.com/users/StephenBlackWasAlreadyTaken/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/StephenBlackWasAlreadyTaken/subscriptions","organizations_url":"https://api.github.com/users/StephenBlackWasAlreadyTaken/orgs","repos_url":"https://api.github.com/users/StephenBlackWasAlreadyTaken/repos","events_url":"https://api.github.com/users/StephenBlackWasAlreadyTaken/events{/privacy}","received_events_url":"https://api.github.com/users/StephenBlackWasAlreadyTaken/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/StephenBlackWasAlreadyTaken/DexDrip","description":"Android Application that collects dex signals, allows calibrations, and uploads","fork":false,"url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip","forks_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/forks","keys_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/keys{/key_id}","collaborators_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/teams","hooks_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/hooks","issue_events_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/issues/events{/number}","events_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/events","assignees_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/assignees{/user}","branches_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/branches{/branch}","tags_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/tags","blobs_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/git/refs{/sha}","trees_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/git/trees{/sha}","statuses_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/statuses/{sha}","languages_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/languages","stargazers_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/stargazers","contributors_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/contributors","subscribers_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/subscribers","subscription_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/subscription","commits_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/commits{/sha}","git_commits_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/git/commits{/sha}","comments_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/comments{/number}","issue_comment_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/issues/comments/{number}","contents_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/contents/{+path}","compare_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/compare/{base}...{head}","merges_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/merges","archive_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/downloads","issues_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/issues{/number}","pulls_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/pulls{/number}","milestones_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/milestones{/number}","notifications_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/labels{/name}","releases_url":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/releases{/id}","created_at":"2014-11-15T15:45:38Z","updated_at":"2014-12-26T05:39:08Z","pushed_at":"2014-12-26T05:39:10Z","git_url":"git://github.com/StephenBlackWasAlreadyTaken/DexDrip.git","ssh_url":"git@github.com:StephenBlackWasAlreadyTaken/DexDrip.git","clone_url":"https://github.com/StephenBlackWasAlreadyTaken/DexDrip.git","svn_url":"https://github.com/StephenBlackWasAlreadyTaken/DexDrip","homepage":null,"size":2201,"stargazers_count":9,"watchers_count":9,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":6,"mirror_url":null,"open_issues_count":5,"forks":6,"open_issues":5,"watchers":9,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/pulls/24"},"html":{"href":"https://github.com/StephenBlackWasAlreadyTaken/DexDrip/pull/24"},"issue":{"href":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/issues/24"},"comments":{"href":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/issues/24/comments"},"review_comments":{"href":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/pulls/24/comments"},"review_comment":{"href":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/pulls/24/commits"},"statuses":{"href":"https://api.github.com/repos/StephenBlackWasAlreadyTaken/DexDrip/statuses/2eb902d63cfc379a80dd3ceaab76db0dbc525972"}}}}