{"action":"created","issue":{"url":"https://api.github.com/repos/jacekkopecky/living-meta-analysis/issues/4","repository_url":"https://api.github.com/repos/jacekkopecky/living-meta-analysis","labels_url":"https://api.github.com/repos/jacekkopecky/living-meta-analysis/issues/4/labels{/name}","comments_url":"https://api.github.com/repos/jacekkopecky/living-meta-analysis/issues/4/comments","events_url":"https://api.github.com/repos/jacekkopecky/living-meta-analysis/issues/4/events","html_url":"https://github.com/jacekkopecky/living-meta-analysis/issues/4","id":180847700,"number":4,"title":"rate-limiting for the API","user":{"login":"jacekkopecky","id":807315,"avatar_url":"https://avatars.githubusercontent.com/u/807315?v=3","gravatar_id":"","url":"https://api.github.com/users/jacekkopecky","html_url":"https://github.com/jacekkopecky","followers_url":"https://api.github.com/users/jacekkopecky/followers","following_url":"https://api.github.com/users/jacekkopecky/following{/other_user}","gists_url":"https://api.github.com/users/jacekkopecky/gists{/gist_id}","starred_url":"https://api.github.com/users/jacekkopecky/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacekkopecky/subscriptions","organizations_url":"https://api.github.com/users/jacekkopecky/orgs","repos_url":"https://api.github.com/users/jacekkopecky/repos","events_url":"https://api.github.com/users/jacekkopecky/events{/privacy}","received_events_url":"https://api.github.com/users/jacekkopecky/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/jacekkopecky/living-meta-analysis/labels/security","name":"security","color":"ff0000"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/jacekkopecky/living-meta-analysis/milestones/1","html_url":"https://github.com/jacekkopecky/living-meta-analysis/milestones/first%20release","labels_url":"https://api.github.com/repos/jacekkopecky/living-meta-analysis/milestones/1/labels","id":2046331,"number":1,"title":"first release","description":"everything linked must be completed before we can show LiMA to select few external parties (e.g. conference organizers)","creator":{"login":"jacekkopecky","id":807315,"avatar_url":"https://avatars.githubusercontent.com/u/807315?v=3","gravatar_id":"","url":"https://api.github.com/users/jacekkopecky","html_url":"https://github.com/jacekkopecky","followers_url":"https://api.github.com/users/jacekkopecky/followers","following_url":"https://api.github.com/users/jacekkopecky/following{/other_user}","gists_url":"https://api.github.com/users/jacekkopecky/gists{/gist_id}","starred_url":"https://api.github.com/users/jacekkopecky/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacekkopecky/subscriptions","organizations_url":"https://api.github.com/users/jacekkopecky/orgs","repos_url":"https://api.github.com/users/jacekkopecky/repos","events_url":"https://api.github.com/users/jacekkopecky/events{/privacy}","received_events_url":"https://api.github.com/users/jacekkopecky/received_events","type":"User","site_admin":false},"open_issues":6,"closed_issues":0,"state":"open","created_at":"2016-10-04T09:48:28Z","updated_at":"2016-10-11T08:58:25Z","due_on":"2016-12-13T00:00:00Z","closed_at":null},"comments":1,"created_at":"2016-10-04T09:41:14Z","updated_at":"2016-10-17T18:05:58Z","closed_at":null,"body":"there is no rate-limiting for the API, which may translate into an issue with google storage quotas\r\n"},"comment":{"url":"https://api.github.com/repos/jacekkopecky/living-meta-analysis/issues/comments/254285757","html_url":"https://github.com/jacekkopecky/living-meta-analysis/issues/4#issuecomment-254285757","issue_url":"https://api.github.com/repos/jacekkopecky/living-meta-analysis/issues/4","id":254285757,"user":{"login":"Jnnybrrn","id":9538578,"avatar_url":"https://avatars.githubusercontent.com/u/9538578?v=3","gravatar_id":"","url":"https://api.github.com/users/Jnnybrrn","html_url":"https://github.com/Jnnybrrn","followers_url":"https://api.github.com/users/Jnnybrrn/followers","following_url":"https://api.github.com/users/Jnnybrrn/following{/other_user}","gists_url":"https://api.github.com/users/Jnnybrrn/gists{/gist_id}","starred_url":"https://api.github.com/users/Jnnybrrn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Jnnybrrn/subscriptions","organizations_url":"https://api.github.com/users/Jnnybrrn/orgs","repos_url":"https://api.github.com/users/Jnnybrrn/repos","events_url":"https://api.github.com/users/Jnnybrrn/events{/privacy}","received_events_url":"https://api.github.com/users/Jnnybrrn/received_events","type":"User","site_admin":false},"created_at":"2016-10-17T18:05:57Z","updated_at":"2016-10-17T18:05:57Z","body":"Reading a little into this, found some interesting links.\r\n\r\n```https://code.google.com/p/googleappengine/issues/detail?id=6733```\r\n\r\n.. is an open issue asking for a google style over-arching solution to this... And the response is non existent.\r\n\r\nWe will be able to set usage quota's to prevent the billing going thru the roof, but that will have the problem of - Get DoS'd everyone else for the <time period> gets a 500 - out of quota.\r\n\r\nSo the DoS succeeds, we just are not billed something rotten for it.\r\n\r\nGoogle provide some means of DoS prevention but it seems up to 1000 IP's may be blacklisted... Not the most helpful? ```https://cloud.google.com/appengine/docs/python/config/dos``` Furthermore, unless I'm blind there doesn't even seem to be a nodejs version of this functionality, so we might not even be able to use it.\r\n\r\nI found an article which talks about how to use another google service (memcache, w/ its free quota's) to keep a counter on how many requests per IP and then build the pages to simply deny the request if this exceeds some limit.. In other words, roll our own rate-limiting. http://blog.simonwillison.net/post/57956846132/ratelimitcache\r\n\r\nThis is unfortunate, maybe there is a nodejs framework that's r2g for this purpose. Will continue to dig.\r\n"}}
{"actor":{"display_login":"Jnnybrrn"}}