{"action":"created","comment":{"url":"https://api.github.com/repos/endlessm/gnome-software/pulls/comments/66938414","id":66938414,"diff_hunk":"@@ -0,0 +1,804 @@\n+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-\n+ *\n+ * Copyright (C) 2016 Endless Mobile, Inc\n+ *\n+ * Author: Joaquim Rocha <jrocha@endlessm.com>\n+ *\n+ * Licensed under the GNU General Public License Version 2\n+ *\n+ * This program is free software; you can redistribute it and/or modify\n+ * it under the terms of the GNU General Public License as published by\n+ * the Free Software Foundation; either version 2 of the License, or\n+ * (at your option) any later version.\n+ *\n+ * This program is distributed in the hope that it will be useful,\n+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n+ * GNU General Public License for more details.\n+ *\n+ * You should have received a copy of the GNU General Public License\n+ * along with this program; if not, write to the Free Software\n+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n+ */\n+\n+#include <config.h>\n+#include <flatpak.h>\n+#include <glib.h>\n+#include <gnome-software.h>\n+#include <json-glib/json-glib.h>\n+#include <string.h>\n+\n+#include \"gs-flatpak.h\"\n+\n+#define EXTERNAL_ASSETS_SPEC_VERSION 1\n+#define JSON_SPEC_KEY \"spec\"\n+#define JSON_RUNTIME_KEY \"runtime\"\n+#define JSON_RUNTIME_NAME_KEY \"name\"\n+#define JSON_RUNTIME_URL_KEY \"url\"\n+\n+#define METADATA_URL \"GnomeSoftware::external-app::url\"\n+#define METADATA_HEADLESS_APP \"GnomeSoftware::external-app::headless-app\"\n+#define METADATA_BUILD_DIR \"GnomeSoftware::external-app::build-dir\"\n+#define METADATA_EXTERNAL_ASSETS \"flatpack-3rdparty::external-assets\"\n+\n+#define TMP_ASSSETS_PREFIX \"gs-external-apps\"\n+\n+struct GsPluginData {\n+\tGsFlatpak\t*flatpak;\n+\tchar\t\t*runtimes_build_dir;\n+};\n+\n+static gboolean flatpak_remote_delete (const char *repo_name, GError **error);\n+\n+static void\n+remove_runtimes_build_dir (GsPlugin *plugin)\n+{\n+\tg_autoptr(GError) error = NULL;\n+\tGsPluginData *priv = gs_plugin_get_data (plugin);\n+\n+\tif (gs_utils_rmtree (priv->runtimes_build_dir, &error))\n+\t\treturn;\n+\n+\tif (error->code != G_FILE_ERROR_NOENT) {\n+\t\tg_debug (\"Cannot remove previously created external apps build \"\n+\t\t\t \"dir '%s': %s\", priv->runtimes_build_dir,\n+\t\t\t error->message);\n+\t}\n+}\n+\n+static void\n+remove_ext_apps_remotes (GsPlugin *plugin)\n+{\n+\tGsPluginData *priv = gs_plugin_get_data (plugin);\n+\tguint i;\n+\tGPtrArray *names;\n+\n+\tnames = gs_flatpak_get_remotes_names (priv->flatpak, NULL, NULL);\n+\n+\tif (!names)\n+\t\treturn;\n+\n+\tfor (i = 0; i < names->len; i++) {\n+\t\tconst char *name = g_ptr_array_index (names, i);\n+\t\tif (g_str_has_prefix (name, TMP_ASSSETS_PREFIX)) {\n+\t\t\tflatpak_remote_delete (name, NULL);\n+\t\t}\n+\t}\n+\n+\tg_ptr_array_free (names, TRUE);\n+}\n+\n+void\n+gs_plugin_initialize (GsPlugin *plugin)\n+{\n+\tGsPluginData *priv = gs_plugin_alloc_data (plugin, sizeof(GsPluginData));\n+\tconst char *ext_apps_build_dir = g_get_user_cache_dir ();\n+\n+\tpriv->flatpak = gs_flatpak_new (plugin, GS_FLATPAK_SCOPE_USER);\n+\tpriv->runtimes_build_dir = g_build_filename (ext_apps_build_dir,\n+\t\t\t\t\t\t     TMP_ASSSETS_PREFIX,\n+\t\t\t\t\t\t     NULL);\n+\n+\t/* Run plugin before the flatpak ones because we need them to install\n+\t * the app's headless part first */\n+\tgs_plugin_add_rule (plugin, GS_PLUGIN_RULE_RUN_BEFORE, \"flatpak-system\");\n+\tgs_plugin_add_rule (plugin, GS_PLUGIN_RULE_RUN_BEFORE, \"flatpak-user\");\n+}\n+\n+void\n+gs_plugin_destroy (GsPlugin *plugin)\n+{\n+\tGsPluginData *priv = gs_plugin_get_data (plugin);\n+\n+\t/* Remove the runtimes build directory to clean any contents eventually\n+\t * left from previous builds */\n+\tremove_runtimes_build_dir (plugin);\n+\n+\tg_clear_object (&priv->flatpak);\n+\tg_clear_object (&priv->runtimes_build_dir);\n+}\n+\n+static gboolean\n+app_is_flatpak (GsApp *app)\n+{\n+\tconst gchar *id = gs_app_get_id (app);\n+\treturn id != NULL &&\n+\t\t(g_str_has_prefix (id, GS_FLATPAK_USER_PREFIX \":\") ||\n+\t\t g_str_has_prefix (id, GS_FLATPAK_SYSTEM_PREFIX \":\"));\n+}\n+\n+void\n+gs_plugin_adopt_app (GsPlugin *plugin,\n+\t\t     GsApp *app)\n+{\n+\tif (!app_is_flatpak (app) ||\n+\t    !gs_app_get_metadata_item (app, METADATA_EXTERNAL_ASSETS))\n+\t\treturn;\n+\n+\tg_debug (\"Adopt '%s' as an external app\", gs_app_get_id (app));\n+\n+\tgs_app_set_management_plugin (app, gs_plugin_get_name (plugin));\n+}\n+\n+gboolean\n+gs_plugin_setup (GsPlugin *plugin,\n+\t\t GCancellable *cancellable,\n+\t\t GError **error)\n+{\n+\tGsPluginData *priv = gs_plugin_get_data (plugin);\n+\tgboolean ret = gs_flatpak_setup (priv->flatpak, cancellable, error);\n+\n+\tif (ret) {\n+\t\t/* Remove the runtimes build directories and remotes to clean\n+\t\t * any contents eventually left from previous builds */\n+\t\tremove_runtimes_build_dir (plugin);\n+\t\tremove_ext_apps_remotes (plugin);\n+\t}\n+\n+\treturn ret;\n+}\n+\n+static char *\n+download_asset (GsPlugin *plugin,\n+\t\tGsApp *app,\n+\t\tconst char *runtime,\n+\t\tconst char *asset,\n+\t\tGError **error)\n+{\n+\tg_autofree gchar *cache_basename = NULL;\n+\tg_autofree gchar *cache_fn = NULL;\n+\tg_autofree gchar *cache_png = NULL;\n+\tg_autofree gchar *data = NULL;\n+\n+\tcache_basename = g_path_get_basename (asset);\n+\tcache_fn = gs_utils_get_cache_filename (gs_plugin_get_name (plugin),\n+\t\t\t\t\t\tcache_basename,\n+\t\t\t\t\t\tGS_UTILS_CACHE_FLAG_NONE,\n+\t\t\t\t\t\terror);\n+\tif (cache_fn == NULL)\n+\t\treturn FALSE;\n+\tif (!g_file_test (cache_fn, G_FILE_TEST_EXISTS)) {\n+\t\tif (!gs_mkdir_parent (cache_fn, error))\n+\t\t\treturn NULL;\n+\t\tif (!gs_plugin_download_file (plugin,\n+\t\t\t\t\t      app,\n+\t\t\t\t\t      asset,\n+\t\t\t\t\t      cache_fn,\n+\t\t\t\t\t      NULL,\n+\t\t\t\t\t      error))\n+\t\t\treturn NULL;\n+\t}\n+\n+\treturn g_steal_pointer (&cache_fn);\n+}\n+\n+static gboolean\n+run_command (const char *working_dir,\n+\t     const char **argv,\n+\t     GError **error)\n+{\n+\tg_autofree char *stderr_buf = NULL;\n+\tg_autofree char *stdout_buf = NULL;\n+\tg_autofree char *cmd = NULL;\n+\tint exit_val = -1;\n+\n+\tif (!g_spawn_sync (working_dir, (char **) argv, NULL,\n+\t\t\t   G_SPAWN_SEARCH_PATH, NULL, NULL, &stdout_buf,\n+\t\t\t   &stderr_buf, &exit_val, error)) {\n+\t\treturn FALSE;\n+\t}\n+\n+\tcmd = g_strjoinv (\" \", (char **) argv);\n+\tg_debug (\"Result of running '%s': retcode=%d stdout='%s' stderr='%s'\",\n+\t\t cmd, exit_val,\t(stdout_buf ? stdout_buf : \"NULL\"),\n+\t\t (stderr_buf ? stderr_buf : \"NULL\"));\n+\n+\tif (exit_val != 0) {","path":"src/plugins/gs-plugin-external-apps.c","position":216,"original_position":216,"commit_id":"e7c75eb7b0e6015938cc7080264641fc61e3abd2","original_commit_id":"34074b259ad195bdbe18bf3356f6bf1e881ab979","user":{"login":"joaquimrocha","id":1029635,"avatar_url":"https://avatars.githubusercontent.com/u/1029635?v=3","gravatar_id":"","url":"https://api.github.com/users/joaquimrocha","html_url":"https://github.com/joaquimrocha","followers_url":"https://api.github.com/users/joaquimrocha/followers","following_url":"https://api.github.com/users/joaquimrocha/following{/other_user}","gists_url":"https://api.github.com/users/joaquimrocha/gists{/gist_id}","starred_url":"https://api.github.com/users/joaquimrocha/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/joaquimrocha/subscriptions","organizations_url":"https://api.github.com/users/joaquimrocha/orgs","repos_url":"https://api.github.com/users/joaquimrocha/repos","events_url":"https://api.github.com/users/joaquimrocha/events{/privacy}","received_events_url":"https://api.github.com/users/joaquimrocha/received_events","type":"User","site_admin":false},"body":"Cool. Didn't know that one.","created_at":"2016-06-14T09:36:58Z","updated_at":"2016-06-14T09:36:58Z","html_url":"https://github.com/endlessm/gnome-software/pull/17#discussion_r66938414","pull_request_url":"https://api.github.com/repos/endlessm/gnome-software/pulls/17","_links":{"self":{"href":"https://api.github.com/repos/endlessm/gnome-software/pulls/comments/66938414"},"html":{"href":"https://github.com/endlessm/gnome-software/pull/17#discussion_r66938414"},"pull_request":{"href":"https://api.github.com/repos/endlessm/gnome-software/pulls/17"}}},"pull_request":{"url":"https://api.github.com/repos/endlessm/gnome-software/pulls/17","id":73427975,"html_url":"https://github.com/endlessm/gnome-software/pull/17","diff_url":"https://github.com/endlessm/gnome-software/pull/17.diff","patch_url":"https://github.com/endlessm/gnome-software/pull/17.patch","issue_url":"https://api.github.com/repos/endlessm/gnome-software/issues/17","number":17,"state":"open","locked":false,"title":"T11731","user":{"login":"joaquimrocha","id":1029635,"avatar_url":"https://avatars.githubusercontent.com/u/1029635?v=3","gravatar_id":"","url":"https://api.github.com/users/joaquimrocha","html_url":"https://github.com/joaquimrocha","followers_url":"https://api.github.com/users/joaquimrocha/followers","following_url":"https://api.github.com/users/joaquimrocha/following{/other_user}","gists_url":"https://api.github.com/users/joaquimrocha/gists{/gist_id}","starred_url":"https://api.github.com/users/joaquimrocha/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/joaquimrocha/subscriptions","organizations_url":"https://api.github.com/users/joaquimrocha/orgs","repos_url":"https://api.github.com/users/joaquimrocha/repos","events_url":"https://api.github.com/users/joaquimrocha/events{/privacy}","received_events_url":"https://api.github.com/users/joaquimrocha/received_events","type":"User","site_admin":false},"body":"See https://phabricator.endlessm.com/T11731","created_at":"2016-06-10T20:02:28Z","updated_at":"2016-06-14T09:36:58Z","closed_at":null,"merged_at":null,"merge_commit_sha":"aa3d5bc8c741fb81a85c08427d01db567224e90c","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/endlessm/gnome-software/pulls/17/commits","review_comments_url":"https://api.github.com/repos/endlessm/gnome-software/pulls/17/comments","review_comment_url":"https://api.github.com/repos/endlessm/gnome-software/pulls/comments{/number}","comments_url":"https://api.github.com/repos/endlessm/gnome-software/issues/17/comments","statuses_url":"https://api.github.com/repos/endlessm/gnome-software/statuses/e7c75eb7b0e6015938cc7080264641fc61e3abd2","head":{"label":"endlessm:T11731","ref":"T11731","sha":"e7c75eb7b0e6015938cc7080264641fc61e3abd2","user":{"login":"endlessm","id":1930958,"avatar_url":"https://avatars.githubusercontent.com/u/1930958?v=3","gravatar_id":"","url":"https://api.github.com/users/endlessm","html_url":"https://github.com/endlessm","followers_url":"https://api.github.com/users/endlessm/followers","following_url":"https://api.github.com/users/endlessm/following{/other_user}","gists_url":"https://api.github.com/users/endlessm/gists{/gist_id}","starred_url":"https://api.github.com/users/endlessm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/endlessm/subscriptions","organizations_url":"https://api.github.com/users/endlessm/orgs","repos_url":"https://api.github.com/users/endlessm/repos","events_url":"https://api.github.com/users/endlessm/events{/privacy}","received_events_url":"https://api.github.com/users/endlessm/received_events","type":"Organization","site_admin":false},"repo":{"id":51603051,"name":"gnome-software","full_name":"endlessm/gnome-software","owner":{"login":"endlessm","id":1930958,"avatar_url":"https://avatars.githubusercontent.com/u/1930958?v=3","gravatar_id":"","url":"https://api.github.com/users/endlessm","html_url":"https://github.com/endlessm","followers_url":"https://api.github.com/users/endlessm/followers","following_url":"https://api.github.com/users/endlessm/following{/other_user}","gists_url":"https://api.github.com/users/endlessm/gists{/gist_id}","starred_url":"https://api.github.com/users/endlessm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/endlessm/subscriptions","organizations_url":"https://api.github.com/users/endlessm/orgs","repos_url":"https://api.github.com/users/endlessm/repos","events_url":"https://api.github.com/users/endlessm/events{/privacy}","received_events_url":"https://api.github.com/users/endlessm/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/endlessm/gnome-software","description":"Fork of https://git.gnome.org/browse/gnome-software","fork":false,"url":"https://api.github.com/repos/endlessm/gnome-software","forks_url":"https://api.github.com/repos/endlessm/gnome-software/forks","keys_url":"https://api.github.com/repos/endlessm/gnome-software/keys{/key_id}","collaborators_url":"https://api.github.com/repos/endlessm/gnome-software/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/endlessm/gnome-software/teams","hooks_url":"https://api.github.com/repos/endlessm/gnome-software/hooks","issue_events_url":"https://api.github.com/repos/endlessm/gnome-software/issues/events{/number}","events_url":"https://api.github.com/repos/endlessm/gnome-software/events","assignees_url":"https://api.github.com/repos/endlessm/gnome-software/assignees{/user}","branches_url":"https://api.github.com/repos/endlessm/gnome-software/branches{/branch}","tags_url":"https://api.github.com/repos/endlessm/gnome-software/tags","blobs_url":"https://api.github.com/repos/endlessm/gnome-software/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/endlessm/gnome-software/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/endlessm/gnome-software/git/refs{/sha}","trees_url":"https://api.github.com/repos/endlessm/gnome-software/git/trees{/sha}","statuses_url":"https://api.github.com/repos/endlessm/gnome-software/statuses/{sha}","languages_url":"https://api.github.com/repos/endlessm/gnome-software/languages","stargazers_url":"https://api.github.com/repos/endlessm/gnome-software/stargazers","contributors_url":"https://api.github.com/repos/endlessm/gnome-software/contributors","subscribers_url":"https://api.github.com/repos/endlessm/gnome-software/subscribers","subscription_url":"https://api.github.com/repos/endlessm/gnome-software/subscription","commits_url":"https://api.github.com/repos/endlessm/gnome-software/commits{/sha}","git_commits_url":"https://api.github.com/repos/endlessm/gnome-software/git/commits{/sha}","comments_url":"https://api.github.com/repos/endlessm/gnome-software/comments{/number}","issue_comment_url":"https://api.github.com/repos/endlessm/gnome-software/issues/comments{/number}","contents_url":"https://api.github.com/repos/endlessm/gnome-software/contents/{+path}","compare_url":"https://api.github.com/repos/endlessm/gnome-software/compare/{base}...{head}","merges_url":"https://api.github.com/repos/endlessm/gnome-software/merges","archive_url":"https://api.github.com/repos/endlessm/gnome-software/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/endlessm/gnome-software/downloads","issues_url":"https://api.github.com/repos/endlessm/gnome-software/issues{/number}","pulls_url":"https://api.github.com/repos/endlessm/gnome-software/pulls{/number}","milestones_url":"https://api.github.com/repos/endlessm/gnome-software/milestones{/number}","notifications_url":"https://api.github.com/repos/endlessm/gnome-software/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/endlessm/gnome-software/labels{/name}","releases_url":"https://api.github.com/repos/endlessm/gnome-software/releases{/id}","deployments_url":"https://api.github.com/repos/endlessm/gnome-software/deployments","created_at":"2016-02-12T17:04:47Z","updated_at":"2016-02-12T17:28:16Z","pushed_at":"2016-06-14T02:51:56Z","git_url":"git://github.com/endlessm/gnome-software.git","ssh_url":"git@github.com:endlessm/gnome-software.git","clone_url":"https://github.com/endlessm/gnome-software.git","svn_url":"https://github.com/endlessm/gnome-software","homepage":null,"size":13944,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"endlessm:master","ref":"master","sha":"dbd75513952a574993c1e329c1fa515580ecc225","user":{"login":"endlessm","id":1930958,"avatar_url":"https://avatars.githubusercontent.com/u/1930958?v=3","gravatar_id":"","url":"https://api.github.com/users/endlessm","html_url":"https://github.com/endlessm","followers_url":"https://api.github.com/users/endlessm/followers","following_url":"https://api.github.com/users/endlessm/following{/other_user}","gists_url":"https://api.github.com/users/endlessm/gists{/gist_id}","starred_url":"https://api.github.com/users/endlessm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/endlessm/subscriptions","organizations_url":"https://api.github.com/users/endlessm/orgs","repos_url":"https://api.github.com/users/endlessm/repos","events_url":"https://api.github.com/users/endlessm/events{/privacy}","received_events_url":"https://api.github.com/users/endlessm/received_events","type":"Organization","site_admin":false},"repo":{"id":51603051,"name":"gnome-software","full_name":"endlessm/gnome-software","owner":{"login":"endlessm","id":1930958,"avatar_url":"https://avatars.githubusercontent.com/u/1930958?v=3","gravatar_id":"","url":"https://api.github.com/users/endlessm","html_url":"https://github.com/endlessm","followers_url":"https://api.github.com/users/endlessm/followers","following_url":"https://api.github.com/users/endlessm/following{/other_user}","gists_url":"https://api.github.com/users/endlessm/gists{/gist_id}","starred_url":"https://api.github.com/users/endlessm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/endlessm/subscriptions","organizations_url":"https://api.github.com/users/endlessm/orgs","repos_url":"https://api.github.com/users/endlessm/repos","events_url":"https://api.github.com/users/endlessm/events{/privacy}","received_events_url":"https://api.github.com/users/endlessm/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/endlessm/gnome-software","description":"Fork of https://git.gnome.org/browse/gnome-software","fork":false,"url":"https://api.github.com/repos/endlessm/gnome-software","forks_url":"https://api.github.com/repos/endlessm/gnome-software/forks","keys_url":"https://api.github.com/repos/endlessm/gnome-software/keys{/key_id}","collaborators_url":"https://api.github.com/repos/endlessm/gnome-software/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/endlessm/gnome-software/teams","hooks_url":"https://api.github.com/repos/endlessm/gnome-software/hooks","issue_events_url":"https://api.github.com/repos/endlessm/gnome-software/issues/events{/number}","events_url":"https://api.github.com/repos/endlessm/gnome-software/events","assignees_url":"https://api.github.com/repos/endlessm/gnome-software/assignees{/user}","branches_url":"https://api.github.com/repos/endlessm/gnome-software/branches{/branch}","tags_url":"https://api.github.com/repos/endlessm/gnome-software/tags","blobs_url":"https://api.github.com/repos/endlessm/gnome-software/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/endlessm/gnome-software/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/endlessm/gnome-software/git/refs{/sha}","trees_url":"https://api.github.com/repos/endlessm/gnome-software/git/trees{/sha}","statuses_url":"https://api.github.com/repos/endlessm/gnome-software/statuses/{sha}","languages_url":"https://api.github.com/repos/endlessm/gnome-software/languages","stargazers_url":"https://api.github.com/repos/endlessm/gnome-software/stargazers","contributors_url":"https://api.github.com/repos/endlessm/gnome-software/contributors","subscribers_url":"https://api.github.com/repos/endlessm/gnome-software/subscribers","subscription_url":"https://api.github.com/repos/endlessm/gnome-software/subscription","commits_url":"https://api.github.com/repos/endlessm/gnome-software/commits{/sha}","git_commits_url":"https://api.github.com/repos/endlessm/gnome-software/git/commits{/sha}","comments_url":"https://api.github.com/repos/endlessm/gnome-software/comments{/number}","issue_comment_url":"https://api.github.com/repos/endlessm/gnome-software/issues/comments{/number}","contents_url":"https://api.github.com/repos/endlessm/gnome-software/contents/{+path}","compare_url":"https://api.github.com/repos/endlessm/gnome-software/compare/{base}...{head}","merges_url":"https://api.github.com/repos/endlessm/gnome-software/merges","archive_url":"https://api.github.com/repos/endlessm/gnome-software/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/endlessm/gnome-software/downloads","issues_url":"https://api.github.com/repos/endlessm/gnome-software/issues{/number}","pulls_url":"https://api.github.com/repos/endlessm/gnome-software/pulls{/number}","milestones_url":"https://api.github.com/repos/endlessm/gnome-software/milestones{/number}","notifications_url":"https://api.github.com/repos/endlessm/gnome-software/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/endlessm/gnome-software/labels{/name}","releases_url":"https://api.github.com/repos/endlessm/gnome-software/releases{/id}","deployments_url":"https://api.github.com/repos/endlessm/gnome-software/deployments","created_at":"2016-02-12T17:04:47Z","updated_at":"2016-02-12T17:28:16Z","pushed_at":"2016-06-14T02:51:56Z","git_url":"git://github.com/endlessm/gnome-software.git","ssh_url":"git@github.com:endlessm/gnome-software.git","clone_url":"https://github.com/endlessm/gnome-software.git","svn_url":"https://github.com/endlessm/gnome-software","homepage":null,"size":13944,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/endlessm/gnome-software/pulls/17"},"html":{"href":"https://github.com/endlessm/gnome-software/pull/17"},"issue":{"href":"https://api.github.com/repos/endlessm/gnome-software/issues/17"},"comments":{"href":"https://api.github.com/repos/endlessm/gnome-software/issues/17/comments"},"review_comments":{"href":"https://api.github.com/repos/endlessm/gnome-software/pulls/17/comments"},"review_comment":{"href":"https://api.github.com/repos/endlessm/gnome-software/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/endlessm/gnome-software/pulls/17/commits"},"statuses":{"href":"https://api.github.com/repos/endlessm/gnome-software/statuses/e7c75eb7b0e6015938cc7080264641fc61e3abd2"}}}}
{"actor":{"display_login":"joaquimrocha"}}