{"action":"created","comment":{"url":"https://api.github.com/repos/DroidPlanner/Tower/pulls/comments/73493133","id":73493133,"diff_hunk":"@@ -0,0 +1,928 @@\n+package org.droidplanner.android.maps.providers.baidu_map;\n+\n+import android.app.Activity;\n+import android.content.BroadcastReceiver;\n+import android.content.Context;\n+import android.content.Intent;\n+import android.content.IntentFilter;\n+import android.content.SharedPreferences;\n+import android.content.res.Resources;\n+import android.graphics.Bitmap;\n+import android.graphics.Point;\n+import android.location.Location;\n+import android.os.Bundle;\n+import android.support.v4.content.LocalBroadcastManager;\n+import android.util.Log;\n+import android.view.LayoutInflater;\n+import android.view.View;\n+import android.view.ViewGroup;\n+import android.widget.Toast;\n+\n+import com.baidu.location.BDLocation;\n+import com.baidu.location.BDLocationListener;\n+import com.baidu.location.LocationClient;\n+import com.baidu.location.LocationClientOption;\n+\n+import com.baidu.mapapi.map.SupportMapFragment;\n+import com.baidu.mapapi.map.BaiduMap;\n+import com.baidu.mapapi.map.MapStatus;\n+import com.baidu.mapapi.map.Polyline;\n+import com.baidu.mapapi.map.PolylineOptions;\n+import com.baidu.mapapi.map.Polygon;\n+import com.baidu.mapapi.map.PolygonOptions;\n+import com.baidu.mapapi.map.MapStatusUpdate;\n+import com.baidu.mapapi.map.MapStatusUpdateFactory;\n+import com.baidu.mapapi.map.Stroke;\n+import com.baidu.mapapi.map.Marker;\n+import com.baidu.mapapi.map.MarkerOptions;\n+import com.baidu.mapapi.map.BitmapDescriptorFactory;\n+import com.baidu.mapapi.model.LatLng;\n+import com.baidu.mapapi.map.UiSettings;\n+import com.baidu.mapapi.map.MapPoi;\n+import com.baidu.mapapi.map.Projection;\n+import com.baidu.mapapi.model.LatLngBounds;\n+import com.baidu.mapapi.map.MyLocationConfiguration;\n+import com.baidu.mapapi.map.MyLocationConfiguration.LocationMode;\n+import com.baidu.mapapi.map.MyLocationData;\n+\n+import com.o3dr.android.client.Drone;\n+import com.o3dr.services.android.lib.coordinate.LatLong;\n+import com.o3dr.services.android.lib.drone.attribute.AttributeEvent;\n+import com.o3dr.services.android.lib.drone.attribute.AttributeType;\n+import com.o3dr.services.android.lib.drone.property.FootPrint;\n+import com.o3dr.services.android.lib.drone.property.Gps;\n+\n+import org.droidplanner.android.DroidPlannerApp;\n+import org.droidplanner.android.R;\n+import org.droidplanner.android.fragments.SettingsFragment;\n+import org.droidplanner.android.maps.DPMap;\n+import org.droidplanner.android.maps.MarkerInfo;\n+import org.droidplanner.android.maps.providers.DPMapProvider;\n+import org.droidplanner.android.utils.DroneHelper;\n+import org.droidplanner.android.utils.collection.HashBiMap;\n+import org.droidplanner.android.utils.prefs.AutoPanMode;\n+import org.droidplanner.android.utils.prefs.DroidPlannerPrefs;\n+\n+import java.util.ArrayList;\n+import java.util.Collection;\n+import java.util.Collections;\n+import java.util.HashSet;\n+import java.util.List;\n+import java.util.Locale;\n+import java.util.Set;\n+import java.util.concurrent.atomic.AtomicReference;\n+\n+import org.droidplanner.android.maps.providers.google_map.tiles.mapbox.offline.MapDownloader;\n+\n+public class BaiduMapFragment extends SupportMapFragment implements DPMap{ \n+\n+    private static final String TAG = BaiduMapFragment.class.getSimpleName();\n+\n+    private static final IntentFilter mEventFilter = new IntentFilter();\n+    private LocationClient mBDLocClient;\n+    public MyBDLocationListenner mBDLocListener = new MyBDLocationListenner();\n+    private final HashBiMap<MarkerInfo, Marker> mBiMarkersMap = new HashBiMap<MarkerInfo, Marker>();\n+    private DroidPlannerPrefs mAppPrefs;\n+    private final AtomicReference<AutoPanMode> mPanMode = new AtomicReference<AutoPanMode>(AutoPanMode.DISABLED);\n+\n+    private Polyline mFlightPath;\n+    private Polyline mMissionPath;\n+    private Polyline mDroneLeashPath;\n+    private int maxFlightPathSize;\n+\n+    private DPMap.OnMapClickListener mMapClickListener;\n+    private DPMap.OnMapLongClickListener mMapLongClickListener;\n+    private DPMap.OnMarkerClickListener mMarkerClickListener;\n+    private DPMap.OnMarkerDragListener mMarkerDragListener;\n+    private android.location.LocationListener mLocationListener;\n+\n+    protected boolean useMarkerClickAsMapClick = false;\n+\n+    private List<Polygon> polygonsPaths = new ArrayList<Polygon>();\n+\n+    protected DroidPlannerApp mDpApp;\n+    private Polygon mFootprintPoly;\n+\n+    static {\n+        mEventFilter.addAction(AttributeEvent.GPS_POSITION);\n+        mEventFilter.addAction(SettingsFragment.ACTION_MAP_ROTATION_PREFERENCE_UPDATED);\n+        mEventFilter.addAction(com.baidu.mapapi.SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR);\n+        mEventFilter.addAction(com.baidu.mapapi.SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR);\n+    }\n+\n+    private final BroadcastReceiver eventReceiver = new BroadcastReceiver() {\n+        @Override\n+        public void onReceive(Context context, Intent intent) {\n+            final String action = intent.getAction();\n+            switch (action) {\n+                case AttributeEvent.GPS_POSITION:\n+                    if (mPanMode.get() == AutoPanMode.DRONE) {\n+                        final Drone drone = getDroneApi();\n+                        if (!drone.isConnected())\n+                            return;\n+\n+                        final Gps droneGps = drone.getAttribute(AttributeType.GPS);\n+                        if (droneGps != null && droneGps.isValid()) {\n+                            final LatLong droneLocation = droneGps.getPosition();\n+                            updateCamera(droneLocation);\n+                        }\n+                    }\n+                    break;\n+                case SettingsFragment.ACTION_MAP_ROTATION_PREFERENCE_UPDATED:\n+                    setupMapUI(getBaiduMap());\n+                    break;\n+                case com.baidu.mapapi.SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR:\n+                    Toast.makeText(getActivity().getApplicationContext(),\n+                            \"BaiduMap: Keycode error, please check the keycode in AndroidManifest.xml!\", Toast.LENGTH_SHORT).show();\n+                    break;\n+                case com.baidu.mapapi.SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR:\n+                    Toast.makeText(getActivity().getApplicationContext(),\n+                            \"BaiduMap: Network error!\", Toast.LENGTH_SHORT).show();\n+                    break;\n+            }\n+        }\n+    };\n+\n+    private void notifyToLocatorActivity(BDLocation bdloc) {\n+        if (mLocationListener != null) {\n+            MyLocationData locData = new MyLocationData.Builder()\n+                    .accuracy(bdloc.getRadius())\n+                    .direction(100).latitude(bdloc.getLatitude())\n+                    .longitude(bdloc.getLongitude()).build();\n+\n+            // convert BDLocation to android.Location\n+            Location aLoc = new Location(\"BaiduMap\");\n+            //aLoc.setBearing(); No bearing in baidu map\n+            aLoc.setLongitude(bdloc.getLongitude());\n+            aLoc.setLatitude(bdloc.getLatitude());\n+            mLocationListener.onLocationChanged(aLoc);\n+        }\n+    }\n+\n+    private void updateBDMapStatus(BDLocation location) {\n+        final BaiduMap map = getBaiduMap();\n+        final BaiduMapPrefFragment provider = (BaiduMapPrefFragment)(getProvider().getMapProviderPreferences());\n+        final Activity activity = getActivity();\n+        final Context context = activity.getApplicationContext();\n+\n+        int mapType =provider.getMapType(context);\n+        map.setMapType(mapType);\n+\n+        MyLocationData locData = new MyLocationData.Builder()\n+                .accuracy(location.getRadius())\n+                .direction(100).latitude(location.getLatitude())\n+                .longitude(location.getLongitude()).build();\n+        map.setMyLocationData(locData);\n+\n+        LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());\n+        MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);\n+        map.animateMapStatus(u);\n+    }\n+\n+    public class MyBDLocationListenner implements BDLocationListener {\n+\t\t@Override\n+        public void onReceiveLocation(BDLocation location) {\n+\t\t\tfinal BaiduMap map = getBaiduMap();\n+\t\t\tfinal Activity activity = getActivity();\n+\t\t\tif (map == null || location == null || activity == null)\n+\t\t\t\treturn;\n+\n+            updateBDMapStatus(location);\n+            notifyToLocatorActivity(location);\n+        }\n+\n+        public void onReceivePoi(BDLocation poiLocation) {\n+        }\n+    }\n+\n+\n+    // FIXME: Ugly, Duplicated lat long titude convert functions, have to be templated\n+    private LatLng CoordToLatLang(LatLong coord) {\n+        return new LatLng(coord.getLatitude(), coord.getLongitude());\n+    }\n+\n+    private LatLong LatLngToCoord(LatLng point) {\n+        return new LatLong((float)point.latitude, (float) point.longitude);\n+    }\n+\n+    private LatLong LocationToCoord(BDLocation location) {\n+        return new LatLong((float) location.getLatitude(), (float) location.getLongitude());\n+    }\n+\n+    private int scaleDpToPixels(double value, Resources res) {\n+        final float scale = res.getDisplayMetrics().density;\n+        return (int) Math.round(value * scale);\n+    }\n+\n+    private Drone getDroneApi() { return mDpApp.getDrone(); }\n+\n+    @Override\n+    public void onAttach(Activity activity) {\n+        super.onAttach(activity);\n+\n+        // Initialize Baidu Map library\n+        com.baidu.mapapi.SDKInitializer.initialize(getActivity().getApplicationContext());\n+        mDpApp = (DroidPlannerApp) activity.getApplication();\n+    }\n+\n+    @Override\n+    public View onCreateView(LayoutInflater inflater, ViewGroup viewGroup, Bundle bundle) {\n+        setHasOptionsMenu(true);\n+        final Context context = getActivity().getApplicationContext();\n+        final View view = super.onCreateView(inflater, viewGroup, bundle);\n+\n+        mAppPrefs = DroidPlannerPrefs.getInstance(context);\n+\n+        final Bundle args = getArguments();\n+        if (args != null) {\n+            maxFlightPathSize = args.getInt(EXTRA_MAX_FLIGHT_PATH_SIZE);\n+        }\n+\n+        return view;\n+    }\n+\n+    @Override\n+    public void onStart() {\n+        super.onStart();\n+\n+        LocalBroadcastManager.getInstance(getActivity().getApplicationContext())\n+                .registerReceiver(eventReceiver, mEventFilter);\n+\n+        setupMap();\n+    }\n+\n+    @Override\n+    public void onStop() {\n+        super.onStop();\n+\n+        LocalBroadcastManager.getInstance(getActivity().getApplicationContext())\n+                .unregisterReceiver(eventReceiver);\n+\n+\t\tmBDLocClient.stop();                       // close baidu location service\n+\t\tgetBaiduMap().setMyLocationEnabled(false); // disable location layer\n+    }\n+\n+    @Override\n+    public void clearFlightPath() {\n+        if (mFlightPath != null) {\n+            List<LatLng> oldFlightPath = mFlightPath.getPoints();\n+            oldFlightPath.clear();\n+            mFlightPath.setPoints(oldFlightPath);\n+        }\n+    }\n+\n+    @Override\n+    public void downloadMapTiles(MapDownloader mapDownloader, VisibleMapArea mapRegion, int minimumZ, int maximumZ) {\n+    }\n+\n+    @Override\n+    public LatLong getMapCenter() {\n+        return LatLngToCoord(getBaiduMap().getMapStatus().target);\n+    }\n+\n+    @Override\n+    public float getMapZoomLevel() {\n+        return getBaiduMap().getMapStatus().zoom;\n+    }\n+\n+    @Override\n+    public float getMaxZoomLevel() {\n+        return getBaiduMap().getMaxZoomLevel();\n+    }\n+\n+    @Override\n+    public float getMinZoomLevel() { return getBaiduMap().getMinZoomLevel(); }\n+\n+    @Override\n+    public void selectAutoPanMode(AutoPanMode target) {\n+        final AutoPanMode currentMode = mPanMode.get();\n+        if (currentMode == target) return;\n+\n+        setAutoPanMode(currentMode, target);\n+    }\n+\n+    private void setAutoPanMode(AutoPanMode current, AutoPanMode update) {\n+        if (mPanMode.compareAndSet(current, update)) {\n+            switch (current) {\n+                case DRONE:\n+                    LocalBroadcastManager.getInstance(getActivity().getApplicationContext())\n+                            .unregisterReceiver(eventReceiver);\n+                    break;\n+\n+                case DISABLED:\n+                default:\n+                    break;\n+            }\n+\n+            switch (update) {\n+                case DRONE:\n+                    LocalBroadcastManager.getInstance(getActivity().getApplicationContext()).registerReceiver\n+                            (eventReceiver, mEventFilter);\n+                    break;\n+\n+                case DISABLED:\n+                default:\n+                    break;\n+            }\n+        }\n+    }\n+\n+    @Override\n+    public DPMapProvider getProvider() {\n+        return DPMapProvider.BAIDU_MAP;\n+    }\n+\n+    @Override\n+    public void addFlightPathPoint(LatLong coord) {\n+        final LatLng position = CoordToLatLang(coord);\n+\n+        if (maxFlightPathSize > 0) {\n+            if (mFlightPath == null) {\n+                PolylineOptions flightPathOptions = new PolylineOptions();\n+                flightPathOptions.color(FLIGHT_PATH_DEFAULT_COLOR)\n+                        .width(FLIGHT_PATH_DEFAULT_WIDTH).zIndex(1);\n+                mFlightPath = (Polyline)getBaiduMap().addOverlay(flightPathOptions);\n+            }\n+\n+            List<LatLng> oldFlightPath = mFlightPath.getPoints();\n+            if (oldFlightPath.size() > maxFlightPathSize) {\n+                oldFlightPath.remove(0);\n+            }\n+            oldFlightPath.add(position);\n+            mFlightPath.setPoints(oldFlightPath); //TODO: need to consider condition - oldFlightPath.size < 2","path":"Android/src/org/droidplanner/android/maps/providers/baidu_map/BaiduMapFragment.java","position":352,"original_position":352,"commit_id":"c6dda136e35b40faacf0dbabe86b28a9b64c047f","original_commit_id":"c6dda136e35b40faacf0dbabe86b28a9b64c047f","user":{"login":"droneboost","id":10015032,"avatar_url":"https://avatars.githubusercontent.com/u/10015032?v=3","gravatar_id":"","url":"https://api.github.com/users/droneboost","html_url":"https://github.com/droneboost","followers_url":"https://api.github.com/users/droneboost/followers","following_url":"https://api.github.com/users/droneboost/following{/other_user}","gists_url":"https://api.github.com/users/droneboost/gists{/gist_id}","starred_url":"https://api.github.com/users/droneboost/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/droneboost/subscriptions","organizations_url":"https://api.github.com/users/droneboost/orgs","repos_url":"https://api.github.com/users/droneboost/repos","events_url":"https://api.github.com/users/droneboost/events{/privacy}","received_events_url":"https://api.github.com/users/droneboost/received_events","type":"User","site_admin":false},"body":"I'll add size check","created_at":"2016-08-04T09:49:08Z","updated_at":"2016-08-04T09:49:08Z","html_url":"https://github.com/DroidPlanner/Tower/pull/1778#discussion_r73493133","pull_request_url":"https://api.github.com/repos/DroidPlanner/Tower/pulls/1778","_links":{"self":{"href":"https://api.github.com/repos/DroidPlanner/Tower/pulls/comments/73493133"},"html":{"href":"https://github.com/DroidPlanner/Tower/pull/1778#discussion_r73493133"},"pull_request":{"href":"https://api.github.com/repos/DroidPlanner/Tower/pulls/1778"}}},"pull_request":{"url":"https://api.github.com/repos/DroidPlanner/Tower/pulls/1778","id":79549236,"html_url":"https://github.com/DroidPlanner/Tower/pull/1778","diff_url":"https://github.com/DroidPlanner/Tower/pull/1778.diff","patch_url":"https://github.com/DroidPlanner/Tower/pull/1778.patch","issue_url":"https://api.github.com/repos/DroidPlanner/Tower/issues/1778","number":1778,"state":"open","locked":false,"title":"Add BaiduMap v4.0.0 support","user":{"login":"droneboost","id":10015032,"avatar_url":"https://avatars.githubusercontent.com/u/10015032?v=3","gravatar_id":"","url":"https://api.github.com/users/droneboost","html_url":"https://github.com/droneboost","followers_url":"https://api.github.com/users/droneboost/followers","following_url":"https://api.github.com/users/droneboost/following{/other_user}","gists_url":"https://api.github.com/users/droneboost/gists{/gist_id}","starred_url":"https://api.github.com/users/droneboost/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/droneboost/subscriptions","organizations_url":"https://api.github.com/users/droneboost/orgs","repos_url":"https://api.github.com/users/droneboost/repos","events_url":"https://api.github.com/users/droneboost/events{/privacy}","received_events_url":"https://api.github.com/users/droneboost/received_events","type":"User","site_admin":false},"body":"Hi @ne0fhyk ,\r\n\r\nWould you please do code review again?","created_at":"2016-08-01T10:49:08Z","updated_at":"2016-08-04T09:49:08Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c26cfe18928a478dae373a55cbe98e0b2aebcffb","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/DroidPlanner/Tower/pulls/1778/commits","review_comments_url":"https://api.github.com/repos/DroidPlanner/Tower/pulls/1778/comments","review_comment_url":"https://api.github.com/repos/DroidPlanner/Tower/pulls/comments{/number}","comments_url":"https://api.github.com/repos/DroidPlanner/Tower/issues/1778/comments","statuses_url":"https://api.github.com/repos/DroidPlanner/Tower/statuses/c6dda136e35b40faacf0dbabe86b28a9b64c047f","head":{"label":"bithollow:develop_upstream1","ref":"develop_upstream1","sha":"c6dda136e35b40faacf0dbabe86b28a9b64c047f","user":{"login":"bithollow","id":11535120,"avatar_url":"https://avatars.githubusercontent.com/u/11535120?v=3","gravatar_id":"","url":"https://api.github.com/users/bithollow","html_url":"https://github.com/bithollow","followers_url":"https://api.github.com/users/bithollow/followers","following_url":"https://api.github.com/users/bithollow/following{/other_user}","gists_url":"https://api.github.com/users/bithollow/gists{/gist_id}","starred_url":"https://api.github.com/users/bithollow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bithollow/subscriptions","organizations_url":"https://api.github.com/users/bithollow/orgs","repos_url":"https://api.github.com/users/bithollow/repos","events_url":"https://api.github.com/users/bithollow/events{/privacy}","received_events_url":"https://api.github.com/users/bithollow/received_events","type":"Organization","site_admin":false},"repo":{"id":33253377,"name":"Tower","full_name":"bithollow/Tower","owner":{"login":"bithollow","id":11535120,"avatar_url":"https://avatars.githubusercontent.com/u/11535120?v=3","gravatar_id":"","url":"https://api.github.com/users/bithollow","html_url":"https://github.com/bithollow","followers_url":"https://api.github.com/users/bithollow/followers","following_url":"https://api.github.com/users/bithollow/following{/other_user}","gists_url":"https://api.github.com/users/bithollow/gists{/gist_id}","starred_url":"https://api.github.com/users/bithollow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bithollow/subscriptions","organizations_url":"https://api.github.com/users/bithollow/orgs","repos_url":"https://api.github.com/users/bithollow/repos","events_url":"https://api.github.com/users/bithollow/events{/privacy}","received_events_url":"https://api.github.com/users/bithollow/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/bithollow/Tower","description":"Ground Control Station for Android Devices","fork":true,"url":"https://api.github.com/repos/bithollow/Tower","forks_url":"https://api.github.com/repos/bithollow/Tower/forks","keys_url":"https://api.github.com/repos/bithollow/Tower/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bithollow/Tower/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bithollow/Tower/teams","hooks_url":"https://api.github.com/repos/bithollow/Tower/hooks","issue_events_url":"https://api.github.com/repos/bithollow/Tower/issues/events{/number}","events_url":"https://api.github.com/repos/bithollow/Tower/events","assignees_url":"https://api.github.com/repos/bithollow/Tower/assignees{/user}","branches_url":"https://api.github.com/repos/bithollow/Tower/branches{/branch}","tags_url":"https://api.github.com/repos/bithollow/Tower/tags","blobs_url":"https://api.github.com/repos/bithollow/Tower/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bithollow/Tower/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bithollow/Tower/git/refs{/sha}","trees_url":"https://api.github.com/repos/bithollow/Tower/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bithollow/Tower/statuses/{sha}","languages_url":"https://api.github.com/repos/bithollow/Tower/languages","stargazers_url":"https://api.github.com/repos/bithollow/Tower/stargazers","contributors_url":"https://api.github.com/repos/bithollow/Tower/contributors","subscribers_url":"https://api.github.com/repos/bithollow/Tower/subscribers","subscription_url":"https://api.github.com/repos/bithollow/Tower/subscription","commits_url":"https://api.github.com/repos/bithollow/Tower/commits{/sha}","git_commits_url":"https://api.github.com/repos/bithollow/Tower/git/commits{/sha}","comments_url":"https://api.github.com/repos/bithollow/Tower/comments{/number}","issue_comment_url":"https://api.github.com/repos/bithollow/Tower/issues/comments{/number}","contents_url":"https://api.github.com/repos/bithollow/Tower/contents/{+path}","compare_url":"https://api.github.com/repos/bithollow/Tower/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bithollow/Tower/merges","archive_url":"https://api.github.com/repos/bithollow/Tower/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bithollow/Tower/downloads","issues_url":"https://api.github.com/repos/bithollow/Tower/issues{/number}","pulls_url":"https://api.github.com/repos/bithollow/Tower/pulls{/number}","milestones_url":"https://api.github.com/repos/bithollow/Tower/milestones{/number}","notifications_url":"https://api.github.com/repos/bithollow/Tower/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bithollow/Tower/labels{/name}","releases_url":"https://api.github.com/repos/bithollow/Tower/releases{/id}","deployments_url":"https://api.github.com/repos/bithollow/Tower/deployments","created_at":"2015-04-01T14:47:31Z","updated_at":"2016-03-01T09:36:24Z","pushed_at":"2016-08-01T10:12:46Z","git_url":"git://github.com/bithollow/Tower.git","ssh_url":"git@github.com:bithollow/Tower.git","clone_url":"https://github.com/bithollow/Tower.git","svn_url":"https://github.com/bithollow/Tower","homepage":"https://play.google.com/store/apps/details?id=org.droidplanner.android","size":67396,"stargazers_count":1,"watchers_count":1,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":0,"forks":1,"open_issues":0,"watchers":1,"default_branch":"develop"}},"base":{"label":"DroidPlanner:develop","ref":"develop","sha":"a567a195b3cb9a815fb080204a4130e618753f75","user":{"login":"DroidPlanner","id":6230606,"avatar_url":"https://avatars.githubusercontent.com/u/6230606?v=3","gravatar_id":"","url":"https://api.github.com/users/DroidPlanner","html_url":"https://github.com/DroidPlanner","followers_url":"https://api.github.com/users/DroidPlanner/followers","following_url":"https://api.github.com/users/DroidPlanner/following{/other_user}","gists_url":"https://api.github.com/users/DroidPlanner/gists{/gist_id}","starred_url":"https://api.github.com/users/DroidPlanner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DroidPlanner/subscriptions","organizations_url":"https://api.github.com/users/DroidPlanner/orgs","repos_url":"https://api.github.com/users/DroidPlanner/repos","events_url":"https://api.github.com/users/DroidPlanner/events{/privacy}","received_events_url":"https://api.github.com/users/DroidPlanner/received_events","type":"Organization","site_admin":false},"repo":{"id":8290123,"name":"Tower","full_name":"DroidPlanner/Tower","owner":{"login":"DroidPlanner","id":6230606,"avatar_url":"https://avatars.githubusercontent.com/u/6230606?v=3","gravatar_id":"","url":"https://api.github.com/users/DroidPlanner","html_url":"https://github.com/DroidPlanner","followers_url":"https://api.github.com/users/DroidPlanner/followers","following_url":"https://api.github.com/users/DroidPlanner/following{/other_user}","gists_url":"https://api.github.com/users/DroidPlanner/gists{/gist_id}","starred_url":"https://api.github.com/users/DroidPlanner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DroidPlanner/subscriptions","organizations_url":"https://api.github.com/users/DroidPlanner/orgs","repos_url":"https://api.github.com/users/DroidPlanner/repos","events_url":"https://api.github.com/users/DroidPlanner/events{/privacy}","received_events_url":"https://api.github.com/users/DroidPlanner/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/DroidPlanner/Tower","description":"Ground Control Station for Android Devices","fork":false,"url":"https://api.github.com/repos/DroidPlanner/Tower","forks_url":"https://api.github.com/repos/DroidPlanner/Tower/forks","keys_url":"https://api.github.com/repos/DroidPlanner/Tower/keys{/key_id}","collaborators_url":"https://api.github.com/repos/DroidPlanner/Tower/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/DroidPlanner/Tower/teams","hooks_url":"https://api.github.com/repos/DroidPlanner/Tower/hooks","issue_events_url":"https://api.github.com/repos/DroidPlanner/Tower/issues/events{/number}","events_url":"https://api.github.com/repos/DroidPlanner/Tower/events","assignees_url":"https://api.github.com/repos/DroidPlanner/Tower/assignees{/user}","branches_url":"https://api.github.com/repos/DroidPlanner/Tower/branches{/branch}","tags_url":"https://api.github.com/repos/DroidPlanner/Tower/tags","blobs_url":"https://api.github.com/repos/DroidPlanner/Tower/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/DroidPlanner/Tower/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/DroidPlanner/Tower/git/refs{/sha}","trees_url":"https://api.github.com/repos/DroidPlanner/Tower/git/trees{/sha}","statuses_url":"https://api.github.com/repos/DroidPlanner/Tower/statuses/{sha}","languages_url":"https://api.github.com/repos/DroidPlanner/Tower/languages","stargazers_url":"https://api.github.com/repos/DroidPlanner/Tower/stargazers","contributors_url":"https://api.github.com/repos/DroidPlanner/Tower/contributors","subscribers_url":"https://api.github.com/repos/DroidPlanner/Tower/subscribers","subscription_url":"https://api.github.com/repos/DroidPlanner/Tower/subscription","commits_url":"https://api.github.com/repos/DroidPlanner/Tower/commits{/sha}","git_commits_url":"https://api.github.com/repos/DroidPlanner/Tower/git/commits{/sha}","comments_url":"https://api.github.com/repos/DroidPlanner/Tower/comments{/number}","issue_comment_url":"https://api.github.com/repos/DroidPlanner/Tower/issues/comments{/number}","contents_url":"https://api.github.com/repos/DroidPlanner/Tower/contents/{+path}","compare_url":"https://api.github.com/repos/DroidPlanner/Tower/compare/{base}...{head}","merges_url":"https://api.github.com/repos/DroidPlanner/Tower/merges","archive_url":"https://api.github.com/repos/DroidPlanner/Tower/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/DroidPlanner/Tower/downloads","issues_url":"https://api.github.com/repos/DroidPlanner/Tower/issues{/number}","pulls_url":"https://api.github.com/repos/DroidPlanner/Tower/pulls{/number}","milestones_url":"https://api.github.com/repos/DroidPlanner/Tower/milestones{/number}","notifications_url":"https://api.github.com/repos/DroidPlanner/Tower/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/DroidPlanner/Tower/labels{/name}","releases_url":"https://api.github.com/repos/DroidPlanner/Tower/releases{/id}","deployments_url":"https://api.github.com/repos/DroidPlanner/Tower/deployments","created_at":"2013-02-19T12:51:08Z","updated_at":"2016-08-02T03:01:48Z","pushed_at":"2016-08-04T06:55:25Z","git_url":"git://github.com/DroidPlanner/Tower.git","ssh_url":"git@github.com:DroidPlanner/Tower.git","clone_url":"https://github.com/DroidPlanner/Tower.git","svn_url":"https://github.com/DroidPlanner/Tower","homepage":"https://play.google.com/store/apps/details?id=org.droidplanner.android","size":66402,"stargazers_count":392,"watchers_count":392,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":379,"mirror_url":null,"open_issues_count":113,"forks":379,"open_issues":113,"watchers":392,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/DroidPlanner/Tower/pulls/1778"},"html":{"href":"https://github.com/DroidPlanner/Tower/pull/1778"},"issue":{"href":"https://api.github.com/repos/DroidPlanner/Tower/issues/1778"},"comments":{"href":"https://api.github.com/repos/DroidPlanner/Tower/issues/1778/comments"},"review_comments":{"href":"https://api.github.com/repos/DroidPlanner/Tower/pulls/1778/comments"},"review_comment":{"href":"https://api.github.com/repos/DroidPlanner/Tower/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/DroidPlanner/Tower/pulls/1778/commits"},"statuses":{"href":"https://api.github.com/repos/DroidPlanner/Tower/statuses/c6dda136e35b40faacf0dbabe86b28a9b64c047f"}}}}
{"actor":{"display_login":"droneboost"}}