<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/4.1.0/rx.all.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
</head>
<body>
<p>Open your browser console to prove this stream diagram</p>
<code>
refreshClickStream: ----------o--------o----><br/>
_____requestStream: -r--------r--------r----><br/>
____responseStream: ----R--------R--------R-><br/>
_close1ClickStream: -------o----------------><br/>
_suggestion1Stream: -N--s--s--N--s-----N--s-><br/>
_close2ClickStream: ----------------o-------><br/>
_suggestion2Stream: -N--q-----N--q--q--N--q-><br/>
</code>
<br/>
<button class="refresh">refresh</button>
<button class="close1">close 1</button>
<button class="close2">close 2</button>
</body>
<script src="script.js"></script>
</html>
// 3 button click event streams
var refreshButton = document.querySelector('.refresh');
var close1Button = document.querySelector('.close1');
var close2Button = document.querySelector('.close2');
var refreshClickStream = Rx.Observable.fromEvent(refreshButton, 'click');
var close1ClickStream = Rx.Observable.fromEvent(close1Button, 'click');
var close2ClickStream = Rx.Observable.fromEvent(close2Button, 'click');
// requestStream: stream of strings
// Each string is a URL
var requestStream = refreshClickStream.startWith('any old click')
.map(() => {
return 'response.json';
});
// responseStream: stream of JSON responses
var responseStream = requestStream
// We use flatMap instead of map to prevent this stream being a metastream - i.e. stream of streams
.flatMap(requestUrl => {
// Convert promise to stream
return Rx.Observable.fromPromise($.getJSON(requestUrl));
}).publish().refCount(); // Make responseStream a hot observable, prevents multiple API requests
// see https://gist.github.com/staltz/868e7e9bc2a7b8c1f754#gistcomment-1255116
// suggestion1Stream: stream of individual users
// A combineLatest stream has access to the latest emits on close1ClickStream and responseStream
// The combineLatest stream means that whenever close1 is clicked, the last response is available thus providing a cache
var suggestion1Stream = close1ClickStream.startWith('any old click')
.combineLatest(responseStream, (click, listUsers) => {
return listUsers[Math.floor(Math.random() * listUsers.length)];
}
// Merge with a null stream that emits whenever refresh is clicked
).merge(
refreshClickStream.map(() => {
return null;
})
).startWith(null);
// DRY! What's that?
var suggestion2Stream = close2ClickStream.startWith('any old click')
.combineLatest(responseStream, (click, listUsers) => {
return listUsers[Math.floor(Math.random() * listUsers.length)];
}).merge(
refreshClickStream.map(() => {
return null;
})
).startWith(null);
// Console logging so we can see whats going on
refreshClickStream.subscribe(x => console.log("o"));
requestStream.subscribe(x => console.log("r"));
responseStream.subscribe(x => console.log("R"));
close1ClickStream.subscribe(x => console.log("o"));
suggestion1Stream.subscribe(user => {
if (user === null) {
console.log("N");
} else {
console.log("s", user.login);
}
});
close2ClickStream.subscribe(x => console.log("o"));
suggestion2Stream.subscribe(user => {
if (user === null) {
console.log("N");
} else {
console.log("q", user.login);
}
});
Thanks to Andre Staltz - See https://gist.github.com/staltz/868e7e9bc2a7b8c1f754
Demos RxJS (Reactive Extensions for JavaScript)
Imagine a feed is a data stream like click events are. You can listen to that stream and react accordingly.
Welcome to Reactive Programming.
A stream is a sequence of ongoing events ordered in time.
A stream emits - a value OR an error OR a completed signal.
We can define an observer function to handle each scenario.
.subscribe(nextFunc, errorFunc, completedFunc) - Like promises but for streams!
We can .subscribe (listen) to any stream (observable)
Streams are immutable.
The stream diagram for this demo is ...
refreshClickStream: ----------o--------o---->
requestStream: -r--------r--------r---->
responseStream: ----R--------R--------R->
close1ClickStream: -------o---------------->
suggestion1Stream: -N--s--s--N--s-----N--s->
close2ClickStream: ----------------o------->
suggestion2Stream: -N--q-----N--q--q--N--q->
See console logging
[
{
"login": "codahale",
"id": 207,
"avatar_url": "https://avatars.githubusercontent.com/u/207?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/codahale",
"html_url": "https://github.com/codahale",
"followers_url": "https://api.github.com/users/codahale/followers",
"following_url": "https://api.github.com/users/codahale/following{/other_user}",
"gists_url": "https://api.github.com/users/codahale/gists{/gist_id}",
"starred_url": "https://api.github.com/users/codahale/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/codahale/subscriptions",
"organizations_url": "https://api.github.com/users/codahale/orgs",
"repos_url": "https://api.github.com/users/codahale/repos",
"events_url": "https://api.github.com/users/codahale/events{/privacy}",
"received_events_url": "https://api.github.com/users/codahale/received_events",
"type": "User",
"site_admin": false
},
{
"login": "zackchandler",
"id": 208,
"avatar_url": "https://avatars.githubusercontent.com/u/208?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/zackchandler",
"html_url": "https://github.com/zackchandler",
"followers_url": "https://api.github.com/users/zackchandler/followers",
"following_url": "https://api.github.com/users/zackchandler/following{/other_user}",
"gists_url": "https://api.github.com/users/zackchandler/gists{/gist_id}",
"starred_url": "https://api.github.com/users/zackchandler/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/zackchandler/subscriptions",
"organizations_url": "https://api.github.com/users/zackchandler/orgs",
"repos_url": "https://api.github.com/users/zackchandler/repos",
"events_url": "https://api.github.com/users/zackchandler/events{/privacy}",
"received_events_url": "https://api.github.com/users/zackchandler/received_events",
"type": "User",
"site_admin": false
},
{
"login": "jakehow",
"id": 209,
"avatar_url": "https://avatars.githubusercontent.com/u/209?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/jakehow",
"html_url": "https://github.com/jakehow",
"followers_url": "https://api.github.com/users/jakehow/followers",
"following_url": "https://api.github.com/users/jakehow/following{/other_user}",
"gists_url": "https://api.github.com/users/jakehow/gists{/gist_id}",
"starred_url": "https://api.github.com/users/jakehow/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/jakehow/subscriptions",
"organizations_url": "https://api.github.com/users/jakehow/orgs",
"repos_url": "https://api.github.com/users/jakehow/repos",
"events_url": "https://api.github.com/users/jakehow/events{/privacy}",
"received_events_url": "https://api.github.com/users/jakehow/received_events",
"type": "User",
"site_admin": false
},
{
"login": "evan",
"id": 210,
"avatar_url": "https://avatars.githubusercontent.com/u/210?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/evan",
"html_url": "https://github.com/evan",
"followers_url": "https://api.github.com/users/evan/followers",
"following_url": "https://api.github.com/users/evan/following{/other_user}",
"gists_url": "https://api.github.com/users/evan/gists{/gist_id}",
"starred_url": "https://api.github.com/users/evan/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/evan/subscriptions",
"organizations_url": "https://api.github.com/users/evan/orgs",
"repos_url": "https://api.github.com/users/evan/repos",
"events_url": "https://api.github.com/users/evan/events{/privacy}",
"received_events_url": "https://api.github.com/users/evan/received_events",
"type": "User",
"site_admin": false
},
{
"login": "olleolleolle",
"id": 211,
"avatar_url": "https://avatars.githubusercontent.com/u/211?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/olleolleolle",
"html_url": "https://github.com/olleolleolle",
"followers_url": "https://api.github.com/users/olleolleolle/followers",
"following_url": "https://api.github.com/users/olleolleolle/following{/other_user}",
"gists_url": "https://api.github.com/users/olleolleolle/gists{/gist_id}",
"starred_url": "https://api.github.com/users/olleolleolle/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/olleolleolle/subscriptions",
"organizations_url": "https://api.github.com/users/olleolleolle/orgs",
"repos_url": "https://api.github.com/users/olleolleolle/repos",
"events_url": "https://api.github.com/users/olleolleolle/events{/privacy}",
"received_events_url": "https://api.github.com/users/olleolleolle/received_events",
"type": "User",
"site_admin": false
},
{
"login": "chrismcg",
"id": 212,
"avatar_url": "https://avatars.githubusercontent.com/u/212?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/chrismcg",
"html_url": "https://github.com/chrismcg",
"followers_url": "https://api.github.com/users/chrismcg/followers",
"following_url": "https://api.github.com/users/chrismcg/following{/other_user}",
"gists_url": "https://api.github.com/users/chrismcg/gists{/gist_id}",
"starred_url": "https://api.github.com/users/chrismcg/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/chrismcg/subscriptions",
"organizations_url": "https://api.github.com/users/chrismcg/orgs",
"repos_url": "https://api.github.com/users/chrismcg/repos",
"events_url": "https://api.github.com/users/chrismcg/events{/privacy}",
"received_events_url": "https://api.github.com/users/chrismcg/received_events",
"type": "User",
"site_admin": false
},
{
"login": "chuyeow",
"id": 213,
"avatar_url": "https://avatars.githubusercontent.com/u/213?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/chuyeow",
"html_url": "https://github.com/chuyeow",
"followers_url": "https://api.github.com/users/chuyeow/followers",
"following_url": "https://api.github.com/users/chuyeow/following{/other_user}",
"gists_url": "https://api.github.com/users/chuyeow/gists{/gist_id}",
"starred_url": "https://api.github.com/users/chuyeow/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/chuyeow/subscriptions",
"organizations_url": "https://api.github.com/users/chuyeow/orgs",
"repos_url": "https://api.github.com/users/chuyeow/repos",
"events_url": "https://api.github.com/users/chuyeow/events{/privacy}",
"received_events_url": "https://api.github.com/users/chuyeow/received_events",
"type": "User",
"site_admin": false
},
{
"login": "mloughran",
"id": 214,
"avatar_url": "https://avatars.githubusercontent.com/u/214?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/mloughran",
"html_url": "https://github.com/mloughran",
"followers_url": "https://api.github.com/users/mloughran/followers",
"following_url": "https://api.github.com/users/mloughran/following{/other_user}",
"gists_url": "https://api.github.com/users/mloughran/gists{/gist_id}",
"starred_url": "https://api.github.com/users/mloughran/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/mloughran/subscriptions",
"organizations_url": "https://api.github.com/users/mloughran/orgs",
"repos_url": "https://api.github.com/users/mloughran/repos",
"events_url": "https://api.github.com/users/mloughran/events{/privacy}",
"received_events_url": "https://api.github.com/users/mloughran/received_events",
"type": "User",
"site_admin": false
},
{
"login": "matthewford",
"id": 215,
"avatar_url": "https://avatars.githubusercontent.com/u/215?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/matthewford",
"html_url": "https://github.com/matthewford",
"followers_url": "https://api.github.com/users/matthewford/followers",
"following_url": "https://api.github.com/users/matthewford/following{/other_user}",
"gists_url": "https://api.github.com/users/matthewford/gists{/gist_id}",
"starred_url": "https://api.github.com/users/matthewford/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/matthewford/subscriptions",
"organizations_url": "https://api.github.com/users/matthewford/orgs",
"repos_url": "https://api.github.com/users/matthewford/repos",
"events_url": "https://api.github.com/users/matthewford/events{/privacy}",
"received_events_url": "https://api.github.com/users/matthewford/received_events",
"type": "User",
"site_admin": false
},
{
"login": "henrik",
"id": 216,
"avatar_url": "https://avatars.githubusercontent.com/u/216?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/henrik",
"html_url": "https://github.com/henrik",
"followers_url": "https://api.github.com/users/henrik/followers",
"following_url": "https://api.github.com/users/henrik/following{/other_user}",
"gists_url": "https://api.github.com/users/henrik/gists{/gist_id}",
"starred_url": "https://api.github.com/users/henrik/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/henrik/subscriptions",
"organizations_url": "https://api.github.com/users/henrik/orgs",
"repos_url": "https://api.github.com/users/henrik/repos",
"events_url": "https://api.github.com/users/henrik/events{/privacy}",
"received_events_url": "https://api.github.com/users/henrik/received_events",
"type": "User",
"site_admin": false
},
{
"login": "tkersey",
"id": 217,
"avatar_url": "https://avatars.githubusercontent.com/u/217?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/tkersey",
"html_url": "https://github.com/tkersey",
"followers_url": "https://api.github.com/users/tkersey/followers",
"following_url": "https://api.github.com/users/tkersey/following{/other_user}",
"gists_url": "https://api.github.com/users/tkersey/gists{/gist_id}",
"starred_url": "https://api.github.com/users/tkersey/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/tkersey/subscriptions",
"organizations_url": "https://api.github.com/users/tkersey/orgs",
"repos_url": "https://api.github.com/users/tkersey/repos",
"events_url": "https://api.github.com/users/tkersey/events{/privacy}",
"received_events_url": "https://api.github.com/users/tkersey/received_events",
"type": "User",
"site_admin": false
},
{
"login": "acf",
"id": 218,
"avatar_url": "https://avatars.githubusercontent.com/u/218?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/acf",
"html_url": "https://github.com/acf",
"followers_url": "https://api.github.com/users/acf/followers",
"following_url": "https://api.github.com/users/acf/following{/other_user}",
"gists_url": "https://api.github.com/users/acf/gists{/gist_id}",
"starred_url": "https://api.github.com/users/acf/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/acf/subscriptions",
"organizations_url": "https://api.github.com/users/acf/orgs",
"repos_url": "https://api.github.com/users/acf/repos",
"events_url": "https://api.github.com/users/acf/events{/privacy}",
"received_events_url": "https://api.github.com/users/acf/received_events",
"type": "User",
"site_admin": false
},
{
"login": "dan",
"id": 219,
"avatar_url": "https://avatars.githubusercontent.com/u/219?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/dan",
"html_url": "https://github.com/dan",
"followers_url": "https://api.github.com/users/dan/followers",
"following_url": "https://api.github.com/users/dan/following{/other_user}",
"gists_url": "https://api.github.com/users/dan/gists{/gist_id}",
"starred_url": "https://api.github.com/users/dan/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/dan/subscriptions",
"organizations_url": "https://api.github.com/users/dan/orgs",
"repos_url": "https://api.github.com/users/dan/repos",
"events_url": "https://api.github.com/users/dan/events{/privacy}",
"received_events_url": "https://api.github.com/users/dan/received_events",
"type": "User",
"site_admin": false
},
{
"login": "seebq",
"id": 220,
"avatar_url": "https://avatars.githubusercontent.com/u/220?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/seebq",
"html_url": "https://github.com/seebq",
"followers_url": "https://api.github.com/users/seebq/followers",
"following_url": "https://api.github.com/users/seebq/following{/other_user}",
"gists_url": "https://api.github.com/users/seebq/gists{/gist_id}",
"starred_url": "https://api.github.com/users/seebq/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/seebq/subscriptions",
"organizations_url": "https://api.github.com/users/seebq/orgs",
"repos_url": "https://api.github.com/users/seebq/repos",
"events_url": "https://api.github.com/users/seebq/events{/privacy}",
"received_events_url": "https://api.github.com/users/seebq/received_events",
"type": "User",
"site_admin": false
},
{
"login": "delynn",
"id": 221,
"avatar_url": "https://avatars.githubusercontent.com/u/221?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/delynn",
"html_url": "https://github.com/delynn",
"followers_url": "https://api.github.com/users/delynn/followers",
"following_url": "https://api.github.com/users/delynn/following{/other_user}",
"gists_url": "https://api.github.com/users/delynn/gists{/gist_id}",
"starred_url": "https://api.github.com/users/delynn/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/delynn/subscriptions",
"organizations_url": "https://api.github.com/users/delynn/orgs",
"repos_url": "https://api.github.com/users/delynn/repos",
"events_url": "https://api.github.com/users/delynn/events{/privacy}",
"received_events_url": "https://api.github.com/users/delynn/received_events",
"type": "User",
"site_admin": false
},
{
"login": "spicycode",
"id": 222,
"avatar_url": "https://avatars.githubusercontent.com/u/222?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/spicycode",
"html_url": "https://github.com/spicycode",
"followers_url": "https://api.github.com/users/spicycode/followers",
"following_url": "https://api.github.com/users/spicycode/following{/other_user}",
"gists_url": "https://api.github.com/users/spicycode/gists{/gist_id}",
"starred_url": "https://api.github.com/users/spicycode/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/spicycode/subscriptions",
"organizations_url": "https://api.github.com/users/spicycode/orgs",
"repos_url": "https://api.github.com/users/spicycode/repos",
"events_url": "https://api.github.com/users/spicycode/events{/privacy}",
"received_events_url": "https://api.github.com/users/spicycode/received_events",
"type": "User",
"site_admin": true
},
{
"login": "ntalbott",
"id": 223,
"avatar_url": "https://avatars.githubusercontent.com/u/223?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/ntalbott",
"html_url": "https://github.com/ntalbott",
"followers_url": "https://api.github.com/users/ntalbott/followers",
"following_url": "https://api.github.com/users/ntalbott/following{/other_user}",
"gists_url": "https://api.github.com/users/ntalbott/gists{/gist_id}",
"starred_url": "https://api.github.com/users/ntalbott/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/ntalbott/subscriptions",
"organizations_url": "https://api.github.com/users/ntalbott/orgs",
"repos_url": "https://api.github.com/users/ntalbott/repos",
"events_url": "https://api.github.com/users/ntalbott/events{/privacy}",
"received_events_url": "https://api.github.com/users/ntalbott/received_events",
"type": "User",
"site_admin": false
},
{
"login": "rdempsey",
"id": 224,
"avatar_url": "https://avatars.githubusercontent.com/u/224?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/rdempsey",
"html_url": "https://github.com/rdempsey",
"followers_url": "https://api.github.com/users/rdempsey/followers",
"following_url": "https://api.github.com/users/rdempsey/following{/other_user}",
"gists_url": "https://api.github.com/users/rdempsey/gists{/gist_id}",
"starred_url": "https://api.github.com/users/rdempsey/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/rdempsey/subscriptions",
"organizations_url": "https://api.github.com/users/rdempsey/orgs",
"repos_url": "https://api.github.com/users/rdempsey/repos",
"events_url": "https://api.github.com/users/rdempsey/events{/privacy}",
"received_events_url": "https://api.github.com/users/rdempsey/received_events",
"type": "User",
"site_admin": false
},
{
"login": "mjankowski",
"id": 225,
"avatar_url": "https://avatars.githubusercontent.com/u/225?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/mjankowski",
"html_url": "https://github.com/mjankowski",
"followers_url": "https://api.github.com/users/mjankowski/followers",
"following_url": "https://api.github.com/users/mjankowski/following{/other_user}",
"gists_url": "https://api.github.com/users/mjankowski/gists{/gist_id}",
"starred_url": "https://api.github.com/users/mjankowski/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/mjankowski/subscriptions",
"organizations_url": "https://api.github.com/users/mjankowski/orgs",
"repos_url": "https://api.github.com/users/mjankowski/repos",
"events_url": "https://api.github.com/users/mjankowski/events{/privacy}",
"received_events_url": "https://api.github.com/users/mjankowski/received_events",
"type": "User",
"site_admin": false
},
{
"login": "danahern",
"id": 226,
"avatar_url": "https://avatars.githubusercontent.com/u/226?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/danahern",
"html_url": "https://github.com/danahern",
"followers_url": "https://api.github.com/users/danahern/followers",
"following_url": "https://api.github.com/users/danahern/following{/other_user}",
"gists_url": "https://api.github.com/users/danahern/gists{/gist_id}",
"starred_url": "https://api.github.com/users/danahern/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/danahern/subscriptions",
"organizations_url": "https://api.github.com/users/danahern/orgs",
"repos_url": "https://api.github.com/users/danahern/repos",
"events_url": "https://api.github.com/users/danahern/events{/privacy}",
"received_events_url": "https://api.github.com/users/danahern/received_events",
"type": "User",
"site_admin": false
},
{
"login": "dctanner",
"id": 227,
"avatar_url": "https://avatars.githubusercontent.com/u/227?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/dctanner",
"html_url": "https://github.com/dctanner",
"followers_url": "https://api.github.com/users/dctanner/followers",
"following_url": "https://api.github.com/users/dctanner/following{/other_user}",
"gists_url": "https://api.github.com/users/dctanner/gists{/gist_id}",
"starred_url": "https://api.github.com/users/dctanner/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/dctanner/subscriptions",
"organizations_url": "https://api.github.com/users/dctanner/orgs",
"repos_url": "https://api.github.com/users/dctanner/repos",
"events_url": "https://api.github.com/users/dctanner/events{/privacy}",
"received_events_url": "https://api.github.com/users/dctanner/received_events",
"type": "User",
"site_admin": false
},
{
"login": "alexvollmer",
"id": 228,
"avatar_url": "https://avatars.githubusercontent.com/u/228?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/alexvollmer",
"html_url": "https://github.com/alexvollmer",
"followers_url": "https://api.github.com/users/alexvollmer/followers",
"following_url": "https://api.github.com/users/alexvollmer/following{/other_user}",
"gists_url": "https://api.github.com/users/alexvollmer/gists{/gist_id}",
"starred_url": "https://api.github.com/users/alexvollmer/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/alexvollmer/subscriptions",
"organizations_url": "https://api.github.com/users/alexvollmer/orgs",
"repos_url": "https://api.github.com/users/alexvollmer/repos",
"events_url": "https://api.github.com/users/alexvollmer/events{/privacy}",
"received_events_url": "https://api.github.com/users/alexvollmer/received_events",
"type": "User",
"site_admin": false
},
{
"login": "RailsAddict",
"id": 229,
"avatar_url": "https://avatars.githubusercontent.com/u/229?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/RailsAddict",
"html_url": "https://github.com/RailsAddict",
"followers_url": "https://api.github.com/users/RailsAddict/followers",
"following_url": "https://api.github.com/users/RailsAddict/following{/other_user}",
"gists_url": "https://api.github.com/users/RailsAddict/gists{/gist_id}",
"starred_url": "https://api.github.com/users/RailsAddict/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/RailsAddict/subscriptions",
"organizations_url": "https://api.github.com/users/RailsAddict/orgs",
"repos_url": "https://api.github.com/users/RailsAddict/repos",
"events_url": "https://api.github.com/users/RailsAddict/events{/privacy}",
"received_events_url": "https://api.github.com/users/RailsAddict/received_events",
"type": "User",
"site_admin": false
},
{
"login": "scharfie",
"id": 230,
"avatar_url": "https://avatars.githubusercontent.com/u/230?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/scharfie",
"html_url": "https://github.com/scharfie",
"followers_url": "https://api.github.com/users/scharfie/followers",
"following_url": "https://api.github.com/users/scharfie/following{/other_user}",
"gists_url": "https://api.github.com/users/scharfie/gists{/gist_id}",
"starred_url": "https://api.github.com/users/scharfie/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/scharfie/subscriptions",
"organizations_url": "https://api.github.com/users/scharfie/orgs",
"repos_url": "https://api.github.com/users/scharfie/repos",
"events_url": "https://api.github.com/users/scharfie/events{/privacy}",
"received_events_url": "https://api.github.com/users/scharfie/received_events",
"type": "User",
"site_admin": false
},
{
"login": "jhardy-deleteme",
"id": 231,
"avatar_url": "https://avatars.githubusercontent.com/u/231?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/jhardy-deleteme",
"html_url": "https://github.com/jhardy-deleteme",
"followers_url": "https://api.github.com/users/jhardy-deleteme/followers",
"following_url": "https://api.github.com/users/jhardy-deleteme/following{/other_user}",
"gists_url": "https://api.github.com/users/jhardy-deleteme/gists{/gist_id}",
"starred_url": "https://api.github.com/users/jhardy-deleteme/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/jhardy-deleteme/subscriptions",
"organizations_url": "https://api.github.com/users/jhardy-deleteme/orgs",
"repos_url": "https://api.github.com/users/jhardy-deleteme/repos",
"events_url": "https://api.github.com/users/jhardy-deleteme/events{/privacy}",
"received_events_url": "https://api.github.com/users/jhardy-deleteme/received_events",
"type": "User",
"site_admin": false
},
{
"login": "daikini",
"id": 232,
"avatar_url": "https://avatars.githubusercontent.com/u/232?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/daikini",
"html_url": "https://github.com/daikini",
"followers_url": "https://api.github.com/users/daikini/followers",
"following_url": "https://api.github.com/users/daikini/following{/other_user}",
"gists_url": "https://api.github.com/users/daikini/gists{/gist_id}",
"starred_url": "https://api.github.com/users/daikini/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/daikini/subscriptions",
"organizations_url": "https://api.github.com/users/daikini/orgs",
"repos_url": "https://api.github.com/users/daikini/repos",
"events_url": "https://api.github.com/users/daikini/events{/privacy}",
"received_events_url": "https://api.github.com/users/daikini/received_events",
"type": "User",
"site_admin": false
},
{
"login": "tdreyno",
"id": 233,
"avatar_url": "https://avatars.githubusercontent.com/u/233?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/tdreyno",
"html_url": "https://github.com/tdreyno",
"followers_url": "https://api.github.com/users/tdreyno/followers",
"following_url": "https://api.github.com/users/tdreyno/following{/other_user}",
"gists_url": "https://api.github.com/users/tdreyno/gists{/gist_id}",
"starred_url": "https://api.github.com/users/tdreyno/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/tdreyno/subscriptions",
"organizations_url": "https://api.github.com/users/tdreyno/orgs",
"repos_url": "https://api.github.com/users/tdreyno/repos",
"events_url": "https://api.github.com/users/tdreyno/events{/privacy}",
"received_events_url": "https://api.github.com/users/tdreyno/received_events",
"type": "User",
"site_admin": false
},
{
"login": "mysmallidea",
"id": 234,
"avatar_url": "https://avatars.githubusercontent.com/u/234?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/mysmallidea",
"html_url": "https://github.com/mysmallidea",
"followers_url": "https://api.github.com/users/mysmallidea/followers",
"following_url": "https://api.github.com/users/mysmallidea/following{/other_user}",
"gists_url": "https://api.github.com/users/mysmallidea/gists{/gist_id}",
"starred_url": "https://api.github.com/users/mysmallidea/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/mysmallidea/subscriptions",
"organizations_url": "https://api.github.com/users/mysmallidea/orgs",
"repos_url": "https://api.github.com/users/mysmallidea/repos",
"events_url": "https://api.github.com/users/mysmallidea/events{/privacy}",
"received_events_url": "https://api.github.com/users/mysmallidea/received_events",
"type": "User",
"site_admin": false
},
{
"login": "jnunemaker",
"id": 235,
"avatar_url": "https://avatars.githubusercontent.com/u/235?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/jnunemaker",
"html_url": "https://github.com/jnunemaker",
"followers_url": "https://api.github.com/users/jnunemaker/followers",
"following_url": "https://api.github.com/users/jnunemaker/following{/other_user}",
"gists_url": "https://api.github.com/users/jnunemaker/gists{/gist_id}",
"starred_url": "https://api.github.com/users/jnunemaker/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/jnunemaker/subscriptions",
"organizations_url": "https://api.github.com/users/jnunemaker/orgs",
"repos_url": "https://api.github.com/users/jnunemaker/repos",
"events_url": "https://api.github.com/users/jnunemaker/events{/privacy}",
"received_events_url": "https://api.github.com/users/jnunemaker/received_events",
"type": "User",
"site_admin": true
},
{
"login": "shayarnett",
"id": 236,
"avatar_url": "https://avatars.githubusercontent.com/u/236?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/shayarnett",
"html_url": "https://github.com/shayarnett",
"followers_url": "https://api.github.com/users/shayarnett/followers",
"following_url": "https://api.github.com/users/shayarnett/following{/other_user}",
"gists_url": "https://api.github.com/users/shayarnett/gists{/gist_id}",
"starred_url": "https://api.github.com/users/shayarnett/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/shayarnett/subscriptions",
"organizations_url": "https://api.github.com/users/shayarnett/orgs",
"repos_url": "https://api.github.com/users/shayarnett/repos",
"events_url": "https://api.github.com/users/shayarnett/events{/privacy}",
"received_events_url": "https://api.github.com/users/shayarnett/received_events",
"type": "User",
"site_admin": false
}
]