jugend-httparty 0.5.2.1
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.
- data/.gitignore +7 -0
- data/History +209 -0
- data/MIT-LICENSE +20 -0
- data/Manifest +47 -0
- data/README.rdoc +54 -0
- data/Rakefile +80 -0
- data/VERSION +1 -0
- data/bin/httparty +108 -0
- data/cucumber.yml +1 -0
- data/examples/aaws.rb +32 -0
- data/examples/basic.rb +11 -0
- data/examples/custom_parsers.rb +67 -0
- data/examples/delicious.rb +37 -0
- data/examples/google.rb +16 -0
- data/examples/rubyurl.rb +14 -0
- data/examples/twitter.rb +31 -0
- data/examples/whoismyrep.rb +10 -0
- data/features/basic_authentication.feature +20 -0
- data/features/command_line.feature +7 -0
- data/features/deals_with_http_error_codes.feature +26 -0
- data/features/handles_multiple_formats.feature +34 -0
- data/features/steps/env.rb +23 -0
- data/features/steps/httparty_response_steps.rb +26 -0
- data/features/steps/httparty_steps.rb +27 -0
- data/features/steps/mongrel_helper.rb +78 -0
- data/features/steps/remote_service_steps.rb +61 -0
- data/features/supports_redirection.feature +22 -0
- data/features/supports_timeout_option.feature +13 -0
- data/jugend-httparty.gemspec +127 -0
- data/lib/httparty/cookie_hash.rb +22 -0
- data/lib/httparty/core_extensions.rb +31 -0
- data/lib/httparty/exceptions.rb +26 -0
- data/lib/httparty/module_inheritable_attributes.rb +25 -0
- data/lib/httparty/parser.rb +141 -0
- data/lib/httparty/request.rb +206 -0
- data/lib/httparty/response.rb +62 -0
- data/lib/httparty.rb +343 -0
- data/spec/fixtures/delicious.xml +23 -0
- data/spec/fixtures/empty.xml +0 -0
- data/spec/fixtures/google.html +3 -0
- data/spec/fixtures/twitter.json +1 -0
- data/spec/fixtures/twitter.xml +403 -0
- data/spec/fixtures/undefined_method_add_node_for_nil.xml +2 -0
- data/spec/httparty/cookie_hash_spec.rb +71 -0
- data/spec/httparty/parser_spec.rb +154 -0
- data/spec/httparty/request_spec.rb +415 -0
- data/spec/httparty/response_spec.rb +83 -0
- data/spec/httparty_spec.rb +514 -0
- data/spec/spec.opts +3 -0
- data/spec/spec_helper.rb +19 -0
- data/spec/support/stub_response.rb +30 -0
- data/website/css/common.css +47 -0
- data/website/index.html +73 -0
- metadata +209 -0
@@ -0,0 +1,403 @@
|
|
1
|
+
<statuses type="array">
|
2
|
+
<status>
|
3
|
+
<created_at>Sun Dec 07 00:36:16 +0000 2008</created_at>
|
4
|
+
<id>1042729116</id>
|
5
|
+
<text>@sebbo Outlook not so good</text>
|
6
|
+
<source>web</source>
|
7
|
+
<truncated>false</truncated>
|
8
|
+
<in_reply_to_status_id>1042716367</in_reply_to_status_id>
|
9
|
+
<in_reply_to_user_id>2989541</in_reply_to_user_id>
|
10
|
+
<favorited>false</favorited>
|
11
|
+
<user>
|
12
|
+
<id>17656026</id>
|
13
|
+
<name>Magic 8 Bot</name>
|
14
|
+
<screen_name>magic8bot</screen_name>
|
15
|
+
<description>ask me a question</description>
|
16
|
+
<location></location>
|
17
|
+
<profile_image_url>http://s3.amazonaws.com/twitter_production/profile_images/65565851/8ball_large_normal.jpg</profile_image_url>
|
18
|
+
<url></url>
|
19
|
+
<protected>false</protected>
|
20
|
+
<followers_count>90</followers_count>
|
21
|
+
</user>
|
22
|
+
</status><status>
|
23
|
+
<created_at>Sun Dec 07 00:36:14 +0000 2008</created_at>
|
24
|
+
<id>1042729115</id>
|
25
|
+
<text>Azdel Slade :friends from midian city http://bloghud.com/id/27312</text>
|
26
|
+
<source>web</source>
|
27
|
+
<truncated>false</truncated>
|
28
|
+
<in_reply_to_status_id />
|
29
|
+
<in_reply_to_user_id />
|
30
|
+
<favorited>false</favorited>
|
31
|
+
<user>
|
32
|
+
<id>801094</id>
|
33
|
+
<name>BlogHUD</name>
|
34
|
+
<screen_name>bloghud</screen_name>
|
35
|
+
<description />
|
36
|
+
<location />
|
37
|
+
<profile_image_url>http://s3.amazonaws.com/twitter_production/profile_images/25235272/bloghud_twitter_normal.jpg</profile_image_url>
|
38
|
+
<url />
|
39
|
+
<protected>false</protected>
|
40
|
+
<followers_count>313</followers_count>
|
41
|
+
</user>
|
42
|
+
</status><status>
|
43
|
+
<created_at>Sun Dec 07 00:36:14 +0000 2008</created_at>
|
44
|
+
<id>1042729114</id>
|
45
|
+
<text>Reading: "The Reckoning - Debt Watchdogs - Tamed or Caught Napping? - Series - NYTimes.com" ( http://tinyurl.com/5754s6 )</text>
|
46
|
+
<source>twitthat</source>
|
47
|
+
<truncated>false</truncated>
|
48
|
+
<in_reply_to_status_id />
|
49
|
+
<in_reply_to_user_id />
|
50
|
+
<favorited>false</favorited>
|
51
|
+
<user>
|
52
|
+
<id>3512101</id>
|
53
|
+
<name>bill</name>
|
54
|
+
<screen_name>niubi</screen_name>
|
55
|
+
<description>in beijing learning socialism 2 prepare 4 return 2 us</description>
|
56
|
+
<location>beijing</location>
|
57
|
+
<profile_image_url>http://s3.amazonaws.com/twitter_production/profile_images/53292616/realtwitterers_normal.jpg</profile_image_url>
|
58
|
+
<url></url>
|
59
|
+
<protected>false</protected>
|
60
|
+
<followers_count>710</followers_count>
|
61
|
+
</user>
|
62
|
+
</status><status>
|
63
|
+
<created_at>Sun Dec 07 00:36:14 +0000 2008</created_at>
|
64
|
+
<id>1042729113</id>
|
65
|
+
<text>Fianlly done and headed home!</text>
|
66
|
+
<source>sms</source>
|
67
|
+
<truncated>false</truncated>
|
68
|
+
<in_reply_to_status_id />
|
69
|
+
<in_reply_to_user_id />
|
70
|
+
<favorited>false</favorited>
|
71
|
+
<user>
|
72
|
+
<id>13186842</id>
|
73
|
+
<name>Okthirddayfan</name>
|
74
|
+
<screen_name>Okthirddayfan</screen_name>
|
75
|
+
<description></description>
|
76
|
+
<location>Oklahoma!</location>
|
77
|
+
<profile_image_url>http://s3.amazonaws.com/twitter_production/profile_images/61414367/mecropped_normal.jpg</profile_image_url>
|
78
|
+
<url>http://thirddaypix.blogspot.com/</url>
|
79
|
+
<protected>false</protected>
|
80
|
+
<followers_count>68</followers_count>
|
81
|
+
</user>
|
82
|
+
</status><status>
|
83
|
+
<created_at>Sun Dec 07 00:36:16 +0000 2008</created_at>
|
84
|
+
<id>1042729112</id>
|
85
|
+
<text>Adobe Flashplayer 10 and Debug versions: http://www.adobe.com/support/flashplayer/downloads.html</text>
|
86
|
+
<source>toro</source>
|
87
|
+
<truncated>false</truncated>
|
88
|
+
<in_reply_to_status_id />
|
89
|
+
<in_reply_to_user_id />
|
90
|
+
<favorited>false</favorited>
|
91
|
+
<user>
|
92
|
+
<id>15243380</id>
|
93
|
+
<name>cbrueggenolte</name>
|
94
|
+
<screen_name>cbrueggenolte</screen_name>
|
95
|
+
<description>27, Male, Mac Geek, Developer Java &amp; Flex &amp; Air</description>
|
96
|
+
<location>Aachen</location>
|
97
|
+
<profile_image_url>http://s3.amazonaws.com/twitter_production/profile_images/55929263/214508011845f026bfd407c_normal.jpg</profile_image_url>
|
98
|
+
<url>http://my.opera.com/carstenbrueggenolte</url>
|
99
|
+
<protected>false</protected>
|
100
|
+
<followers_count>16</followers_count>
|
101
|
+
</user>
|
102
|
+
</status><status>
|
103
|
+
<created_at>Sun Dec 07 00:36:14 +0000 2008</created_at>
|
104
|
+
<id>1042729111</id>
|
105
|
+
<text>Done and done.</text>
|
106
|
+
<source>twitterrific</source>
|
107
|
+
<truncated>false</truncated>
|
108
|
+
<in_reply_to_status_id />
|
109
|
+
<in_reply_to_user_id />
|
110
|
+
<favorited>false</favorited>
|
111
|
+
<user>
|
112
|
+
<id>10978752</id>
|
113
|
+
<name>Sergey Safonov</name>
|
114
|
+
<screen_name>iron_Lung</screen_name>
|
115
|
+
<description>I have my fingers in many pies.</description>
|
116
|
+
<location>Moscow</location>
|
117
|
+
<profile_image_url>http://s3.amazonaws.com/twitter_production/profile_images/57841057/eat38_normal.gif</profile_image_url>
|
118
|
+
<url>http://www.flickr.com/photos/iron_Lung</url>
|
119
|
+
<protected>false</protected>
|
120
|
+
<followers_count>11</followers_count>
|
121
|
+
</user>
|
122
|
+
</status><status>
|
123
|
+
<created_at>Sun Dec 07 00:36:14 +0000 2008</created_at>
|
124
|
+
<id>1042729110</id>
|
125
|
+
<text>Veja a tabela de preços do Acquaplay da Tecnisa aqui:http://tinyurl.com/acquaplaypreco</text>
|
126
|
+
<source>web</source>
|
127
|
+
<truncated>false</truncated>
|
128
|
+
<in_reply_to_status_id />
|
129
|
+
<in_reply_to_user_id />
|
130
|
+
<favorited>false</favorited>
|
131
|
+
<user>
|
132
|
+
<id>13735402</id>
|
133
|
+
<name>Tecnisa S.A</name>
|
134
|
+
<screen_name>Tecnisa</screen_name>
|
135
|
+
<description>Mais construtora por m2</description>
|
136
|
+
<location>Faria Lima, 3144 - SP</location>
|
137
|
+
<profile_image_url>http://s3.amazonaws.com/twitter_production/profile_images/56572222/logo_normal.jpg</profile_image_url>
|
138
|
+
<url>http://www.tecnisa.com.br</url>
|
139
|
+
<protected>false</protected>
|
140
|
+
<followers_count>77</followers_count>
|
141
|
+
</user>
|
142
|
+
</status><status>
|
143
|
+
<created_at>Sun Dec 07 00:36:16 +0000 2008</created_at>
|
144
|
+
<id>1042729108</id>
|
145
|
+
<text>devin harris has the flu. always have the memory of jordan scoring 50 on the knicks at the garden with the flu</text>
|
146
|
+
<source>web</source>
|
147
|
+
<truncated>false</truncated>
|
148
|
+
<in_reply_to_status_id />
|
149
|
+
<in_reply_to_user_id />
|
150
|
+
<favorited>false</favorited>
|
151
|
+
<user>
|
152
|
+
<id>17930773</id>
|
153
|
+
<name>24 Seconds to Shoot</name>
|
154
|
+
<screen_name>NBA24sts</screen_name>
|
155
|
+
<description>NBA handicapping insight and analysis.</description>
|
156
|
+
<location>las vegas</location>
|
157
|
+
<profile_image_url>http://s3.amazonaws.com/twitter_production/profile_images/66593862/fresno_normal.jpg</profile_image_url>
|
158
|
+
<url></url>
|
159
|
+
<protected>false</protected>
|
160
|
+
<followers_count>1</followers_count>
|
161
|
+
</user>
|
162
|
+
</status><status>
|
163
|
+
<created_at>Sun Dec 07 00:36:16 +0000 2008</created_at>
|
164
|
+
<id>1042729105</id>
|
165
|
+
<text>At Brandon and Shannon's holiday party..</text>
|
166
|
+
<source>twitterberry</source>
|
167
|
+
<truncated>false</truncated>
|
168
|
+
<in_reply_to_status_id />
|
169
|
+
<in_reply_to_user_id />
|
170
|
+
<favorited>false</favorited>
|
171
|
+
<user>
|
172
|
+
<id>5388602</id>
|
173
|
+
<name>Mike J. (Telligent)</name>
|
174
|
+
<screen_name>mjamrst</screen_name>
|
175
|
+
<description>Video Game Account Manager</description>
|
176
|
+
<location>Palo Alto, CA</location>
|
177
|
+
<profile_image_url>http://s3.amazonaws.com/twitter_production/profile_images/66375174/Thanksgiving_11272008-048_normal.jpg</profile_image_url>
|
178
|
+
<url>http://www.telligent.com</url>
|
179
|
+
<protected>false</protected>
|
180
|
+
<followers_count>225</followers_count>
|
181
|
+
</user>
|
182
|
+
</status><status>
|
183
|
+
<created_at>Sun Dec 07 00:36:13 +0000 2008</created_at>
|
184
|
+
<id>1042729104</id>
|
185
|
+
<text>Xinhua: Forty percent of Australian PM office' staff quit : CANBERRA, Dec. 7 (Xinhua) -- Only.. http://tinyurl.com/5gwotd</text>
|
186
|
+
<source>twitterfeed</source>
|
187
|
+
<truncated>false</truncated>
|
188
|
+
<in_reply_to_status_id />
|
189
|
+
<in_reply_to_user_id />
|
190
|
+
<favorited>false</favorited>
|
191
|
+
<user>
|
192
|
+
<id>11566502</id>
|
193
|
+
<name>Headline News</name>
|
194
|
+
<screen_name>headlinenews</screen_name>
|
195
|
+
<description></description>
|
196
|
+
<location></location>
|
197
|
+
<profile_image_url>http://s3.amazonaws.com/twitter_production/profile_images/41784602/1890_wires_normal.jpg</profile_image_url>
|
198
|
+
<url></url>
|
199
|
+
<protected>false</protected>
|
200
|
+
<followers_count>575</followers_count>
|
201
|
+
</user>
|
202
|
+
</status><status>
|
203
|
+
<created_at>Sun Dec 07 00:36:13 +0000 2008</created_at>
|
204
|
+
<id>1042729101</id>
|
205
|
+
<text>@hilarycassman soo funnny</text>
|
206
|
+
<source>sms</source>
|
207
|
+
<truncated>false</truncated>
|
208
|
+
<in_reply_to_status_id>1042725825</in_reply_to_status_id>
|
209
|
+
<in_reply_to_user_id>17644455</in_reply_to_user_id>
|
210
|
+
<favorited>false</favorited>
|
211
|
+
<user>
|
212
|
+
<id>17887548</id>
|
213
|
+
<name>katieballss</name>
|
214
|
+
<screen_name>katieballss</screen_name>
|
215
|
+
<description></description>
|
216
|
+
<location></location>
|
217
|
+
<profile_image_url>http://s3.amazonaws.com/twitter_production/profile_images/66523737/th_Photo87_normal.jpg</profile_image_url>
|
218
|
+
<url>http://www.myspace.com/xxpeachxx101</url>
|
219
|
+
<protected>false</protected>
|
220
|
+
<followers_count>23</followers_count>
|
221
|
+
</user>
|
222
|
+
</status><status>
|
223
|
+
<created_at>Sun Dec 07 00:36:13 +0000 2008</created_at>
|
224
|
+
<id>1042729100</id>
|
225
|
+
<text>d'ora in poi, oltre al ferragosto, odiera' anche il natale e tutto il mese che ci gira intorno.. =.=''</text>
|
226
|
+
<source>mobile</source>
|
227
|
+
<truncated>false</truncated>
|
228
|
+
<in_reply_to_status_id />
|
229
|
+
<in_reply_to_user_id />
|
230
|
+
<favorited>false</favorited>
|
231
|
+
<user>
|
232
|
+
<id>9719482</id>
|
233
|
+
<name>trotto</name>
|
234
|
+
<screen_name>trotto</screen_name>
|
235
|
+
<description>sociologo di formazione... uno dei tanti attivisti! :)</description>
|
236
|
+
<location>Fano - Italy</location>
|
237
|
+
<profile_image_url>http://s3.amazonaws.com/twitter_production/profile_images/55603933/mybob-calimetux-1526_normal.png</profile_image_url>
|
238
|
+
<url>http://trotto1308.netsons.org/wordpress/</url>
|
239
|
+
<protected>false</protected>
|
240
|
+
<followers_count>98</followers_count>
|
241
|
+
</user>
|
242
|
+
</status><status>
|
243
|
+
<created_at>Sun Dec 07 00:36:13 +0000 2008</created_at>
|
244
|
+
<id>1042729099</id>
|
245
|
+
<text>Came across an ad on another site with a redneck looking santa... said "Bust Santa's zit and win a free ipod." Umm... disturbing much?</text>
|
246
|
+
<source>web</source>
|
247
|
+
<truncated>false</truncated>
|
248
|
+
<in_reply_to_status_id />
|
249
|
+
<in_reply_to_user_id />
|
250
|
+
<favorited>false</favorited>
|
251
|
+
<user>
|
252
|
+
<id>9937182</id>
|
253
|
+
<name>froggybluesock</name>
|
254
|
+
<screen_name>froggybluesock</screen_name>
|
255
|
+
<description></description>
|
256
|
+
<location>Indiana</location>
|
257
|
+
<profile_image_url>http://s3.amazonaws.com/twitter_production/profile_images/35393032/about_me_normal.jpg</profile_image_url>
|
258
|
+
<url>http://www.footprintsonthemoon.com</url>
|
259
|
+
<protected>false</protected>
|
260
|
+
<followers_count>82</followers_count>
|
261
|
+
</user>
|
262
|
+
</status><status>
|
263
|
+
<created_at>Sun Dec 07 00:36:17 +0000 2008</created_at>
|
264
|
+
<id>1042729098</id>
|
265
|
+
<text>nothing</text>
|
266
|
+
<source>web</source>
|
267
|
+
<truncated>false</truncated>
|
268
|
+
<in_reply_to_status_id />
|
269
|
+
<in_reply_to_user_id />
|
270
|
+
<favorited>false</favorited>
|
271
|
+
<user>
|
272
|
+
<id>17932339</id>
|
273
|
+
<name>treblehook</name>
|
274
|
+
<screen_name>treblehook</screen_name>
|
275
|
+
<description />
|
276
|
+
<location />
|
277
|
+
<profile_image_url>http://static.twitter.com/images/default_profile_normal.png</profile_image_url>
|
278
|
+
<url />
|
279
|
+
<protected>false</protected>
|
280
|
+
<followers_count>0</followers_count>
|
281
|
+
</user>
|
282
|
+
</status><status>
|
283
|
+
<created_at>Sun Dec 07 00:36:13 +0000 2008</created_at>
|
284
|
+
<id>1042729095</id>
|
285
|
+
<text>Setting up my new Windows Live profile</text>
|
286
|
+
<source>web</source>
|
287
|
+
<truncated>false</truncated>
|
288
|
+
<in_reply_to_status_id />
|
289
|
+
<in_reply_to_user_id />
|
290
|
+
<favorited>false</favorited>
|
291
|
+
<user>
|
292
|
+
<id>17906075</id>
|
293
|
+
<name>Mark_Layton</name>
|
294
|
+
<screen_name>Mark_Layton</screen_name>
|
295
|
+
<description />
|
296
|
+
<location />
|
297
|
+
<profile_image_url>http://static.twitter.com/images/default_profile_normal.png</profile_image_url>
|
298
|
+
<url />
|
299
|
+
<protected>false</protected>
|
300
|
+
<followers_count>2</followers_count>
|
301
|
+
</user>
|
302
|
+
</status><status>
|
303
|
+
<created_at>Sun Dec 07 00:36:13 +0000 2008</created_at>
|
304
|
+
<id>1042729092</id>
|
305
|
+
<text>me voy a sobar, a ver si mañana estoy mejor, wenas noches a tod@s</text>
|
306
|
+
<source>web</source>
|
307
|
+
<truncated>false</truncated>
|
308
|
+
<in_reply_to_status_id />
|
309
|
+
<in_reply_to_user_id />
|
310
|
+
<favorited>false</favorited>
|
311
|
+
<user>
|
312
|
+
<id>14062655</id>
|
313
|
+
<name>tmaniak</name>
|
314
|
+
<screen_name>tmaniak</screen_name>
|
315
|
+
<description></description>
|
316
|
+
<location></location>
|
317
|
+
<profile_image_url>http://s3.amazonaws.com/twitter_production/profile_images/51680481/BF-109_normal.jpg</profile_image_url>
|
318
|
+
<url>http://dhost.info/tmaniak</url>
|
319
|
+
<protected>false</protected>
|
320
|
+
<followers_count>10</followers_count>
|
321
|
+
</user>
|
322
|
+
</status><status>
|
323
|
+
<created_at>Sun Dec 07 00:36:14 +0000 2008</created_at>
|
324
|
+
<id>1042729090</id>
|
325
|
+
<text>バイト延長戦入りましたー 店長が遅刻ってどうなんだ。しかも何回も</text>
|
326
|
+
<source>natsuliphone</source>
|
327
|
+
<truncated>false</truncated>
|
328
|
+
<in_reply_to_status_id />
|
329
|
+
<in_reply_to_user_id />
|
330
|
+
<favorited>false</favorited>
|
331
|
+
<user>
|
332
|
+
<id>15618846</id>
|
333
|
+
<name>kabayaki</name>
|
334
|
+
<screen_name>kabayaki</screen_name>
|
335
|
+
<description>FPS(L4D、TF2、CS:S、BF)、TPS、RCG、マンガ、アニメ、デジモノが好きなとある学生</description>
|
336
|
+
<location>tokyo</location>
|
337
|
+
<profile_image_url>http://s3.amazonaws.com/twitter_production/profile_images/57305902/184_normal.jpg</profile_image_url>
|
338
|
+
<url>http://kabayakiya.blog43.fc2.com/</url>
|
339
|
+
<protected>false</protected>
|
340
|
+
<followers_count>20</followers_count>
|
341
|
+
</user>
|
342
|
+
</status><status>
|
343
|
+
<created_at>Sun Dec 07 00:36:13 +0000 2008</created_at>
|
344
|
+
<id>1042729089</id>
|
345
|
+
<text>just drove to southern california and joy of children hugging grandparents made it all worthwhile. heading to imedia in la quinta tomorrow.</text>
|
346
|
+
<source>web</source>
|
347
|
+
<truncated>false</truncated>
|
348
|
+
<in_reply_to_status_id />
|
349
|
+
<in_reply_to_user_id />
|
350
|
+
<favorited>false</favorited>
|
351
|
+
<user>
|
352
|
+
<id>1630261</id>
|
353
|
+
<name>mark silva</name>
|
354
|
+
<screen_name>marksilva</screen_name>
|
355
|
+
<description>digital media http://realbranding.com Principal, Managing Director</description>
|
356
|
+
<location>often san francisco</location>
|
357
|
+
<profile_image_url>http://s3.amazonaws.com/twitter_production/profile_images/29807902/silvasimpson3th_normal.jpg</profile_image_url>
|
358
|
+
<url>http://marksilva.com</url>
|
359
|
+
<protected>false</protected>
|
360
|
+
<followers_count>497</followers_count>
|
361
|
+
</user>
|
362
|
+
</status><status>
|
363
|
+
<created_at>Sun Dec 07 00:36:14 +0000 2008</created_at>
|
364
|
+
<id>1042729088</id>
|
365
|
+
<text>@wholefoods would love to have a juicebar in one of your cambridge or boston locations</text>
|
366
|
+
<source>web</source>
|
367
|
+
<truncated>false</truncated>
|
368
|
+
<in_reply_to_status_id>1041125103</in_reply_to_status_id>
|
369
|
+
<in_reply_to_user_id>15131310</in_reply_to_user_id>
|
370
|
+
<favorited>false</favorited>
|
371
|
+
<user>
|
372
|
+
<id>15856582</id>
|
373
|
+
<name>Maura McGovern</name>
|
374
|
+
<screen_name>mmcgovern</screen_name>
|
375
|
+
<description>photographer with a day job in venture capital; obsessed with design blogs, long walks, yoga, social networking, people watching. tea and music are essential!</description>
|
376
|
+
<location>Boston</location>
|
377
|
+
<profile_image_url>http://s3.amazonaws.com/twitter_production/profile_images/66110383/DSCN1740_normal.JPG</profile_image_url>
|
378
|
+
<url>http://lefteyephotography.blogspot.com</url>
|
379
|
+
<protected>false</protected>
|
380
|
+
<followers_count>244</followers_count>
|
381
|
+
</user>
|
382
|
+
</status><status>
|
383
|
+
<created_at>Sun Dec 07 00:36:15 +0000 2008</created_at>
|
384
|
+
<id>1042729087</id>
|
385
|
+
<text>Going over the Advent lists.</text>
|
386
|
+
<source>web</source>
|
387
|
+
<truncated>false</truncated>
|
388
|
+
<in_reply_to_status_id />
|
389
|
+
<in_reply_to_user_id />
|
390
|
+
<favorited>false</favorited>
|
391
|
+
<user>
|
392
|
+
<id>17122107</id>
|
393
|
+
<name>gsusan</name>
|
394
|
+
<screen_name>gsusan</screen_name>
|
395
|
+
<description>US American writer/sister/daughter/aunt/woman from New England living in SoCal.</description>
|
396
|
+
<location>San Diego, CA USA</location>
|
397
|
+
<profile_image_url>http://s3.amazonaws.com/twitter_production/profile_images/63951854/susan_ocracoke_normal.jpg</profile_image_url>
|
398
|
+
<url></url>
|
399
|
+
<protected>false</protected>
|
400
|
+
<followers_count>6</followers_count>
|
401
|
+
</user>
|
402
|
+
</status>
|
403
|
+
</statuses>
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '../spec_helper'))
|
2
|
+
|
3
|
+
describe HTTParty::CookieHash do
|
4
|
+
before(:each) do
|
5
|
+
@cookie_hash = HTTParty::CookieHash.new
|
6
|
+
end
|
7
|
+
|
8
|
+
describe "#add_cookies" do
|
9
|
+
|
10
|
+
describe "with a hash" do
|
11
|
+
it "should add new key/value pairs to the hash" do
|
12
|
+
@cookie_hash.add_cookies(:foo => "bar")
|
13
|
+
@cookie_hash.add_cookies(:rofl => "copter")
|
14
|
+
@cookie_hash.length.should eql(2)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should overwrite any existing key" do
|
18
|
+
@cookie_hash.add_cookies(:foo => "bar")
|
19
|
+
@cookie_hash.add_cookies(:foo => "copter")
|
20
|
+
@cookie_hash.length.should eql(1)
|
21
|
+
@cookie_hash[:foo].should eql("copter")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "with a string" do
|
26
|
+
it "should add new key/value pairs to the hash" do
|
27
|
+
@cookie_hash.add_cookies("first=one; second=two; third")
|
28
|
+
@cookie_hash[:first].should == 'one'
|
29
|
+
@cookie_hash[:second].should == 'two'
|
30
|
+
@cookie_hash[:third].should == nil
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should overwrite any existing key" do
|
34
|
+
@cookie_hash[:foo] = 'bar'
|
35
|
+
@cookie_hash.add_cookies("foo=tar")
|
36
|
+
@cookie_hash.length.should eql(1)
|
37
|
+
@cookie_hash[:foo].should eql("tar")
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe 'with other class' do
|
42
|
+
it "should error" do
|
43
|
+
lambda {
|
44
|
+
@cookie_hash.add_cookies(Array.new)
|
45
|
+
}.should raise_error
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# The regexen are required because Hashes aren't ordered, so a test against
|
51
|
+
# a hardcoded string was randomly failing.
|
52
|
+
describe "#to_cookie_string" do
|
53
|
+
before(:each) do
|
54
|
+
@cookie_hash.add_cookies(:foo => "bar")
|
55
|
+
@cookie_hash.add_cookies(:rofl => "copter")
|
56
|
+
@s = @cookie_hash.to_cookie_string
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should format the key/value pairs, delimited by semi-colons" do
|
60
|
+
@s.should match(/foo=bar/)
|
61
|
+
@s.should match(/rofl=copter/)
|
62
|
+
@s.should match(/^\w+=\w+; \w+=\w+$/)
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should not include client side only cookies" do
|
66
|
+
@cookie_hash.add_cookies(:path => "/")
|
67
|
+
@s = @cookie_hash.to_cookie_string
|
68
|
+
@s.should_not match(/path=\//)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,154 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
|
2
|
+
|
3
|
+
class CustomParser < HTTParty::Parser; end
|
4
|
+
|
5
|
+
describe HTTParty::Parser do
|
6
|
+
describe ".SupportedFormats" do
|
7
|
+
it "returns a hash" do
|
8
|
+
HTTParty::Parser::SupportedFormats.should be_instance_of(Hash)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe ".call" do
|
13
|
+
it "generates an HTTParty::Parser instance with the given body and format" do
|
14
|
+
HTTParty::Parser.should_receive(:new).with('body', :plain).and_return(stub(:parse => nil))
|
15
|
+
HTTParty::Parser.call('body', :plain)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "calls #parse on the parser" do
|
19
|
+
parser = mock('Parser')
|
20
|
+
parser.should_receive(:parse)
|
21
|
+
HTTParty::Parser.stub(:new => parser)
|
22
|
+
parser = HTTParty::Parser.call('body', :plain)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe ".formats" do
|
27
|
+
it "returns the SupportedFormats constant" do
|
28
|
+
HTTParty::Parser.formats.should == HTTParty::Parser::SupportedFormats
|
29
|
+
end
|
30
|
+
|
31
|
+
it "returns the SupportedFormats constant for subclasses" do
|
32
|
+
class MyParser < HTTParty::Parser
|
33
|
+
SupportedFormats = {"application/atom+xml" => :atom}
|
34
|
+
end
|
35
|
+
MyParser.formats.should == {"application/atom+xml" => :atom}
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe ".format_from_mimetype" do
|
40
|
+
it "returns a symbol representing the format mimetype" do
|
41
|
+
HTTParty::Parser.format_from_mimetype("text/plain").should == :plain
|
42
|
+
end
|
43
|
+
|
44
|
+
it "returns nil when the mimetype is not supported" do
|
45
|
+
HTTParty::Parser.format_from_mimetype("application/atom+xml").should be_nil
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe ".supported_formats" do
|
50
|
+
it "returns a unique set of supported formats represented by symbols" do
|
51
|
+
HTTParty::Parser.supported_formats.should == HTTParty::Parser::SupportedFormats.values.uniq
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe ".supports_format?" do
|
56
|
+
it "returns true for a supported format" do
|
57
|
+
HTTParty::Parser.stub(:supported_formats => [:json])
|
58
|
+
HTTParty::Parser.supports_format?(:json).should be_true
|
59
|
+
end
|
60
|
+
|
61
|
+
it "returns false for an unsupported format" do
|
62
|
+
HTTParty::Parser.stub(:supported_formats => [])
|
63
|
+
HTTParty::Parser.supports_format?(:json).should be_false
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
describe "#parse" do
|
68
|
+
before do
|
69
|
+
@parser = HTTParty::Parser.new('body', :json)
|
70
|
+
end
|
71
|
+
|
72
|
+
it "attempts to parse supported formats" do
|
73
|
+
@parser.stub(:supports_format? => true)
|
74
|
+
@parser.should_receive(:parse_supported_format)
|
75
|
+
@parser.parse
|
76
|
+
end
|
77
|
+
|
78
|
+
it "returns the unparsed body when the format is unsupported" do
|
79
|
+
@parser.stub(:supports_format? => false)
|
80
|
+
@parser.parse.should == @parser.body
|
81
|
+
end
|
82
|
+
|
83
|
+
it "returns nil for an empty body" do
|
84
|
+
@parser.stub(:body => '')
|
85
|
+
@parser.parse.should be_nil
|
86
|
+
end
|
87
|
+
|
88
|
+
it "returns nil for a nil body" do
|
89
|
+
@parser.stub(:body => nil)
|
90
|
+
@parser.parse.should be_nil
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
describe "#supports_format?" do
|
95
|
+
it "utilizes the class method to determine if the format is supported" do
|
96
|
+
HTTParty::Parser.should_receive(:supports_format?).with(:json)
|
97
|
+
parser = HTTParty::Parser.new('body', :json)
|
98
|
+
parser.send(:supports_format?)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
describe "#parse_supported_format" do
|
103
|
+
it "calls the parser for the given format" do
|
104
|
+
parser = HTTParty::Parser.new('body', :json)
|
105
|
+
parser.should_receive(:json)
|
106
|
+
parser.send(:parse_supported_format)
|
107
|
+
end
|
108
|
+
|
109
|
+
context "when a parsing method does not exist for the given format" do
|
110
|
+
it "raises an exception" do
|
111
|
+
parser = HTTParty::Parser.new('body', :atom)
|
112
|
+
expect do
|
113
|
+
parser.send(:parse_supported_format)
|
114
|
+
end.to raise_error(NotImplementedError, "HTTParty::Parser has not implemented a parsing method for the :atom format.")
|
115
|
+
end
|
116
|
+
|
117
|
+
it "raises a useful exception message for subclasses" do
|
118
|
+
parser = CustomParser.new('body', :atom)
|
119
|
+
expect do
|
120
|
+
parser.send(:parse_supported_format)
|
121
|
+
end.to raise_error(NotImplementedError, "CustomParser has not implemented a parsing method for the :atom format.")
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
context "parsers" do
|
127
|
+
subject do
|
128
|
+
HTTParty::Parser.new('body', nil)
|
129
|
+
end
|
130
|
+
|
131
|
+
it "parses xml with Crack" do
|
132
|
+
Crack::XML.should_receive(:parse).with('body')
|
133
|
+
subject.send(:xml)
|
134
|
+
end
|
135
|
+
|
136
|
+
it "parses json with Crack" do
|
137
|
+
Crack::JSON.should_receive(:parse).with('body')
|
138
|
+
subject.send(:json)
|
139
|
+
end
|
140
|
+
|
141
|
+
it "parses yaml" do
|
142
|
+
YAML.should_receive(:load).with('body')
|
143
|
+
subject.send(:yaml)
|
144
|
+
end
|
145
|
+
|
146
|
+
it "parses html by simply returning the body" do
|
147
|
+
subject.send(:html).should == 'body'
|
148
|
+
end
|
149
|
+
|
150
|
+
it "parses plain text by simply returning the body" do
|
151
|
+
subject.send(:plain).should == 'body'
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|