{"action":"created","comment":{"url":"https://api.github.com/repos/balabit/syslog-ng-incubator/pulls/comments/74696579","id":74696579,"diff_hunk":"@@ -0,0 +1,259 @@\n+/*\n+ * Copyright (c) 2014 BalaBit IT Ltd, Budapest, Hungary\n+ * Copyright (c) 2016 Yilin Li <liyilin1214@gmail.com>\n+ *\n+ * This program is free software; you can redistribute it and/or modify it\n+ * under the terms of the GNU General Public License version 2 as published\n+ * by the Free Software Foundation, or (at your option) any later version.\n+ *\n+ * This library 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 GNU\n+ * Lesser General Public License for more details.\n+ *\n+ * You should have received a copy of the GNU Lesser General Public\n+ * License along with this library; if not, write to the Free Software\n+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA\n+ *\n+ * As an additional exemption you are allowed to compile & link against the\n+ * OpenSSL libraries as published by the OpenSSL project. See the file\n+ * COPYING for details.\n+ *\n+ */\n+\n+#include \"websocket-destination.h\"\n+#include \"ws_api/client.h\"\n+#include \"ws_api/server.h\"\n+#include <stdio.h>\n+#include <string.h>\n+\n+\n+gboolean\n+websocket_dd_init(LogPipe *destination)\n+{\n+  WebsocketDestDriver *self = (WebsocketDestDriver *)destination;\n+  GlobalConfig *cfg = log_pipe_get_config(destination);\n+\n+  if (!log_dest_driver_init_method(destination))\n+    return FALSE;\n+\n+  log_template_options_init(&self->template_options, cfg);\n+\n+  if (self->enable_ssl)\n+    self->client_use_ssl_flag = self->allow_self_signed ? 2 : 1;\n+  else\n+    self->client_use_ssl_flag = 0;\n+\n+  if (strcmp(self->mode, \"client\") && strcmp(self->mode, \"server\")) {\n+    msg_error(\"Only \\\"server\\\" and \\\"client\\\" are supported for mode option!\", evt_tag_str(\"mode\", self->mode), NULL);\n+    return FALSE;\n+  }\n+  return log_threaded_dest_driver_start(destination);\n+}\n+\n+LogDriver *websocket_dd_new(GlobalConfig *cfg);\n+\n+void websocket_dd_set_port(LogDriver *destination, gint port) {\n+  WebsocketDestDriver *self = (WebsocketDestDriver *)destination;\n+  self->port = port;\n+}\n+\n+void\n+websocket_dd_set_address(LogDriver *destination, gchar *address) {\n+  WebsocketDestDriver *self = (WebsocketDestDriver *)destination;\n+  g_free(self->address);\n+  self->address = g_strdup(address);\n+}\n+\n+void\n+websocket_dd_set_mode(LogDriver *destination, gchar *mode) {\n+  WebsocketDestDriver *self = (WebsocketDestDriver *)destination;\n+  g_free(self->mode);\n+  self->mode = g_strdup(mode);\n+}\n+\n+void\n+websocket_dd_set_protocol(LogDriver *destination, gchar *protocol) {\n+  WebsocketDestDriver *self = (WebsocketDestDriver *)destination;\n+  g_free(self->protocol);\n+  self->protocol = g_strdup(protocol);\n+}\n+\n+void\n+websocket_dd_set_path(LogDriver *destination, gchar *path) {\n+  WebsocketDestDriver *self = (WebsocketDestDriver *)destination;\n+  g_free(self->path);\n+  self->path = g_strdup(path);\n+}\n+\n+void websocket_dd_set_enable_ssl(LogDriver *destination, int flag) {\n+  WebsocketDestDriver *self = (WebsocketDestDriver *)destination;\n+  self->enable_ssl = flag;\n+}\n+\n+void websocket_dd_set_cert(LogDriver *destination, gchar *path) {\n+  WebsocketDestDriver *self = (WebsocketDestDriver *)destination;\n+  g_free(self->cert);\n+  self->cert = path == NULL ? NULL : g_strdup(path);\n+}\n+\n+void websocket_dd_set_key(LogDriver *destination, gchar *path) {\n+  WebsocketDestDriver *self = (WebsocketDestDriver *)destination;\n+  g_free(self->key);\n+  self->key = path == NULL ? NULL : g_strdup(path);\n+}\n+\n+void websocket_dd_set_cacert(LogDriver *destination, gchar *path) {\n+  WebsocketDestDriver *self = (WebsocketDestDriver *)destination;\n+  g_free(self->cacert);\n+  self->cacert = path == NULL ? NULL : g_strdup(path);\n+}\n+\n+void websocket_dd_set_allow_self_signed(LogDriver *destination, int flag) {\n+  WebsocketDestDriver *self = (WebsocketDestDriver *)destination;\n+  self->allow_self_signed = flag;\n+}\n+\n+void\n+websocket_dd_set_template(LogDriver *destination, gchar *template)\n+{\n+  WebsocketDestDriver *self = (WebsocketDestDriver *)destination;\n+  GlobalConfig* cfg = log_pipe_get_config(&destination->super);\n+  g_free(self->template);\n+  self->template = log_template_new(cfg, NULL);\n+  log_template_compile(self->template, template, NULL);\n+}\n+\n+LogTemplateOptions *\n+destination_dd_get_template_options(LogDriver *d)\n+{\n+  WebsocketDestDriver *self = (WebsocketDestDriver *)d;\n+  return &self->template_options;\n+}\n+\n+static void\n+websocket_dd_free(LogPipe *destination)\n+{\n+  WebsocketDestDriver *self = (WebsocketDestDriver *) destination;\n+  g_free(self->template);\n+  g_free(self->address);\n+  g_free(self->path);\n+  g_free(self->protocol);\n+  g_free(self->mode);\n+  g_free(self->cert);\n+  g_free(self->key);\n+  g_free(self->cacert);\n+  log_threaded_dest_driver_free(destination);\n+}\n+\n+\n+static void\n+websocket_worker_thread_init(LogThrDestDriver *destination)\n+{\n+  WebsocketDestDriver *self = (WebsocketDestDriver *)destination;\n+\n+  msg_debug(\"Worker thread started\",\n+            evt_tag_str(\"driver\", self->super.super.super.id),\n+            NULL);\n+\n+  if (strcmp(self->mode, \"client\") == 0)\n+    websocket_client_create(self->protocol, self->address, self->port,\n+      self->path, self->client_use_ssl_flag, self->cert, self->key,\n+      self->cacert, &self->msgqid, &self->service_pid);\n+  else if (strcmp(self->mode, \"server\") == 0)\n+    websocket_server_create(self->protocol, self->port,\n+      self->client_use_ssl_flag, self->cert, self->key, self->cacert, NULL,\n+      &self->msgqid, &self->service_pid);\n+}\n+\n+\n+static void\n+websocket_dd_disconnect(LogThrDestDriver *destination)\n+{\n+  WebsocketDestDriver *self = (WebsocketDestDriver *)destination;\n+  if (strcmp(self->mode, \"client\") == 0)\n+    websocket_client_disconnect(self->service_pid);\n+  else if (strcmp(self->mode, \"server\") == 0)\n+    websocket_server_shutdown(self->service_pid);\n+}\n+\n+static worker_insert_result_t\n+websocket_worker_insert(LogThrDestDriver *destination, LogMessage *msg)\n+{\n+  WebsocketDestDriver *self = (WebsocketDestDriver *)destination;\n+  GString *result = g_string_new(\"\");\n+  log_template_format(self->template, msg, &self->template_options, LTZ_LOCAL, self->super.seq_num, NULL, result);\n+\n+  int res;\n+  if (strcmp(self->mode, \"client\") == 0)\n+    res = websocket_client_send_msg(result->str, self->msgqid, self->port);\n+  else if (strcmp(self->mode, \"server\") == 0)\n+    res = websocket_server_broadcast_msg(result->str, self->msgqid, self->port);\n+\n+  g_string_free(result, TRUE);\n+  if (res == 0)\n+    return WORKER_INSERT_RESULT_SUCCESS;\n+  else\n+    return WORKER_INSERT_RESULT_ERROR;\n+}\n+\n+static gchar *\n+websocket_dd_format_stats_instance(LogThrDestDriver *d)\n+{\n+  static gchar persist_name[1024];\n+  WebsocketDestDriver *self = (WebsocketDestDriver *)d;\n+\n+  g_snprintf(persist_name, sizeof(persist_name), \"websocket_dest:%s:%s:%d:%s:%s\",\n+    self->mode, self->address, self->port, self->protocol, self->path);\n+  return persist_name;\n+}\n+\n+static gchar *\n+websocket_dd_format_persist_name(LogThrDestDriver *d)\n+{\n+  static gchar persist_name[1024];\n+  WebsocketDestDriver *self = (WebsocketDestDriver *)d;\n+\n+  g_snprintf(persist_name, sizeof(persist_name), \"websocket_dest:%s:%s:%d:%s:%s\",\n+    self->mode, self->address, self->port, self->protocol, self->path);\n+  return persist_name;\n+}","path":"modules/websocket/websocket-destination.c","position":204,"original_position":220,"commit_id":"146f1bddf2b58df8410d627fcfec3ec710649e83","original_commit_id":"eddbd2eee1f9b85b7be45a9f4896b39fc4aaa723","user":{"login":"litterbear","id":8296623,"avatar_url":"https://avatars.githubusercontent.com/u/8296623?v=3","gravatar_id":"","url":"https://api.github.com/users/litterbear","html_url":"https://github.com/litterbear","followers_url":"https://api.github.com/users/litterbear/followers","following_url":"https://api.github.com/users/litterbear/following{/other_user}","gists_url":"https://api.github.com/users/litterbear/gists{/gist_id}","starred_url":"https://api.github.com/users/litterbear/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/litterbear/subscriptions","organizations_url":"https://api.github.com/users/litterbear/orgs","repos_url":"https://api.github.com/users/litterbear/repos","events_url":"https://api.github.com/users/litterbear/events{/privacy}","received_events_url":"https://api.github.com/users/litterbear/received_events","type":"User","site_admin":false},"body":"The two functions are combined into one.\r\nThe same problem in ZMQ is fixed now ! ","created_at":"2016-08-14T06:18:55Z","updated_at":"2016-08-14T06:18:55Z","html_url":"https://github.com/balabit/syslog-ng-incubator/pull/156#discussion_r74696579","pull_request_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/pulls/156","_links":{"self":{"href":"https://api.github.com/repos/balabit/syslog-ng-incubator/pulls/comments/74696579"},"html":{"href":"https://github.com/balabit/syslog-ng-incubator/pull/156#discussion_r74696579"},"pull_request":{"href":"https://api.github.com/repos/balabit/syslog-ng-incubator/pulls/156"}}},"pull_request":{"url":"https://api.github.com/repos/balabit/syslog-ng-incubator/pulls/156","id":70488231,"html_url":"https://github.com/balabit/syslog-ng-incubator/pull/156","diff_url":"https://github.com/balabit/syslog-ng-incubator/pull/156.diff","patch_url":"https://github.com/balabit/syslog-ng-incubator/pull/156.patch","issue_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/issues/156","number":156,"state":"open","locked":false,"title":"init frame work of websocket","user":{"login":"litterbear","id":8296623,"avatar_url":"https://avatars.githubusercontent.com/u/8296623?v=3","gravatar_id":"","url":"https://api.github.com/users/litterbear","html_url":"https://github.com/litterbear","followers_url":"https://api.github.com/users/litterbear/followers","following_url":"https://api.github.com/users/litterbear/following{/other_user}","gists_url":"https://api.github.com/users/litterbear/gists{/gist_id}","starred_url":"https://api.github.com/users/litterbear/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/litterbear/subscriptions","organizations_url":"https://api.github.com/users/litterbear/orgs","repos_url":"https://api.github.com/users/litterbear/repos","events_url":"https://api.github.com/users/litterbear/events{/privacy}","received_events_url":"https://api.github.com/users/litterbear/received_events","type":"User","site_admin":false},"body":"solved Conflicts:\r\n\tconfigure.ac\r\n\tmodules/Makefile.am","created_at":"2016-05-18T08:37:30Z","updated_at":"2016-08-14T06:18:55Z","closed_at":null,"merged_at":null,"merge_commit_sha":"747d18caf593a0a08d1224635688401b3bda5705","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/pulls/156/commits","review_comments_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/pulls/156/comments","review_comment_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/pulls/comments{/number}","comments_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/issues/156/comments","statuses_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/statuses/146f1bddf2b58df8410d627fcfec3ec710649e83","head":{"label":"litterbear:websocket-module","ref":"websocket-module","sha":"146f1bddf2b58df8410d627fcfec3ec710649e83","user":{"login":"litterbear","id":8296623,"avatar_url":"https://avatars.githubusercontent.com/u/8296623?v=3","gravatar_id":"","url":"https://api.github.com/users/litterbear","html_url":"https://github.com/litterbear","followers_url":"https://api.github.com/users/litterbear/followers","following_url":"https://api.github.com/users/litterbear/following{/other_user}","gists_url":"https://api.github.com/users/litterbear/gists{/gist_id}","starred_url":"https://api.github.com/users/litterbear/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/litterbear/subscriptions","organizations_url":"https://api.github.com/users/litterbear/orgs","repos_url":"https://api.github.com/users/litterbear/repos","events_url":"https://api.github.com/users/litterbear/events{/privacy}","received_events_url":"https://api.github.com/users/litterbear/received_events","type":"User","site_admin":false},"repo":{"id":54475320,"name":"syslog-ng-incubator","full_name":"litterbear/syslog-ng-incubator","owner":{"login":"litterbear","id":8296623,"avatar_url":"https://avatars.githubusercontent.com/u/8296623?v=3","gravatar_id":"","url":"https://api.github.com/users/litterbear","html_url":"https://github.com/litterbear","followers_url":"https://api.github.com/users/litterbear/followers","following_url":"https://api.github.com/users/litterbear/following{/other_user}","gists_url":"https://api.github.com/users/litterbear/gists{/gist_id}","starred_url":"https://api.github.com/users/litterbear/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/litterbear/subscriptions","organizations_url":"https://api.github.com/users/litterbear/orgs","repos_url":"https://api.github.com/users/litterbear/repos","events_url":"https://api.github.com/users/litterbear/events{/privacy}","received_events_url":"https://api.github.com/users/litterbear/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/litterbear/syslog-ng-incubator","description":"Experimental modules for syslog-ng 3.5+","fork":true,"url":"https://api.github.com/repos/litterbear/syslog-ng-incubator","forks_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/forks","keys_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/keys{/key_id}","collaborators_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/teams","hooks_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/hooks","issue_events_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/issues/events{/number}","events_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/events","assignees_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/assignees{/user}","branches_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/branches{/branch}","tags_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/tags","blobs_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/git/refs{/sha}","trees_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/git/trees{/sha}","statuses_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/statuses/{sha}","languages_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/languages","stargazers_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/stargazers","contributors_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/contributors","subscribers_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/subscribers","subscription_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/subscription","commits_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/commits{/sha}","git_commits_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/git/commits{/sha}","comments_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/comments{/number}","issue_comment_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/issues/comments{/number}","contents_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/contents/{+path}","compare_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/compare/{base}...{head}","merges_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/merges","archive_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/downloads","issues_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/issues{/number}","pulls_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/pulls{/number}","milestones_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/milestones{/number}","notifications_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/labels{/name}","releases_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/releases{/id}","deployments_url":"https://api.github.com/repos/litterbear/syslog-ng-incubator/deployments","created_at":"2016-03-22T12:59:26Z","updated_at":"2016-03-22T12:59:27Z","pushed_at":"2016-08-14T06:18:32Z","git_url":"git://github.com/litterbear/syslog-ng-incubator.git","ssh_url":"git@github.com:litterbear/syslog-ng-incubator.git","clone_url":"https://github.com/litterbear/syslog-ng-incubator.git","svn_url":"https://github.com/litterbear/syslog-ng-incubator","homepage":null,"size":638,"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":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"balabit:websocket-module","ref":"websocket-module","sha":"6de11c397246be6c0f466f1d18125c361cf3b6ed","user":{"login":"balabit","id":986981,"avatar_url":"https://avatars.githubusercontent.com/u/986981?v=3","gravatar_id":"","url":"https://api.github.com/users/balabit","html_url":"https://github.com/balabit","followers_url":"https://api.github.com/users/balabit/followers","following_url":"https://api.github.com/users/balabit/following{/other_user}","gists_url":"https://api.github.com/users/balabit/gists{/gist_id}","starred_url":"https://api.github.com/users/balabit/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/balabit/subscriptions","organizations_url":"https://api.github.com/users/balabit/orgs","repos_url":"https://api.github.com/users/balabit/repos","events_url":"https://api.github.com/users/balabit/events{/privacy}","received_events_url":"https://api.github.com/users/balabit/received_events","type":"Organization","site_admin":false},"repo":{"id":12888740,"name":"syslog-ng-incubator","full_name":"balabit/syslog-ng-incubator","owner":{"login":"balabit","id":986981,"avatar_url":"https://avatars.githubusercontent.com/u/986981?v=3","gravatar_id":"","url":"https://api.github.com/users/balabit","html_url":"https://github.com/balabit","followers_url":"https://api.github.com/users/balabit/followers","following_url":"https://api.github.com/users/balabit/following{/other_user}","gists_url":"https://api.github.com/users/balabit/gists{/gist_id}","starred_url":"https://api.github.com/users/balabit/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/balabit/subscriptions","organizations_url":"https://api.github.com/users/balabit/orgs","repos_url":"https://api.github.com/users/balabit/repos","events_url":"https://api.github.com/users/balabit/events{/privacy}","received_events_url":"https://api.github.com/users/balabit/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/balabit/syslog-ng-incubator","description":"Experimental modules for syslog-ng 3.5+","fork":false,"url":"https://api.github.com/repos/balabit/syslog-ng-incubator","forks_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/forks","keys_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/keys{/key_id}","collaborators_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/teams","hooks_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/hooks","issue_events_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/issues/events{/number}","events_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/events","assignees_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/assignees{/user}","branches_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/branches{/branch}","tags_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/tags","blobs_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/git/refs{/sha}","trees_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/git/trees{/sha}","statuses_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/statuses/{sha}","languages_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/languages","stargazers_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/stargazers","contributors_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/contributors","subscribers_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/subscribers","subscription_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/subscription","commits_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/commits{/sha}","git_commits_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/git/commits{/sha}","comments_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/comments{/number}","issue_comment_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/issues/comments{/number}","contents_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/contents/{+path}","compare_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/compare/{base}...{head}","merges_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/merges","archive_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/downloads","issues_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/issues{/number}","pulls_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/pulls{/number}","milestones_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/milestones{/number}","notifications_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/labels{/name}","releases_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/releases{/id}","deployments_url":"https://api.github.com/repos/balabit/syslog-ng-incubator/deployments","created_at":"2013-09-17T07:17:09Z","updated_at":"2016-07-11T15:33:54Z","pushed_at":"2016-08-14T06:18:32Z","git_url":"git://github.com/balabit/syslog-ng-incubator.git","ssh_url":"git@github.com:balabit/syslog-ng-incubator.git","clone_url":"https://github.com/balabit/syslog-ng-incubator.git","svn_url":"https://github.com/balabit/syslog-ng-incubator","homepage":null,"size":941,"stargazers_count":45,"watchers_count":45,"language":"C","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":31,"mirror_url":null,"open_issues_count":25,"forks":31,"open_issues":25,"watchers":45,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/balabit/syslog-ng-incubator/pulls/156"},"html":{"href":"https://github.com/balabit/syslog-ng-incubator/pull/156"},"issue":{"href":"https://api.github.com/repos/balabit/syslog-ng-incubator/issues/156"},"comments":{"href":"https://api.github.com/repos/balabit/syslog-ng-incubator/issues/156/comments"},"review_comments":{"href":"https://api.github.com/repos/balabit/syslog-ng-incubator/pulls/156/comments"},"review_comment":{"href":"https://api.github.com/repos/balabit/syslog-ng-incubator/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/balabit/syslog-ng-incubator/pulls/156/commits"},"statuses":{"href":"https://api.github.com/repos/balabit/syslog-ng-incubator/statuses/146f1bddf2b58df8410d627fcfec3ec710649e83"}}}}
{"actor":{"display_login":"litterbear"}}