{"action":"created","comment":{"url":"https://api.github.com/repos/RocketChat/Rocket.Chat/pulls/comments/211115798","pull_request_review_id":147471407,"id":211115798,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxMTExNTc5OA==","diff_hunk":"@@ -0,0 +1,306 @@\n+import UAParser from 'ua-parser-js';\n+import { UAParserMobile } from './UAParserMobile';\n+\n+const getDateObj = (dateTime) => {\n+\tif (!dateTime) {\n+\t\tdateTime = new Date();\n+\t}\n+\n+\treturn { day: dateTime.getDate(), month: dateTime.getMonth() + 1, year: dateTime.getFullYear() };\n+};\n+\n+const logger = new Logger('SAUMonitor');\n+\n+/**\n+ * Server Session Monitor for SAU(Simultaneously Active Users) based on Meteor server sessions\n+ */\n+export class SAUMonitor {\n+\tconstructor() {\n+\t\tthis._serviceName = 'SAUMonitor';\n+\t\tthis._started = false;\n+\t\tthis._debug = false;\n+\t\tthis._monitorTime = 600000;\n+\t\tthis._timer = null;\n+\t\tthis._today = getDateObj();\n+\t\tthis._instanceId = null;\n+\t}\n+\n+\tstart(instanceId) {\n+\t\tif (this.isRunning()) {\n+\t\t\treturn;\n+\t\t}\n+\n+\t\tthis._instanceId = instanceId;\n+\n+\t\tif (!this._instanceId) {\n+\t\t\tlogger.debug('[start] - InstanceId is not defined.');\n+\t\t\tthis._log(`${ this._serviceName } - Error starting monitor: InstanceID is not defined.`);\n+\t\t\treturn;\n+\t\t}\n+\n+\t\tthis._startMonitoring(() => {\n+\t\t\tthis._started = true;\n+\t\t\tthis._log(`${ this._serviceName } - Started: ${ this._instanceId }`);\n+\t\t\tlogger.debug(`[start] - InstanceId: ${ this._instanceId }`);\n+\t\t});\n+\t}\n+\n+\tstop() {\n+\t\tif (!this.isRunning()) {\n+\t\t\treturn;\n+\t\t}\n+\n+\t\tthis._started = false;\n+\n+\t\tif (this._timer) {\n+\t\t\tMeteor.clearInterval(this._timer);\n+\t\t}\n+\n+\t\tthis.log(`${ this._serviceName } - Stopped.`);\n+\t\tlogger.debug(`[stop] - InstanceId: ${ this._instanceId }`);\n+\t}\n+\n+\tisRunning() {\n+\t\treturn typeof this._started === 'boolean' && this._started === true;\n+\t}\n+\n+\t_log() {\n+\t\tif (this._debug === true) {\n+\t\t\tconsole.log.apply(console, args);","path":"packages/rocketchat-statistics/server/lib/SAUMonitor.js","position":69,"original_position":69,"commit_id":"0eab38252c9d7aaff86fde8b5d76c255eecaa10d","original_commit_id":"0eab38252c9d7aaff86fde8b5d76c255eecaa10d","user":{"login":"codacy-bot","id":19940114,"node_id":"MDQ6VXNlcjE5OTQwMTE0","avatar_url":"https://avatars1.githubusercontent.com/u/19940114?v=4","gravatar_id":"","url":"https://api.github.com/users/codacy-bot","html_url":"https://github.com/codacy-bot","followers_url":"https://api.github.com/users/codacy-bot/followers","following_url":"https://api.github.com/users/codacy-bot/following{/other_user}","gists_url":"https://api.github.com/users/codacy-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/codacy-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codacy-bot/subscriptions","organizations_url":"https://api.github.com/users/codacy-bot/orgs","repos_url":"https://api.github.com/users/codacy-bot/repos","events_url":"https://api.github.com/users/codacy-bot/events{/privacy}","received_events_url":"https://api.github.com/users/codacy-bot/received_events","type":"User","site_admin":false},"body":"![Codacy](https://app.codacy.com/assets/images/favicon.png) Issue found: ['args' is not defined. (no-undef)](https://app.codacy.com/app/RocketChat/Rocket-Chat/pullRequest?prid=1930146)","created_at":"2018-08-19T21:29:33Z","updated_at":"2018-08-19T21:29:33Z","html_url":"https://github.com/RocketChat/Rocket.Chat/pull/11525#discussion_r211115798","pull_request_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/pulls/11525","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/RocketChat/Rocket.Chat/pulls/comments/211115798"},"html":{"href":"https://github.com/RocketChat/Rocket.Chat/pull/11525#discussion_r211115798"},"pull_request":{"href":"https://api.github.com/repos/RocketChat/Rocket.Chat/pulls/11525"}}},"pull_request":{"url":"https://api.github.com/repos/RocketChat/Rocket.Chat/pulls/11525","id":202923935,"node_id":"MDExOlB1bGxSZXF1ZXN0MjAyOTIzOTM1","html_url":"https://github.com/RocketChat/Rocket.Chat/pull/11525","diff_url":"https://github.com/RocketChat/Rocket.Chat/pull/11525.diff","patch_url":"https://github.com/RocketChat/Rocket.Chat/pull/11525.patch","issue_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/issues/11525","number":11525,"state":"open","locked":false,"title":"[NEW]Server Session Monitor for SAU(Simultaneously Active Users)","user":{"login":"renatobecker","id":2067649,"node_id":"MDQ6VXNlcjIwNjc2NDk=","avatar_url":"https://avatars0.githubusercontent.com/u/2067649?v=4","gravatar_id":"","url":"https://api.github.com/users/renatobecker","html_url":"https://github.com/renatobecker","followers_url":"https://api.github.com/users/renatobecker/followers","following_url":"https://api.github.com/users/renatobecker/following{/other_user}","gists_url":"https://api.github.com/users/renatobecker/gists{/gist_id}","starred_url":"https://api.github.com/users/renatobecker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/renatobecker/subscriptions","organizations_url":"https://api.github.com/users/renatobecker/orgs","repos_url":"https://api.github.com/users/renatobecker/repos","events_url":"https://api.github.com/users/renatobecker/events{/privacy}","received_events_url":"https://api.github.com/users/renatobecker/received_events","type":"User","site_admin":false},"body":"New `Server Session Monitor` for SAU (Simultaneously Active Users), which will provide important informations for DAU (Active Daily Users) and MAU (Monthly Active Users).\r\nThe monitor is based on `Meteor server sessions` and will store the data in a new collection:` rocketchat_sessions`.\r\n\r\nThe approach of this implementation will deal with `Connection` events, such as `onConnection` and` onClose`, as well as dealing with `Account` events, such as `onLogin` and` onLogout`.\r\n\r\nThe SAU monitor will use the `Meteor server sessions` to update the session activities in DB. The monitor will `ping` the active sessions every minute, updating the `lastActivityAt` field on session documents.\r\n\r\nThe session lifecycle is stored per day, so when the server date is changed, the current sessions will be created on the new day. This behaviour is designed to facilitate the collector process, which will aggregate the session life cycle and store it in another collection of statistics.\r\n\r\nThe regular(non-mobile) session documents will look like the doc below:\r\n```\r\n{\r\n\t\"_id\" : \"XSM2orqtSPWGYoQT2\",\r\n\t\"year\" : 2018,\r\n\t\"month\" : 7,\r\n\t\"day\" : 20,\r\n\t\"instanceId\" : \"LPvDxJh8fyDy6QsYz\",\r\n\t\"sessionId\" : \"ySTQpjSifhFfXWDis\",\r\n\t\"userId\" : \"uk294ojDzhYFQK53P\",\r\n\t\"ip\" : \"127.0.0.1\",\r\n\t\"host\" : \"localhost:3000\",\r\n\t\"browser\" : {\r\n\t\t\"name\" : \"Chrome\",\r\n\t\t\"version\" : \"67.0.3396.99\",\r\n\t\t\"major\" : \"67\"\r\n\t},\r\n\t\"os\" : {\r\n\t\t\"name\" : \"Mac OS\",\r\n\t\t\"version\" : \"10.13.6\"\r\n\t},\t\r\n\t\"createdAt\" : ISODate(\"2018-07-20T17:06:32.480Z\"),  //when the session is created\r\n\t\"lastActivityAt\" : ISODate(\"2018-07-20T17:10:01.166Z\"), //when the session monitor updates current sessions in bucket storage\r\n\t\"loginAt\" : ISODate(\"2018-07-20T17:06:32.491Z\"), //user login\r\n\t\"logoutAt\" : ISODate(\"2018-07-20T17:10:07.311Z\") //user logout\r\n}\r\n```\r\n\r\nThe mobile session documents will look like the doc below:\r\n\r\n```\r\n{\r\n\t\"_id\" : \"YLoJ68zjA6WfNFt3b\",\r\n\t\"day\" : 26,\r\n\t\"instanceId\" : \"LPvDxJh8fyDy6QsYz\",\r\n\t\"month\" : 7,\r\n\t\"sessionId\" : \"wTrw5SNHa7wfudxaz\",\r\n\t\"year\" : 2018,\r\n\t\"ip\" : \"200.34.239.117,127.0.0.1\",\r\n\t\"host\" : \"d16877f6.ngrok.io\",\r\n\t\"os\" : {\r\n\t\t\"name\" : \"iOS\",\r\n\t\t\"version\" : \"11.4.1\"\r\n\t},\r\n\t\"device\" : {\r\n\t\t\"type\" : \"mobile\"\r\n\t},\r\n\t\"app\" : {\r\n\t\t\"name\" : \"RC Mobile\",\r\n\t\t\"version\" : \"v3.0.2\",\r\n\t\t\"bundle\" : \"(202)\"\r\n\t},\r\n\t\"createdAt\" : ISODate(\"2018-07-26T18:57:49.475Z\"),\r\n\t\"userId\" : \"uk294ojDzhYFQK53P\",\r\n\t\"loginAt\" : ISODate(\"2018-07-26T18:57:49.812Z\"),\r\n        \"lastActivityAt\" : ISODate(\"2018-07-26T18:58:03.834Z\"),\r\n\t\"closedAt\" : ISODate(\"2018-07-26T18:58:03.834Z\")\r\n}\r\n```\r\n\r\nThis new feature is being implemented in 3 steps:\r\n- Model design (sessions)\r\n- Monitor Implementation\r\n- Tests\r\n\r\nThis PR will close the issue number: #11461.\r\n\r\nOnce the implementation is approved, we need to think about the creation of a `cron job` that will collect the data every day, aggregating the data and storing in two other collections: SAU and MAU.\r\n","created_at":"2018-07-20T18:29:24Z","updated_at":"2018-08-19T21:29:33Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b108ad6abf246d6cc6ba263b713309765ebdfb3f","assignee":null,"assignees":[],"requested_reviewers":[{"login":"rodrigok","id":234261,"node_id":"MDQ6VXNlcjIzNDI2MQ==","avatar_url":"https://avatars1.githubusercontent.com/u/234261?v=4","gravatar_id":"","url":"https://api.github.com/users/rodrigok","html_url":"https://github.com/rodrigok","followers_url":"https://api.github.com/users/rodrigok/followers","following_url":"https://api.github.com/users/rodrigok/following{/other_user}","gists_url":"https://api.github.com/users/rodrigok/gists{/gist_id}","starred_url":"https://api.github.com/users/rodrigok/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rodrigok/subscriptions","organizations_url":"https://api.github.com/users/rodrigok/orgs","repos_url":"https://api.github.com/users/rodrigok/repos","events_url":"https://api.github.com/users/rodrigok/events{/privacy}","received_events_url":"https://api.github.com/users/rodrigok/received_events","type":"User","site_admin":false},{"login":"sampaiodiego","id":8591547,"node_id":"MDQ6VXNlcjg1OTE1NDc=","avatar_url":"https://avatars2.githubusercontent.com/u/8591547?v=4","gravatar_id":"","url":"https://api.github.com/users/sampaiodiego","html_url":"https://github.com/sampaiodiego","followers_url":"https://api.github.com/users/sampaiodiego/followers","following_url":"https://api.github.com/users/sampaiodiego/following{/other_user}","gists_url":"https://api.github.com/users/sampaiodiego/gists{/gist_id}","starred_url":"https://api.github.com/users/sampaiodiego/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sampaiodiego/subscriptions","organizations_url":"https://api.github.com/users/sampaiodiego/orgs","repos_url":"https://api.github.com/users/sampaiodiego/repos","events_url":"https://api.github.com/users/sampaiodiego/events{/privacy}","received_events_url":"https://api.github.com/users/sampaiodiego/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":{"url":"https://api.github.com/repos/RocketChat/Rocket.Chat/milestones/124","html_url":"https://github.com/RocketChat/Rocket.Chat/milestone/124","labels_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/milestones/124/labels","id":3525389,"node_id":"MDk6TWlsZXN0b25lMzUyNTM4OQ==","number":124,"title":"0.69.0","description":"","creator":{"login":"rodrigok","id":234261,"node_id":"MDQ6VXNlcjIzNDI2MQ==","avatar_url":"https://avatars1.githubusercontent.com/u/234261?v=4","gravatar_id":"","url":"https://api.github.com/users/rodrigok","html_url":"https://github.com/rodrigok","followers_url":"https://api.github.com/users/rodrigok/followers","following_url":"https://api.github.com/users/rodrigok/following{/other_user}","gists_url":"https://api.github.com/users/rodrigok/gists{/gist_id}","starred_url":"https://api.github.com/users/rodrigok/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rodrigok/subscriptions","organizations_url":"https://api.github.com/users/rodrigok/orgs","repos_url":"https://api.github.com/users/rodrigok/repos","events_url":"https://api.github.com/users/rodrigok/events{/privacy}","received_events_url":"https://api.github.com/users/rodrigok/received_events","type":"User","site_admin":false},"open_issues":64,"closed_issues":48,"state":"open","created_at":"2018-07-26T13:42:50Z","updated_at":"2018-08-19T20:50:58Z","due_on":"2018-08-27T07:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/pulls/11525/commits","review_comments_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/pulls/11525/comments","review_comment_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/pulls/comments{/number}","comments_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/issues/11525/comments","statuses_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/statuses/0eab38252c9d7aaff86fde8b5d76c255eecaa10d","head":{"label":"RocketChat:server-session-monitor","ref":"server-session-monitor","sha":"0eab38252c9d7aaff86fde8b5d76c255eecaa10d","user":{"login":"RocketChat","id":12508788,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEyNTA4Nzg4","avatar_url":"https://avatars1.githubusercontent.com/u/12508788?v=4","gravatar_id":"","url":"https://api.github.com/users/RocketChat","html_url":"https://github.com/RocketChat","followers_url":"https://api.github.com/users/RocketChat/followers","following_url":"https://api.github.com/users/RocketChat/following{/other_user}","gists_url":"https://api.github.com/users/RocketChat/gists{/gist_id}","starred_url":"https://api.github.com/users/RocketChat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RocketChat/subscriptions","organizations_url":"https://api.github.com/users/RocketChat/orgs","repos_url":"https://api.github.com/users/RocketChat/repos","events_url":"https://api.github.com/users/RocketChat/events{/privacy}","received_events_url":"https://api.github.com/users/RocketChat/received_events","type":"Organization","site_admin":false},"repo":{"id":35866694,"node_id":"MDEwOlJlcG9zaXRvcnkzNTg2NjY5NA==","name":"Rocket.Chat","full_name":"RocketChat/Rocket.Chat","owner":{"login":"RocketChat","id":12508788,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEyNTA4Nzg4","avatar_url":"https://avatars1.githubusercontent.com/u/12508788?v=4","gravatar_id":"","url":"https://api.github.com/users/RocketChat","html_url":"https://github.com/RocketChat","followers_url":"https://api.github.com/users/RocketChat/followers","following_url":"https://api.github.com/users/RocketChat/following{/other_user}","gists_url":"https://api.github.com/users/RocketChat/gists{/gist_id}","starred_url":"https://api.github.com/users/RocketChat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RocketChat/subscriptions","organizations_url":"https://api.github.com/users/RocketChat/orgs","repos_url":"https://api.github.com/users/RocketChat/repos","events_url":"https://api.github.com/users/RocketChat/events{/privacy}","received_events_url":"https://api.github.com/users/RocketChat/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/RocketChat/Rocket.Chat","description":"Have your own Slack like online chat, built with Meteor.","fork":false,"url":"https://api.github.com/repos/RocketChat/Rocket.Chat","forks_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/forks","keys_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/keys{/key_id}","collaborators_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/teams","hooks_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/hooks","issue_events_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/issues/events{/number}","events_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/events","assignees_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/assignees{/user}","branches_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/branches{/branch}","tags_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/tags","blobs_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/git/refs{/sha}","trees_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/git/trees{/sha}","statuses_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/statuses/{sha}","languages_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/languages","stargazers_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/stargazers","contributors_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/contributors","subscribers_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/subscribers","subscription_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/subscription","commits_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/commits{/sha}","git_commits_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/git/commits{/sha}","comments_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/comments{/number}","issue_comment_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/issues/comments{/number}","contents_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/contents/{+path}","compare_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/compare/{base}...{head}","merges_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/merges","archive_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/downloads","issues_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/issues{/number}","pulls_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/pulls{/number}","milestones_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/milestones{/number}","notifications_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/labels{/name}","releases_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/releases{/id}","deployments_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/deployments","created_at":"2015-05-19T07:36:09Z","updated_at":"2018-08-19T20:48:20Z","pushed_at":"2018-08-19T21:25:29Z","git_url":"git://github.com/RocketChat/Rocket.Chat.git","ssh_url":"git@github.com:RocketChat/Rocket.Chat.git","clone_url":"https://github.com/RocketChat/Rocket.Chat.git","svn_url":"https://github.com/RocketChat/Rocket.Chat","homepage":"https://rocket.chat/","size":76716,"stargazers_count":19472,"watchers_count":19472,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":4118,"mirror_url":null,"archived":false,"open_issues_count":2087,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":4118,"open_issues":2087,"watchers":19472,"default_branch":"develop"}},"base":{"label":"RocketChat:develop","ref":"develop","sha":"350738bcd1cf6e5becfa951dd76d25c60b05a004","user":{"login":"RocketChat","id":12508788,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEyNTA4Nzg4","avatar_url":"https://avatars1.githubusercontent.com/u/12508788?v=4","gravatar_id":"","url":"https://api.github.com/users/RocketChat","html_url":"https://github.com/RocketChat","followers_url":"https://api.github.com/users/RocketChat/followers","following_url":"https://api.github.com/users/RocketChat/following{/other_user}","gists_url":"https://api.github.com/users/RocketChat/gists{/gist_id}","starred_url":"https://api.github.com/users/RocketChat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RocketChat/subscriptions","organizations_url":"https://api.github.com/users/RocketChat/orgs","repos_url":"https://api.github.com/users/RocketChat/repos","events_url":"https://api.github.com/users/RocketChat/events{/privacy}","received_events_url":"https://api.github.com/users/RocketChat/received_events","type":"Organization","site_admin":false},"repo":{"id":35866694,"node_id":"MDEwOlJlcG9zaXRvcnkzNTg2NjY5NA==","name":"Rocket.Chat","full_name":"RocketChat/Rocket.Chat","owner":{"login":"RocketChat","id":12508788,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEyNTA4Nzg4","avatar_url":"https://avatars1.githubusercontent.com/u/12508788?v=4","gravatar_id":"","url":"https://api.github.com/users/RocketChat","html_url":"https://github.com/RocketChat","followers_url":"https://api.github.com/users/RocketChat/followers","following_url":"https://api.github.com/users/RocketChat/following{/other_user}","gists_url":"https://api.github.com/users/RocketChat/gists{/gist_id}","starred_url":"https://api.github.com/users/RocketChat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RocketChat/subscriptions","organizations_url":"https://api.github.com/users/RocketChat/orgs","repos_url":"https://api.github.com/users/RocketChat/repos","events_url":"https://api.github.com/users/RocketChat/events{/privacy}","received_events_url":"https://api.github.com/users/RocketChat/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/RocketChat/Rocket.Chat","description":"Have your own Slack like online chat, built with Meteor.","fork":false,"url":"https://api.github.com/repos/RocketChat/Rocket.Chat","forks_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/forks","keys_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/keys{/key_id}","collaborators_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/teams","hooks_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/hooks","issue_events_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/issues/events{/number}","events_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/events","assignees_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/assignees{/user}","branches_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/branches{/branch}","tags_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/tags","blobs_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/git/refs{/sha}","trees_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/git/trees{/sha}","statuses_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/statuses/{sha}","languages_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/languages","stargazers_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/stargazers","contributors_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/contributors","subscribers_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/subscribers","subscription_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/subscription","commits_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/commits{/sha}","git_commits_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/git/commits{/sha}","comments_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/comments{/number}","issue_comment_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/issues/comments{/number}","contents_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/contents/{+path}","compare_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/compare/{base}...{head}","merges_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/merges","archive_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/downloads","issues_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/issues{/number}","pulls_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/pulls{/number}","milestones_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/milestones{/number}","notifications_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/labels{/name}","releases_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/releases{/id}","deployments_url":"https://api.github.com/repos/RocketChat/Rocket.Chat/deployments","created_at":"2015-05-19T07:36:09Z","updated_at":"2018-08-19T20:48:20Z","pushed_at":"2018-08-19T21:25:29Z","git_url":"git://github.com/RocketChat/Rocket.Chat.git","ssh_url":"git@github.com:RocketChat/Rocket.Chat.git","clone_url":"https://github.com/RocketChat/Rocket.Chat.git","svn_url":"https://github.com/RocketChat/Rocket.Chat","homepage":"https://rocket.chat/","size":76716,"stargazers_count":19472,"watchers_count":19472,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":4118,"mirror_url":null,"archived":false,"open_issues_count":2087,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":4118,"open_issues":2087,"watchers":19472,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/RocketChat/Rocket.Chat/pulls/11525"},"html":{"href":"https://github.com/RocketChat/Rocket.Chat/pull/11525"},"issue":{"href":"https://api.github.com/repos/RocketChat/Rocket.Chat/issues/11525"},"comments":{"href":"https://api.github.com/repos/RocketChat/Rocket.Chat/issues/11525/comments"},"review_comments":{"href":"https://api.github.com/repos/RocketChat/Rocket.Chat/pulls/11525/comments"},"review_comment":{"href":"https://api.github.com/repos/RocketChat/Rocket.Chat/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/RocketChat/Rocket.Chat/pulls/11525/commits"},"statuses":{"href":"https://api.github.com/repos/RocketChat/Rocket.Chat/statuses/0eab38252c9d7aaff86fde8b5d76c255eecaa10d"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"codacy-bot"}}