leadlight 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. data/Gemfile.lock +20 -18
  2. data/default.gems +1 -1
  3. data/leadlight.gemspec +24 -4
  4. data/lib/leadlight.rb +4 -5
  5. data/lib/leadlight/connection_builder.rb +29 -0
  6. data/lib/leadlight/errors.rb +11 -5
  7. data/lib/leadlight/hyperlinkable.rb +31 -10
  8. data/lib/leadlight/lib_ext.rb +3 -0
  9. data/lib/leadlight/lib_ext/faraday/README +6 -0
  10. data/lib/leadlight/lib_ext/faraday/adapter.rb +7 -0
  11. data/lib/leadlight/lib_ext/faraday/builder.rb +47 -0
  12. data/lib/leadlight/lib_ext/faraday/connection.rb +40 -0
  13. data/lib/leadlight/lib_ext/faraday/middleware.rb +7 -0
  14. data/lib/leadlight/link.rb +91 -4
  15. data/lib/leadlight/link_template.rb +13 -5
  16. data/lib/leadlight/null_link.rb +21 -0
  17. data/lib/leadlight/param_hash.rb +42 -0
  18. data/lib/leadlight/representation.rb +23 -3
  19. data/lib/leadlight/request.rb +42 -10
  20. data/lib/leadlight/service.rb +11 -9
  21. data/lib/leadlight/service_class_methods.rb +11 -3
  22. data/lib/leadlight/tint_helper.rb +32 -2
  23. data/spec/cassettes/Leadlight/authorized_GitHub_example/_user/has_the_expected_content.yml +72 -54
  24. data/spec/cassettes/Leadlight/authorized_GitHub_example/_user/indicates_the_expected_oath_scopes.yml +73 -55
  25. data/spec/cassettes/Leadlight/authorized_GitHub_example/adding_and_removing_team_members.yml +353 -265
  26. data/spec/cassettes/Leadlight/authorized_GitHub_example/adding_and_removing_teams.yml +75 -175
  27. data/spec/cassettes/Leadlight/authorized_GitHub_example/team_list/should_have_a_link_back_to_the_org.yml +196 -0
  28. data/spec/cassettes/Leadlight/authorized_GitHub_example/test_team/.yml +152 -108
  29. data/spec/cassettes/Leadlight/authorized_GitHub_example/test_team/has_a_root_link.yml +197 -0
  30. data/spec/cassettes/Leadlight/basic_GitHub_example/_root/.yml +15 -43
  31. data/spec/cassettes/Leadlight/basic_GitHub_example/_root/__location__/.yml +15 -43
  32. data/spec/cassettes/Leadlight/basic_GitHub_example/_root/should_be_a_204_no_content.yml +15 -43
  33. data/spec/cassettes/Leadlight/tinted_GitHub_example/_root/.yml +15 -43
  34. data/spec/cassettes/Leadlight/tinted_GitHub_example/_root/__location__/.yml +15 -43
  35. data/spec/cassettes/Leadlight/tinted_GitHub_example/_root/should_be_a_204_no_content.yml +15 -43
  36. data/spec/cassettes/Leadlight/tinted_GitHub_example/_user/has_the_expected_content.yml +35 -90
  37. data/spec/cassettes/Leadlight/tinted_GitHub_example/bad_links/enables_custom_error_matching.yml +25 -17
  38. data/spec/cassettes/Leadlight/tinted_GitHub_example/bad_links/should_raise_ResourceNotFound.yml +26 -90
  39. data/spec/cassettes/Leadlight/tinted_GitHub_example/user_followers/.yml +57 -140
  40. data/spec/cassettes/Leadlight/tinted_GitHub_example/user_followers/should_be_able_to_follow_next_link.yml +79 -192
  41. data/spec/cassettes/Leadlight/tinted_GitHub_example/user_followers/should_be_enumerable.yml +279 -350
  42. data/spec/cassettes/Leadlight/tinted_GitHub_example/user_followers/should_be_enumerable_over_page_boundaries.yml +98 -243
  43. data/spec/cassettes/Leadlight/tinted_GitHub_example/user_followers/should_have_next_and_last_links.yml +59 -142
  44. data/spec/cassettes/Leadlight/tinted_GitHub_example/user_link/exists.yml +15 -43
  45. data/spec/cassettes/Leadlight/tinted_GitHub_example/user_link/links_to_the_expected_URL.yml +15 -43
  46. data/spec/leadlight/hyperlinkable_spec.rb +50 -4
  47. data/spec/leadlight/link_spec.rb +70 -10
  48. data/spec/leadlight/link_template_spec.rb +20 -4
  49. data/spec/leadlight/null_link_spec.rb +14 -0
  50. data/spec/leadlight/param_hash_spec.rb +26 -0
  51. data/spec/leadlight/representation_spec.rb +36 -4
  52. data/spec/leadlight/request_spec.rb +39 -22
  53. data/spec/leadlight/service_spec.rb +14 -13
  54. data/spec/leadlight/tint_helper_spec.rb +36 -2
  55. data/spec/leadlight_spec.rb +31 -17
  56. data/spec/support/link_matchers.rb +59 -0
  57. data/spec/support/misc.rb +9 -0
  58. metadata +49 -34
@@ -3,7 +3,9 @@ http_interactions:
3
3
  - request:
4
4
  method: get
5
5
  uri: https://api.github.com/
6
- body: ''
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
7
9
  headers:
8
10
  Accept:
9
11
  - application/json, text/x-yaml, application/xml, application/xhtml+xml, text/html,
@@ -11,64 +13,33 @@ http_interactions:
11
13
  response:
12
14
  status:
13
15
  code: 204
14
- message: !!null
16
+ message:
15
17
  headers:
16
18
  server:
17
- - nginx/1.0.4
19
+ - nginx/1.0.13
18
20
  date:
19
- - Sun, 15 Jan 2012 19:38:36 GMT
21
+ - Wed, 01 Aug 2012 19:38:44 GMT
20
22
  connection:
21
23
  - close
22
24
  status:
23
25
  - 204 No Content
24
- x-ratelimit-limit:
25
- - '5000'
26
- etag:
27
- - ! '"d41d8cd98f00b204e9800998ecf8427e"'
26
+ cache-control:
27
+ - ''
28
28
  x-ratelimit-remaining:
29
- - '4986'
30
- body: ''
31
- http_version: !!null
32
- recorded_at: Sun, 15 Jan 2012 19:38:36 GMT
33
- - request:
34
- method: get
35
- uri: https://api.github.com/users/avdi
36
- body: ''
37
- headers:
38
- Accept:
39
- - application/json, text/x-yaml, application/xml, application/xhtml+xml, text/html,
40
- text/plain
41
- response:
42
- status:
43
- code: 200
44
- message: !!null
45
- headers:
46
- server:
47
- - nginx/1.0.4
48
- date:
49
- - Sun, 15 Jan 2012 19:38:36 GMT
50
- content-type:
51
- - application/json; charset=utf-8
52
- transfer-encoding:
53
- - chunked
54
- connection:
55
- - close
56
- status:
57
- - 200 OK
29
+ - '4981'
58
30
  x-ratelimit-limit:
59
31
  - '5000'
60
- etag:
61
- - ! '"4062a9125e6f2d265be5d9e2059bb611"'
62
- x-ratelimit-remaining:
63
- - '4985'
64
- body: ! '{"type":"User","public_gists":72,"created_at":"2008-02-26T19:54:34Z","email":"avdi@avdi.org","bio":null,"avatar_url":"https://secure.gravatar.com/avatar/4dea430d31b993abaf41cd9b54f8128d?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/avdi","login":"avdi","followers":181,"following":33,"html_url":"https://github.com/avdi","name":"Avdi
65
- Grimm","location":"Pennsylvania, USA","id":982,"public_repos":61,"company":"ShipRise","blog":"http://avdi.org/devblog/","hireable":false,"gravatar_id":"4dea430d31b993abaf41cd9b54f8128d"}'
66
- http_version: !!null
67
- recorded_at: Sun, 15 Jan 2012 19:38:36 GMT
32
+ body:
33
+ encoding: US-ASCII
34
+ string: ''
35
+ http_version:
36
+ recorded_at: Wed, 01 Aug 2012 19:38:34 GMT
68
37
  - request:
69
38
  method: get
70
- uri: https://api.github.com/users/avdi/followers
71
- body: ''
39
+ uri: https://api.github.com/users/avdi
40
+ body:
41
+ encoding: US-ASCII
42
+ string: ''
72
43
  headers:
73
44
  Accept:
74
45
  - application/json, text/x-yaml, application/xml, application/xhtml+xml, text/html,
@@ -76,12 +47,12 @@ http_interactions:
76
47
  response:
77
48
  status:
78
49
  code: 200
79
- message: !!null
50
+ message:
80
51
  headers:
81
52
  server:
82
- - nginx/1.0.4
53
+ - nginx/1.0.13
83
54
  date:
84
- - Sun, 15 Jan 2012 19:38:36 GMT
55
+ - Wed, 01 Aug 2012 19:38:46 GMT
85
56
  content-type:
86
57
  - application/json; charset=utf-8
87
58
  transfer-encoding:
@@ -90,106 +61,44 @@ http_interactions:
90
61
  - close
91
62
  status:
92
63
  - 200 OK
93
- x-ratelimit-limit:
94
- - '5000'
95
- etag:
96
- - ! '"eb01c45aa06961b3a983448c80d7ddfe"'
97
- link:
98
- - <https://api.github.com/users/avdi/followers?page=2>; rel="next", <https://api.github.com/users/avdi/followers?page=7>;
99
- rel="last"
100
- x-ratelimit-remaining:
101
- - '4984'
102
- body: ! '[{"url":"https://api.github.com/users/cypher","login":"cypher","gravatar_id":"0176d9564601b43d75aff59f2cceed88","id":978,"avatar_url":"https://secure.gravatar.com/avatar/0176d9564601b43d75aff59f2cceed88?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},{"url":"https://api.github.com/users/tim","login":"tim","gravatar_id":"515a6f36db0157b7cf83f3b0368e9941","id":2856,"avatar_url":"https://secure.gravatar.com/avatar/515a6f36db0157b7cf83f3b0368e9941?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},{"url":"https://api.github.com/users/SebastianRose","login":"SebastianRose","gravatar_id":"75bcdfe5499e68879fda2957572170ad","id":23090,"avatar_url":"https://secure.gravatar.com/avatar/75bcdfe5499e68879fda2957572170ad?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},{"url":"https://api.github.com/users/cola-zero","login":"cola-zero","gravatar_id":"e46e70d2689dfa229dac7ba0dc9f34e4","id":9118,"avatar_url":"https://secure.gravatar.com/avatar/e46e70d2689dfa229dac7ba0dc9f34e4?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},{"url":"https://api.github.com/users/janfri","login":"janfri","gravatar_id":"4c2cadf461b9c15ebf5726577b51e611","id":854,"avatar_url":"https://secure.gravatar.com/avatar/4c2cadf461b9c15ebf5726577b51e611?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},{"url":"https://api.github.com/users/nevans","login":"nevans","gravatar_id":"dfaba90dcff3238dc9770e270232b4a1","id":6142,"avatar_url":"https://secure.gravatar.com/avatar/dfaba90dcff3238dc9770e270232b4a1?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},{"url":"https://api.github.com/users/TreyE","login":"TreyE","gravatar_id":"2b405e0fc139db9b768cfab467955e04","id":38384,"avatar_url":"https://secure.gravatar.com/avatar/2b405e0fc139db9b768cfab467955e04?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},{"url":"https://api.github.com/users/aaalex","login":"aaalex","gravatar_id":"aad77082a3f5b51259532217aadf450a","id":11762,"avatar_url":"https://secure.gravatar.com/avatar/aad77082a3f5b51259532217aadf450a?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},{"url":"https://api.github.com/users/beppu","login":"beppu","gravatar_id":"32093c41c663ea62b17d66dab11b789f","id":4425,"avatar_url":"https://secure.gravatar.com/avatar/32093c41c663ea62b17d66dab11b789f?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},{"url":"https://api.github.com/users/jdallien","login":"jdallien","gravatar_id":"490dc3575b1c341a84e89cba6305faf9","id":17927,"avatar_url":"https://secure.gravatar.com/avatar/490dc3575b1c341a84e89cba6305faf9?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},{"url":"https://api.github.com/users/arn","login":"arn","gravatar_id":"17faa52c4ce95a86ac34b4d3010ea56d","id":6053,"avatar_url":"https://secure.gravatar.com/avatar/17faa52c4ce95a86ac34b4d3010ea56d?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},{"url":"https://api.github.com/users/llimllib","login":"llimllib","gravatar_id":"aa7c1350d93036592f58f165318044db","id":7150,"avatar_url":"https://secure.gravatar.com/avatar/aa7c1350d93036592f58f165318044db?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},{"url":"https://api.github.com/users/jtrupiano","login":"jtrupiano","gravatar_id":"63d809dbf4d44297f73caad307972ec5","id":12331,"avatar_url":"https://secure.gravatar.com/avatar/63d809dbf4d44297f73caad307972ec5?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},{"url":"https://api.github.com/users/lmarburger","login":"lmarburger","gravatar_id":"f027637a680a05254c6f721f8ab57392","id":23582,"avatar_url":"https://secure.gravatar.com/avatar/f027637a680a05254c6f721f8ab57392?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},{"url":"https://api.github.com/users/lfaren","login":"lfaren","gravatar_id":"5f76cc23c75e77aa30ff1ac1fbf1ec54","id":142776,"avatar_url":"https://secure.gravatar.com/avatar/5f76cc23c75e77aa30ff1ac1fbf1ec54?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},{"url":"https://api.github.com/users/slaney","login":"slaney","gravatar_id":"3f4de376ba800ba092d9e1e332ede421","id":5012,"avatar_url":"https://secure.gravatar.com/avatar/3f4de376ba800ba092d9e1e332ede421?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},{"url":"https://api.github.com/users/stevenhaddox","login":"stevenhaddox","gravatar_id":"1fdf54b0ccb88bb46f99b6d9352302dc","id":58004,"avatar_url":"https://secure.gravatar.com/avatar/1fdf54b0ccb88bb46f99b6d9352302dc?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},{"url":"https://api.github.com/users/stonegao","login":"stonegao","gravatar_id":"dca772bde69d5a9f39a62ee79b122f0b","id":42081,"avatar_url":"https://secure.gravatar.com/avatar/dca772bde69d5a9f39a62ee79b122f0b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},{"url":"https://api.github.com/users/riethmayer","login":"riethmayer","gravatar_id":"788dec4942d6108c2cfb3ff2a9fb37ca","id":67637,"avatar_url":"https://secure.gravatar.com/avatar/788dec4942d6108c2cfb3ff2a9fb37ca?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},{"url":"https://api.github.com/users/natebunnyfield","login":"natebunnyfield","gravatar_id":"ed5c8e9a67490816384ff83e9d0e0a42","id":94285,"avatar_url":"https://secure.gravatar.com/avatar/ed5c8e9a67490816384ff83e9d0e0a42?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},{"url":"https://api.github.com/users/nerdEd","login":"nerdEd","gravatar_id":"cf491f57897e7f31122ca6d03d6a49e4","id":1726,"avatar_url":"https://secure.gravatar.com/avatar/cf491f57897e7f31122ca6d03d6a49e4?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},{"url":"https://api.github.com/users/jamesdaniels","login":"jamesdaniels","gravatar_id":"3538353e7f9c08efddaabff15c9c6480","id":44975,"avatar_url":"https://secure.gravatar.com/avatar/3538353e7f9c08efddaabff15c9c6480?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},{"url":"https://api.github.com/users/jkamenik","login":"jkamenik","gravatar_id":"d5cdad8cf459a2f3660d374e72eccf4b","id":165914,"avatar_url":"https://secure.gravatar.com/avatar/d5cdad8cf459a2f3660d374e72eccf4b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},{"url":"https://api.github.com/users/mnelson","login":"mnelson","gravatar_id":"58dac781cb69c3342f0a73c8936cf48b","id":51276,"avatar_url":"https://secure.gravatar.com/avatar/58dac781cb69c3342f0a73c8936cf48b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},{"url":"https://api.github.com/users/devreq","login":"devreq","gravatar_id":"7ea1a46afc3c483ef7ae7b6503b41793","id":230532,"avatar_url":"https://secure.gravatar.com/avatar/7ea1a46afc3c483ef7ae7b6503b41793?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},{"url":"https://api.github.com/users/flipsasser","login":"flipsasser","gravatar_id":"ffca7d80230ae1f99914b74853bf06bb","id":8594,"avatar_url":"https://secure.gravatar.com/avatar/ffca7d80230ae1f99914b74853bf06bb?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},{"url":"https://api.github.com/users/abachman","login":"abachman","gravatar_id":"939848268c73b4049f90ee0703df7c68","id":13002,"avatar_url":"https://secure.gravatar.com/avatar/939848268c73b4049f90ee0703df7c68?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},{"url":"https://api.github.com/users/pjb3","login":"pjb3","gravatar_id":"6661ef9d747db3af8896cd94959d717d","id":726,"avatar_url":"https://secure.gravatar.com/avatar/6661ef9d747db3af8896cd94959d717d?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},{"url":"https://api.github.com/users/arcterex","login":"arcterex","gravatar_id":"5bc3ee98b5a5bd0cd936554de2bdc232","id":70160,"avatar_url":"https://secure.gravatar.com/avatar/5bc3ee98b5a5bd0cd936554de2bdc232?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"},{"url":"https://api.github.com/users/atmos","login":"atmos","gravatar_id":"a86224d72ce21cd9f5bee6784d4b06c7","id":38,"avatar_url":"https://secure.gravatar.com/avatar/a86224d72ce21cd9f5bee6784d4b06c7?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"}]'
103
- http_version: !!null
104
- recorded_at: Sun, 15 Jan 2012 19:38:37 GMT
105
- - request:
106
- method: get
107
- uri: https://api.github.com/
108
- body: 'null'
109
- headers:
110
- Content-Type:
111
- - application/json
112
- Accept:
113
- - application/json, text/x-yaml, application/xml, application/xhtml+xml, text/html,
114
- text/plain
115
- response:
116
- status:
117
- code: 204
118
- message: !!null
119
- headers:
120
- server:
121
- - nginx/1.0.4
122
- date:
123
- - Mon, 16 Jan 2012 02:45:56 GMT
124
- connection:
125
- - close
126
- status:
127
- - 204 No Content
128
- x-ratelimit-limit:
129
- - '5000'
130
64
  etag:
131
- - ! '"d41d8cd98f00b204e9800998ecf8427e"'
65
+ - ! '"8e1218a0c822681eb4f83e8835693f4d"'
132
66
  x-ratelimit-remaining:
133
- - '4986'
134
- body: ''
135
- http_version: !!null
136
- recorded_at: Mon, 16 Jan 2012 02:45:56 GMT
137
- - request:
138
- method: get
139
- uri: https://api.github.com/users/avdi
140
- body: 'null'
141
- headers:
142
- Content-Type:
143
- - application/json
144
- Accept:
145
- - application/json, text/x-yaml, application/xml, application/xhtml+xml, text/html,
146
- text/plain
147
- response:
148
- status:
149
- code: 200
150
- message: !!null
151
- headers:
152
- server:
153
- - nginx/1.0.4
154
- date:
155
- - Mon, 16 Jan 2012 02:45:57 GMT
156
- content-type:
157
- - application/json; charset=utf-8
158
- transfer-encoding:
159
- - chunked
160
- connection:
161
- - close
162
- status:
163
- - 200 OK
67
+ - '4980'
68
+ last-modified:
69
+ - Tue, 31 Jul 2012 06:09:16 GMT
70
+ cache-control:
71
+ - public, max-age=60
72
+ vary:
73
+ - Accept
164
74
  x-ratelimit-limit:
165
75
  - '5000'
166
- etag:
167
- - ! '"74395e5a689da4f1481dfb8c8730df12"'
168
- x-ratelimit-remaining:
169
- - '4985'
170
- body: ! '{"type":"User","created_at":"2008-02-26T19:54:34Z","email":"avdi@avdi.org","url":"https://api.github.com/users/avdi","avatar_url":"https://secure.gravatar.com/avatar/4dea430d31b993abaf41cd9b54f8128d?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","login":"avdi","public_repos":61,"hireable":false,"followers":182,"following":33,"bio":null,"blog":"http://avdi.org/devblog/","public_gists":72,"name":"Avdi
171
- Grimm","location":"Pennsylvania, USA","id":982,"html_url":"https://github.com/avdi","company":"ShipRise","gravatar_id":"4dea430d31b993abaf41cd9b54f8128d"}'
172
- http_version: !!null
173
- recorded_at: Mon, 16 Jan 2012 02:45:57 GMT
76
+ body:
77
+ encoding: ASCII-8BIT
78
+ string: ! '{"public_repos":71,"type":"User","gravatar_id":"4dea430d31b993abaf41cd9b54f8128d","login":"avdi","following":34,"location":"Pennsylvania,
79
+ USA","email":"avdi@avdi.org","created_at":"2008-02-26T19:54:34Z","hireable":false,"avatar_url":"https://secure.gravatar.com/avatar/4dea430d31b993abaf41cd9b54f8128d?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","blog":"http://avdi.org/devblog/","bio":null,"html_url":"https://github.com/avdi","company":"ShipRise","followers":302,"name":"Avdi
80
+ Grimm","url":"https://api.github.com/users/avdi","id":982,"public_gists":86}'
81
+ http_version:
82
+ recorded_at: Wed, 01 Aug 2012 19:38:35 GMT
174
83
  - request:
175
84
  method: get
176
85
  uri: https://api.github.com/users/avdi/followers
177
- body: 'null'
86
+ body:
87
+ encoding: US-ASCII
88
+ string: ''
178
89
  headers:
179
- Content-Type:
180
- - application/json
181
90
  Accept:
182
91
  - application/json, text/x-yaml, application/xml, application/xhtml+xml, text/html,
183
92
  text/plain
184
93
  response:
185
94
  status:
186
95
  code: 200
187
- message: !!null
96
+ message:
188
97
  headers:
189
98
  server:
190
- - nginx/1.0.4
99
+ - nginx/1.0.13
191
100
  date:
192
- - Mon, 16 Jan 2012 02:45:57 GMT
101
+ - Wed, 01 Aug 2012 19:38:46 GMT
193
102
  content-type:
194
103
  - application/json; charset=utf-8
195
104
  transfer-encoding:
@@ -198,16 +107,24 @@ http_interactions:
198
107
  - close
199
108
  status:
200
109
  - 200 OK
201
- x-ratelimit-limit:
202
- - '5000'
203
110
  etag:
204
- - ! '"ab1c482b0624d57d2f13a64ed9ea0eb9"'
111
+ - ! '"78b3435d5ac6b1eda8613e65d9768ae9"'
205
112
  link:
206
- - <https://api.github.com/users/avdi/followers?page=2>; rel="next", <https://api.github.com/users/avdi/followers?page=7>;
113
+ - <https://api.github.com/users/avdi/followers?page=2>; rel="next", <https://api.github.com/users/avdi/followers?page=11>;
207
114
  rel="last"
115
+ vary:
116
+ - Accept
117
+ x-ratelimit-limit:
118
+ - '5000'
119
+ last-modified:
120
+ - Wed, 01 Aug 2012 15:34:30 GMT
208
121
  x-ratelimit-remaining:
209
- - '4984'
210
- body: ! '[{"avatar_url":"https://secure.gravatar.com/avatar/0176d9564601b43d75aff59f2cceed88?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/cypher","login":"cypher","gravatar_id":"0176d9564601b43d75aff59f2cceed88","id":978},{"avatar_url":"https://secure.gravatar.com/avatar/515a6f36db0157b7cf83f3b0368e9941?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/tim","login":"tim","gravatar_id":"515a6f36db0157b7cf83f3b0368e9941","id":2856},{"avatar_url":"https://secure.gravatar.com/avatar/75bcdfe5499e68879fda2957572170ad?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/SebastianRose","login":"SebastianRose","gravatar_id":"75bcdfe5499e68879fda2957572170ad","id":23090},{"avatar_url":"https://secure.gravatar.com/avatar/e46e70d2689dfa229dac7ba0dc9f34e4?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/cola-zero","login":"cola-zero","gravatar_id":"e46e70d2689dfa229dac7ba0dc9f34e4","id":9118},{"avatar_url":"https://secure.gravatar.com/avatar/4c2cadf461b9c15ebf5726577b51e611?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/janfri","login":"janfri","gravatar_id":"4c2cadf461b9c15ebf5726577b51e611","id":854},{"avatar_url":"https://secure.gravatar.com/avatar/dfaba90dcff3238dc9770e270232b4a1?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/nevans","login":"nevans","gravatar_id":"dfaba90dcff3238dc9770e270232b4a1","id":6142},{"avatar_url":"https://secure.gravatar.com/avatar/2b405e0fc139db9b768cfab467955e04?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/TreyE","login":"TreyE","gravatar_id":"2b405e0fc139db9b768cfab467955e04","id":38384},{"avatar_url":"https://secure.gravatar.com/avatar/aad77082a3f5b51259532217aadf450a?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/aaalex","login":"aaalex","gravatar_id":"aad77082a3f5b51259532217aadf450a","id":11762},{"avatar_url":"https://secure.gravatar.com/avatar/32093c41c663ea62b17d66dab11b789f?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/beppu","login":"beppu","gravatar_id":"32093c41c663ea62b17d66dab11b789f","id":4425},{"avatar_url":"https://secure.gravatar.com/avatar/490dc3575b1c341a84e89cba6305faf9?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/jdallien","login":"jdallien","gravatar_id":"490dc3575b1c341a84e89cba6305faf9","id":17927},{"avatar_url":"https://secure.gravatar.com/avatar/17faa52c4ce95a86ac34b4d3010ea56d?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/arn","login":"arn","gravatar_id":"17faa52c4ce95a86ac34b4d3010ea56d","id":6053},{"avatar_url":"https://secure.gravatar.com/avatar/aa7c1350d93036592f58f165318044db?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/llimllib","login":"llimllib","gravatar_id":"aa7c1350d93036592f58f165318044db","id":7150},{"avatar_url":"https://secure.gravatar.com/avatar/63d809dbf4d44297f73caad307972ec5?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/jtrupiano","login":"jtrupiano","gravatar_id":"63d809dbf4d44297f73caad307972ec5","id":12331},{"avatar_url":"https://secure.gravatar.com/avatar/f027637a680a05254c6f721f8ab57392?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/lmarburger","login":"lmarburger","gravatar_id":"f027637a680a05254c6f721f8ab57392","id":23582},{"avatar_url":"https://secure.gravatar.com/avatar/5f76cc23c75e77aa30ff1ac1fbf1ec54?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/lfaren","login":"lfaren","gravatar_id":"5f76cc23c75e77aa30ff1ac1fbf1ec54","id":142776},{"avatar_url":"https://secure.gravatar.com/avatar/3f4de376ba800ba092d9e1e332ede421?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/slaney","login":"slaney","gravatar_id":"3f4de376ba800ba092d9e1e332ede421","id":5012},{"avatar_url":"https://secure.gravatar.com/avatar/1fdf54b0ccb88bb46f99b6d9352302dc?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/stevenhaddox","login":"stevenhaddox","gravatar_id":"1fdf54b0ccb88bb46f99b6d9352302dc","id":58004},{"avatar_url":"https://secure.gravatar.com/avatar/dca772bde69d5a9f39a62ee79b122f0b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/stonegao","login":"stonegao","gravatar_id":"dca772bde69d5a9f39a62ee79b122f0b","id":42081},{"avatar_url":"https://secure.gravatar.com/avatar/788dec4942d6108c2cfb3ff2a9fb37ca?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/riethmayer","login":"riethmayer","gravatar_id":"788dec4942d6108c2cfb3ff2a9fb37ca","id":67637},{"avatar_url":"https://secure.gravatar.com/avatar/ed5c8e9a67490816384ff83e9d0e0a42?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/natebunnyfield","login":"natebunnyfield","gravatar_id":"ed5c8e9a67490816384ff83e9d0e0a42","id":94285},{"avatar_url":"https://secure.gravatar.com/avatar/cf491f57897e7f31122ca6d03d6a49e4?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/nerdEd","login":"nerdEd","gravatar_id":"cf491f57897e7f31122ca6d03d6a49e4","id":1726},{"avatar_url":"https://secure.gravatar.com/avatar/3538353e7f9c08efddaabff15c9c6480?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/jamesdaniels","login":"jamesdaniels","gravatar_id":"3538353e7f9c08efddaabff15c9c6480","id":44975},{"avatar_url":"https://secure.gravatar.com/avatar/d5cdad8cf459a2f3660d374e72eccf4b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/jkamenik","login":"jkamenik","gravatar_id":"d5cdad8cf459a2f3660d374e72eccf4b","id":165914},{"avatar_url":"https://secure.gravatar.com/avatar/58dac781cb69c3342f0a73c8936cf48b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/mnelson","login":"mnelson","gravatar_id":"58dac781cb69c3342f0a73c8936cf48b","id":51276},{"avatar_url":"https://secure.gravatar.com/avatar/7ea1a46afc3c483ef7ae7b6503b41793?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/devreq","login":"devreq","gravatar_id":"7ea1a46afc3c483ef7ae7b6503b41793","id":230532},{"avatar_url":"https://secure.gravatar.com/avatar/ffca7d80230ae1f99914b74853bf06bb?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/flipsasser","login":"flipsasser","gravatar_id":"ffca7d80230ae1f99914b74853bf06bb","id":8594},{"avatar_url":"https://secure.gravatar.com/avatar/939848268c73b4049f90ee0703df7c68?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/abachman","login":"abachman","gravatar_id":"939848268c73b4049f90ee0703df7c68","id":13002},{"avatar_url":"https://secure.gravatar.com/avatar/6661ef9d747db3af8896cd94959d717d?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/pjb3","login":"pjb3","gravatar_id":"6661ef9d747db3af8896cd94959d717d","id":726},{"avatar_url":"https://secure.gravatar.com/avatar/5bc3ee98b5a5bd0cd936554de2bdc232?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/arcterex","login":"arcterex","gravatar_id":"5bc3ee98b5a5bd0cd936554de2bdc232","id":70160},{"avatar_url":"https://secure.gravatar.com/avatar/a86224d72ce21cd9f5bee6784d4b06c7?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url":"https://api.github.com/users/atmos","login":"atmos","gravatar_id":"a86224d72ce21cd9f5bee6784d4b06c7","id":38}]'
211
- http_version: !!null
212
- recorded_at: Mon, 16 Jan 2012 02:45:57 GMT
213
- recorded_with: VCR 2.0.0.rc1
122
+ - '4979'
123
+ cache-control:
124
+ - public, max-age=60
125
+ body:
126
+ encoding: ASCII-8BIT
127
+ string: ! '[{"gravatar_id":"4c64dd1fc1e50d91b712f73cfb77a7aa","login":"einarj","url":"https://api.github.com/users/einarj","avatar_url":"https://secure.gravatar.com/avatar/4c64dd1fc1e50d91b712f73cfb77a7aa?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":906081},{"gravatar_id":"e0f56d398f0757186fbdea7140457c55","login":"wolcanus","url":"https://api.github.com/users/wolcanus","avatar_url":"https://secure.gravatar.com/avatar/e0f56d398f0757186fbdea7140457c55?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":645452},{"gravatar_id":"0176d9564601b43d75aff59f2cceed88","login":"cypher","url":"https://api.github.com/users/cypher","avatar_url":"https://secure.gravatar.com/avatar/0176d9564601b43d75aff59f2cceed88?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":978},{"gravatar_id":"515a6f36db0157b7cf83f3b0368e9941","login":"tim","url":"https://api.github.com/users/tim","avatar_url":"https://secure.gravatar.com/avatar/515a6f36db0157b7cf83f3b0368e9941?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":2856},{"gravatar_id":"75bcdfe5499e68879fda2957572170ad","login":"SebastianRose","url":"https://api.github.com/users/SebastianRose","avatar_url":"https://secure.gravatar.com/avatar/75bcdfe5499e68879fda2957572170ad?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":23090},{"gravatar_id":"e46e70d2689dfa229dac7ba0dc9f34e4","login":"cola-zero","url":"https://api.github.com/users/cola-zero","avatar_url":"https://secure.gravatar.com/avatar/e46e70d2689dfa229dac7ba0dc9f34e4?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":9118},{"gravatar_id":"b32a1911d783e0a95e0b062fd5d0b64b","login":"janfri","url":"https://api.github.com/users/janfri","avatar_url":"https://secure.gravatar.com/avatar/b32a1911d783e0a95e0b062fd5d0b64b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":854},{"gravatar_id":"dfaba90dcff3238dc9770e270232b4a1","login":"nevans","url":"https://api.github.com/users/nevans","avatar_url":"https://secure.gravatar.com/avatar/dfaba90dcff3238dc9770e270232b4a1?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":6142},{"gravatar_id":"2b405e0fc139db9b768cfab467955e04","login":"TreyE","url":"https://api.github.com/users/TreyE","avatar_url":"https://secure.gravatar.com/avatar/2b405e0fc139db9b768cfab467955e04?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":38384},{"gravatar_id":"aad77082a3f5b51259532217aadf450a","login":"aaalex","url":"https://api.github.com/users/aaalex","avatar_url":"https://secure.gravatar.com/avatar/aad77082a3f5b51259532217aadf450a?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":11762},{"gravatar_id":"32093c41c663ea62b17d66dab11b789f","login":"beppu","url":"https://api.github.com/users/beppu","avatar_url":"https://secure.gravatar.com/avatar/32093c41c663ea62b17d66dab11b789f?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":4425},{"gravatar_id":"490dc3575b1c341a84e89cba6305faf9","login":"jdallien","url":"https://api.github.com/users/jdallien","avatar_url":"https://secure.gravatar.com/avatar/490dc3575b1c341a84e89cba6305faf9?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":17927},{"gravatar_id":"17faa52c4ce95a86ac34b4d3010ea56d","login":"arn","url":"https://api.github.com/users/arn","avatar_url":"https://secure.gravatar.com/avatar/17faa52c4ce95a86ac34b4d3010ea56d?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":6053},{"gravatar_id":"aa7c1350d93036592f58f165318044db","login":"llimllib","url":"https://api.github.com/users/llimllib","avatar_url":"https://secure.gravatar.com/avatar/aa7c1350d93036592f58f165318044db?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":7150},{"gravatar_id":"63d809dbf4d44297f73caad307972ec5","login":"jtrupiano","url":"https://api.github.com/users/jtrupiano","avatar_url":"https://secure.gravatar.com/avatar/63d809dbf4d44297f73caad307972ec5?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":12331},{"gravatar_id":"f027637a680a05254c6f721f8ab57392","login":"lmarburger","url":"https://api.github.com/users/lmarburger","avatar_url":"https://secure.gravatar.com/avatar/f027637a680a05254c6f721f8ab57392?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":23582},{"gravatar_id":"5f76cc23c75e77aa30ff1ac1fbf1ec54","login":"lfaren","url":"https://api.github.com/users/lfaren","avatar_url":"https://secure.gravatar.com/avatar/5f76cc23c75e77aa30ff1ac1fbf1ec54?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":142776},{"gravatar_id":"3f4de376ba800ba092d9e1e332ede421","login":"slaney","url":"https://api.github.com/users/slaney","avatar_url":"https://secure.gravatar.com/avatar/3f4de376ba800ba092d9e1e332ede421?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":5012},{"gravatar_id":"1fdf54b0ccb88bb46f99b6d9352302dc","login":"stevenhaddox","url":"https://api.github.com/users/stevenhaddox","avatar_url":"https://secure.gravatar.com/avatar/1fdf54b0ccb88bb46f99b6d9352302dc?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":58004},{"gravatar_id":"dca772bde69d5a9f39a62ee79b122f0b","login":"stonegao","url":"https://api.github.com/users/stonegao","avatar_url":"https://secure.gravatar.com/avatar/dca772bde69d5a9f39a62ee79b122f0b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":42081},{"gravatar_id":"788dec4942d6108c2cfb3ff2a9fb37ca","login":"riethmayer","url":"https://api.github.com/users/riethmayer","avatar_url":"https://secure.gravatar.com/avatar/788dec4942d6108c2cfb3ff2a9fb37ca?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":67637},{"gravatar_id":"ed5c8e9a67490816384ff83e9d0e0a42","login":"natebunnyfield","url":"https://api.github.com/users/natebunnyfield","avatar_url":"https://secure.gravatar.com/avatar/ed5c8e9a67490816384ff83e9d0e0a42?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":94285},{"gravatar_id":"cf491f57897e7f31122ca6d03d6a49e4","login":"nerdEd","url":"https://api.github.com/users/nerdEd","avatar_url":"https://secure.gravatar.com/avatar/cf491f57897e7f31122ca6d03d6a49e4?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":1726},{"gravatar_id":"3538353e7f9c08efddaabff15c9c6480","login":"jamesdaniels","url":"https://api.github.com/users/jamesdaniels","avatar_url":"https://secure.gravatar.com/avatar/3538353e7f9c08efddaabff15c9c6480?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":44975},{"gravatar_id":"d5cdad8cf459a2f3660d374e72eccf4b","login":"jkamenik","url":"https://api.github.com/users/jkamenik","avatar_url":"https://secure.gravatar.com/avatar/d5cdad8cf459a2f3660d374e72eccf4b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":165914},{"gravatar_id":"58dac781cb69c3342f0a73c8936cf48b","login":"mnelson","url":"https://api.github.com/users/mnelson","avatar_url":"https://secure.gravatar.com/avatar/58dac781cb69c3342f0a73c8936cf48b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":51276},{"gravatar_id":"7ea1a46afc3c483ef7ae7b6503b41793","login":"devreq","url":"https://api.github.com/users/devreq","avatar_url":"https://secure.gravatar.com/avatar/7ea1a46afc3c483ef7ae7b6503b41793?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":230532},{"gravatar_id":"ffca7d80230ae1f99914b74853bf06bb","login":"flipsasser","url":"https://api.github.com/users/flipsasser","avatar_url":"https://secure.gravatar.com/avatar/ffca7d80230ae1f99914b74853bf06bb?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":8594},{"gravatar_id":"939848268c73b4049f90ee0703df7c68","login":"abachman","url":"https://api.github.com/users/abachman","avatar_url":"https://secure.gravatar.com/avatar/939848268c73b4049f90ee0703df7c68?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":13002},{"gravatar_id":"6661ef9d747db3af8896cd94959d717d","login":"pjb3","url":"https://api.github.com/users/pjb3","avatar_url":"https://secure.gravatar.com/avatar/6661ef9d747db3af8896cd94959d717d?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","id":726}]'
128
+ http_version:
129
+ recorded_at: Wed, 01 Aug 2012 19:38:35 GMT
130
+ recorded_with: VCR 2.2.4
@@ -3,7 +3,9 @@ http_interactions:
3
3
  - request:
4
4
  method: get
5
5
  uri: https://api.github.com/
6
- body: ''
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
7
9
  headers:
8
10
  Accept:
9
11
  - application/json, text/x-yaml, application/xml, application/xhtml+xml, text/html,
@@ -11,55 +13,25 @@ http_interactions:
11
13
  response:
12
14
  status:
13
15
  code: 204
14
- message: !!null
16
+ message:
15
17
  headers:
16
18
  server:
17
- - nginx/1.0.4
19
+ - nginx/1.0.13
18
20
  date:
19
- - Sun, 15 Jan 2012 19:38:33 GMT
21
+ - Wed, 01 Aug 2012 19:38:41 GMT
20
22
  connection:
21
23
  - close
22
24
  status:
23
25
  - 204 No Content
24
26
  x-ratelimit-limit:
25
27
  - '5000'
26
- etag:
27
- - ! '"d41d8cd98f00b204e9800998ecf8427e"'
28
+ cache-control:
29
+ - ''
28
30
  x-ratelimit-remaining:
29
- - '4993'
30
- body: ''
31
- http_version: !!null
32
- recorded_at: Sun, 15 Jan 2012 19:38:33 GMT
33
- - request:
34
- method: get
35
- uri: https://api.github.com/
36
- body: 'null'
37
- headers:
38
- Content-Type:
39
- - application/json
40
- Accept:
41
- - application/json, text/x-yaml, application/xml, application/xhtml+xml, text/html,
42
- text/plain
43
- response:
44
- status:
45
- code: 204
46
- message: !!null
47
- headers:
48
- server:
49
- - nginx/1.0.4
50
- date:
51
- - Mon, 16 Jan 2012 02:45:54 GMT
52
- connection:
53
- - close
54
- status:
55
- - 204 No Content
56
- x-ratelimit-limit:
57
- - '5000'
58
- etag:
59
- - ! '"d41d8cd98f00b204e9800998ecf8427e"'
60
- x-ratelimit-remaining:
61
- - '4993'
62
- body: ''
63
- http_version: !!null
64
- recorded_at: Mon, 16 Jan 2012 02:45:54 GMT
65
- recorded_with: VCR 2.0.0.rc1
31
+ - '4988'
32
+ body:
33
+ encoding: US-ASCII
34
+ string: ''
35
+ http_version:
36
+ recorded_at: Wed, 01 Aug 2012 19:38:30 GMT
37
+ recorded_with: VCR 2.2.4
@@ -3,7 +3,9 @@ http_interactions:
3
3
  - request:
4
4
  method: get
5
5
  uri: https://api.github.com/
6
- body: ''
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
7
9
  headers:
8
10
  Accept:
9
11
  - application/json, text/x-yaml, application/xml, application/xhtml+xml, text/html,
@@ -11,55 +13,25 @@ http_interactions:
11
13
  response:
12
14
  status:
13
15
  code: 204
14
- message: !!null
16
+ message:
15
17
  headers:
16
18
  server:
17
- - nginx/1.0.4
19
+ - nginx/1.0.13
18
20
  date:
19
- - Sun, 15 Jan 2012 19:38:34 GMT
21
+ - Wed, 01 Aug 2012 19:38:41 GMT
20
22
  connection:
21
23
  - close
22
24
  status:
23
25
  - 204 No Content
24
26
  x-ratelimit-limit:
25
27
  - '5000'
26
- etag:
27
- - ! '"d41d8cd98f00b204e9800998ecf8427e"'
28
+ cache-control:
29
+ - ''
28
30
  x-ratelimit-remaining:
29
- - '4992'
30
- body: ''
31
- http_version: !!null
32
- recorded_at: Sun, 15 Jan 2012 19:38:34 GMT
33
- - request:
34
- method: get
35
- uri: https://api.github.com/
36
- body: 'null'
37
- headers:
38
- Content-Type:
39
- - application/json
40
- Accept:
41
- - application/json, text/x-yaml, application/xml, application/xhtml+xml, text/html,
42
- text/plain
43
- response:
44
- status:
45
- code: 204
46
- message: !!null
47
- headers:
48
- server:
49
- - nginx/1.0.4
50
- date:
51
- - Mon, 16 Jan 2012 02:45:54 GMT
52
- connection:
53
- - close
54
- status:
55
- - 204 No Content
56
- x-ratelimit-limit:
57
- - '5000'
58
- etag:
59
- - ! '"d41d8cd98f00b204e9800998ecf8427e"'
60
- x-ratelimit-remaining:
61
- - '4992'
62
- body: ''
63
- http_version: !!null
64
- recorded_at: Mon, 16 Jan 2012 02:45:54 GMT
65
- recorded_with: VCR 2.0.0.rc1
31
+ - '4987'
32
+ body:
33
+ encoding: US-ASCII
34
+ string: ''
35
+ http_version:
36
+ recorded_at: Wed, 01 Aug 2012 19:38:30 GMT
37
+ recorded_with: VCR 2.2.4
@@ -21,11 +21,13 @@ module Leadlight
21
21
  '<https://api.github.com/users/avdi/followers?page=2>; rel="next",'\
22
22
  ' <https://api.github.com/users/avdi/followers?page=6>; rel="last"'
23
23
  }
24
+ let(:captures) { {} }
24
25
 
25
26
  before do
26
- representation.stub(__response__: response,
27
+ representation.stub(__response__: response,
27
28
  __service__: service,
28
- __location__: '/foo')
29
+ __location__: '/foo',
30
+ __captures__: captures)
29
31
  end
30
32
 
31
33
  describe '.extend' do
@@ -69,10 +71,38 @@ module Leadlight
69
71
  it 'adds a link helper' do
70
72
  subject.add_link('/parent', 'parent')
71
73
  service.should_receive(:get_representation!).
72
- with(Addressable::URI.parse('/parent')).
74
+ with(Addressable::URI.parse('/parent'), anything, anything).
73
75
  and_return(request)
74
76
  subject.parent
75
77
  end
78
+
79
+ context 'given a URI template' do
80
+ let(:captures) { { 'id' => '123', 'type' => 'user', 'secret' => 'xyzzy' } }
81
+ before do
82
+ subject.add_link('/{type}/{id}/', 'foo')
83
+ end
84
+
85
+ it 'statically expands the template using data in __captures__' do
86
+ subject.link('foo').href.to_s.should eq('/user/123/')
87
+ end
88
+ end
89
+
90
+ it 'supports relative links' do
91
+ subject.add_link('./bar', 'bar')
92
+ subject.link('bar').href.to_s.should eq('/foo/bar')
93
+ end
94
+
95
+ it 'collapses slashes when expanding relative links' do
96
+ representation.stub(:__location__ => '/foo/')
97
+ subject.add_link('./bar', 'bar')
98
+ subject.link('bar').href.to_s.should eq('/foo/bar')
99
+ end
100
+
101
+ it 'supports .. for previous directory' do
102
+ representation.stub(:__location__ => '/foo/bar/baz')
103
+ subject.add_link('../../buz', 'buz')
104
+ subject.link('buz').href.to_s.should eq('/foo/buz')
105
+ end
76
106
  end
77
107
 
78
108
  describe '#add_link_template' do
@@ -94,10 +124,26 @@ module Leadlight
94
124
  it 'adds a link helper' do
95
125
  subject.add_link_template('/child/{index}', 'child')
96
126
  service.should_receive(:get_representation!).
97
- with('/child/23')
127
+ with(u('/child/23'))
98
128
  subject.child(23)
99
129
  end
100
130
 
131
+ it 'supports relative links' do
132
+ subject.add_link_template('./bar', 'bar')
133
+ subject.link('bar').href.to_s.should eq('/foo/bar')
134
+ end
135
+
136
+ it 'collapses slashes when expanding relative links' do
137
+ representation.stub(:__location__ => '/foo/')
138
+ subject.add_link_template('./bar', 'bar')
139
+ subject.link('bar').href.to_s.should eq('/foo/bar')
140
+ end
141
+
142
+ it 'supports .. for previous directory' do
143
+ representation.stub(:__location__ => '/foo/bar/baz')
144
+ subject.add_link_template('../../buz', 'buz')
145
+ subject.link('buz').href.to_s.should eq('/foo/buz')
146
+ end
101
147
  end
102
148
 
103
149
  describe '#add_link_set' do