unwind 0.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.
- checksums.yaml +7 -0
- data/.gitignore +5 -0
- data/Gemfile +4 -0
- data/Rakefile +8 -0
- data/Readme.md +25 -0
- data/example/sample.rb +9 -0
- data/lib/unwind/version.rb +3 -0
- data/lib/unwind.rb +188 -0
- data/test/redirect_follower_test.rb +129 -0
- data/unwind.gemspec +32 -0
- data/vcr_cassettes/amazon.yml +6862 -0
- data/vcr_cassettes/canonical_url.yml +506 -0
- data/vcr_cassettes/meta_refresh.yml +169 -0
- data/vcr_cassettes/missing_redirect.yml +46 -0
- data/vcr_cassettes/no_redirect.yml +859 -0
- data/vcr_cassettes/pdf.yml +140 -0
- data/vcr_cassettes/relative_canonical_url.yml +1210 -0
- data/vcr_cassettes/relative_meta_refresh.yml +1905 -0
- data/vcr_cassettes/relative_stackoverflow.yml +1630 -0
- data/vcr_cassettes/relative_stackoverflow_2.yml +2245 -0
- data/vcr_cassettes/ssl_tpope.yml +1363 -0
- data/vcr_cassettes/with_cookie.yml +1667 -0
- data/vcr_cassettes/xZVND1.yml +361 -0
- metadata +138 -0
@@ -0,0 +1,361 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://j.mp/xZVND1
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept-Encoding:
|
11
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
12
|
+
- none
|
13
|
+
Accept:
|
14
|
+
- "*/*"
|
15
|
+
User-Agent:
|
16
|
+
- Ruby
|
17
|
+
Host:
|
18
|
+
- j.mp
|
19
|
+
response:
|
20
|
+
status:
|
21
|
+
code: 301
|
22
|
+
message: Moved
|
23
|
+
headers:
|
24
|
+
Server:
|
25
|
+
- nginx
|
26
|
+
Date:
|
27
|
+
- Tue, 28 Jan 2014 05:45:13 GMT
|
28
|
+
Content-Type:
|
29
|
+
- text/html; charset=utf-8
|
30
|
+
Connection:
|
31
|
+
- keep-alive
|
32
|
+
Set-Cookie:
|
33
|
+
- _bit=52e743e9-00127-05f3a-431cf10a;domain=.j.mp;expires=Sun Jul 27 05:45:13
|
34
|
+
2014;path=/; HttpOnly
|
35
|
+
Cache-Control:
|
36
|
+
- private; max-age=90
|
37
|
+
Location:
|
38
|
+
- http://t.co/8AEDlX2P
|
39
|
+
Mime-Version:
|
40
|
+
- '1.0'
|
41
|
+
Content-Length:
|
42
|
+
- '112'
|
43
|
+
body:
|
44
|
+
encoding: UTF-8
|
45
|
+
string: |-
|
46
|
+
<html>
|
47
|
+
<head>
|
48
|
+
<title>bit.ly</title>
|
49
|
+
</head>
|
50
|
+
<body>
|
51
|
+
<a href="http://t.co/8AEDlX2P">moved here</a>
|
52
|
+
</body>
|
53
|
+
</html>
|
54
|
+
http_version:
|
55
|
+
recorded_at: Tue, 28 Jan 2014 05:45:13 GMT
|
56
|
+
- request:
|
57
|
+
method: get
|
58
|
+
uri: http://t.co/8AEDlX2P
|
59
|
+
body:
|
60
|
+
encoding: US-ASCII
|
61
|
+
string: ''
|
62
|
+
headers:
|
63
|
+
Accept-Encoding:
|
64
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
65
|
+
- none
|
66
|
+
Accept:
|
67
|
+
- "*/*"
|
68
|
+
User-Agent:
|
69
|
+
- Ruby
|
70
|
+
Host:
|
71
|
+
- t.co
|
72
|
+
response:
|
73
|
+
status:
|
74
|
+
code: 301
|
75
|
+
message: Moved Permanently
|
76
|
+
headers:
|
77
|
+
Cache-Control:
|
78
|
+
- private,max-age=300
|
79
|
+
Content-Length:
|
80
|
+
- '0'
|
81
|
+
Date:
|
82
|
+
- Tue, 28 Jan 2014 05:45:14 GMT
|
83
|
+
Expires:
|
84
|
+
- Thu, 01-Jan-1970 00:00:00 GMT
|
85
|
+
Location:
|
86
|
+
- http://ow.ly/i/s1O0
|
87
|
+
Server:
|
88
|
+
- tfe
|
89
|
+
Set-Cookie:
|
90
|
+
- muc=1;Domain=t.co;Expires=Sun, 10-Jan-2016 05:45:14 GMT
|
91
|
+
body:
|
92
|
+
encoding: UTF-8
|
93
|
+
string: ''
|
94
|
+
http_version:
|
95
|
+
recorded_at: Tue, 28 Jan 2014 05:45:14 GMT
|
96
|
+
- request:
|
97
|
+
method: get
|
98
|
+
uri: http://ow.ly/i/s1O0
|
99
|
+
body:
|
100
|
+
encoding: US-ASCII
|
101
|
+
string: ''
|
102
|
+
headers:
|
103
|
+
Accept-Encoding:
|
104
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
105
|
+
- none
|
106
|
+
Accept:
|
107
|
+
- "*/*"
|
108
|
+
User-Agent:
|
109
|
+
- Ruby
|
110
|
+
Host:
|
111
|
+
- ow.ly
|
112
|
+
response:
|
113
|
+
status:
|
114
|
+
code: 200
|
115
|
+
message: OK
|
116
|
+
headers:
|
117
|
+
Date:
|
118
|
+
- Tue, 28 Jan 2014 05:45:14 GMT
|
119
|
+
Server:
|
120
|
+
- Apache/2.2.14 (Ubuntu)
|
121
|
+
X-Powered-By:
|
122
|
+
- PHP/5.3.2-1ubuntu4.22
|
123
|
+
Set-Cookie:
|
124
|
+
- OWLYSID=c8e1262b399c9151a80b68eafbd7bebf92540edd; path=/
|
125
|
+
Expires:
|
126
|
+
- Thu, 19 Nov 1981 08:52:00 GMT
|
127
|
+
Cache-Control:
|
128
|
+
- no-store, no-cache, must-revalidate, post-check=0, pre-check=0
|
129
|
+
Pragma:
|
130
|
+
- no-cache
|
131
|
+
X-Gridnum:
|
132
|
+
- '37'
|
133
|
+
Vary:
|
134
|
+
- Accept-Encoding
|
135
|
+
Content-Length:
|
136
|
+
- '5250'
|
137
|
+
Connection:
|
138
|
+
- close
|
139
|
+
Content-Type:
|
140
|
+
- text/html
|
141
|
+
body:
|
142
|
+
encoding: UTF-8
|
143
|
+
string: "<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\"
|
144
|
+
lang=\"en\">\r\n<head prefix=\"og: http://ogp.me/ns# fb: http://ogp.me/ns/fb#
|
145
|
+
\ website: http://ogp.me/ns/website#\">\r\n\t<meta http-equiv=\"Content-Type\"
|
146
|
+
content=\"text/html; charset=utf-8\" />\r\n\t<title>Ow.ly - image uploaded
|
147
|
+
by @JZJewelry </title>\r\n\t<meta name=\"keywords\" content=\"Ow.ly, Shorten
|
148
|
+
urls, share files, track visits, twitter file sharing, twitter image sharing,
|
149
|
+
tweet comments\" />\r\n\t\t\t<meta name=\"description\" content=\"\" />\r\n\r\n\t\r\n\t\t\r\n\t\t<meta
|
150
|
+
name=\"twitter:card\" content=\"photo\">\r\n\t\t<meta name=\"twitter:site\"
|
151
|
+
content=\"\">\r\n\t\t<meta name=\"twitter:site:id\" content=\"\">\r\n\t\t<meta
|
152
|
+
name=\"twitter:creator\" content=\"\">\r\n\t\t<meta name=\"twitter:title\"
|
153
|
+
content=\"\">\r\n\r\n\t\t<meta name=\"twitter:app:name:iphone\" content=\"HootSuite\"/>\r\n\t\t<meta
|
154
|
+
name=\"twitter:app:id:iphone\" content=\"341249709\"/>\r\n\t\t<meta name=\"twitter:app:name:ipad\"
|
155
|
+
content=\"HootSuite\"/>\r\n\t\t<meta name=\"twitter:app:id:ipad\" content=\"341249709\"/>\r\n\t\t<meta
|
156
|
+
name=\"twitter:app:name:googleplay\" content=\"HootSuite\"/>\r\n\t\t<meta
|
157
|
+
name=\"twitter:app:id:googleplay\" content=\"com.hootsuite.droid.full\"/>\r\n\r\n\t\t<meta
|
158
|
+
property=\"fb:app_id\" content=\"183319479511\"> \t\t<meta property=\"og:type\"
|
159
|
+
content=\"article\">\r\n\t\t<meta property=\"og:url\" content=\"http://ow.ly/i/s1O0\">\r\n\t\t<meta
|
160
|
+
property=\"og:image\" content=\"http://static.ow.ly/photos/original/s1O0.png\">\r\n\t\t<meta
|
161
|
+
property=\"og:title\" content=\"Ow.ly - image uploaded by @JZJewelry \">\r\n\t\t<meta
|
162
|
+
property=\"og:description\" content=\"\">\r\n\t\t\t\t\t<meta property=\"og:image:width\"
|
163
|
+
content=\"327\">\r\n\t\t\t<meta property=\"og:image:height\" content=\"366\">\r\n\t\t
|
164
|
+
\ \r\n\t\t\t\t\t\t<link href=\"http://static.ow.ly/4-9-34/css/owly.gz.css\"
|
165
|
+
type=\"text/css\" rel=\"stylesheet\" />\r\n\t\t\t\t<!--[if lt IE 7]>\r\n\t<link
|
166
|
+
rel=\"stylesheet\" type=\"text/css\" href=\"http://static.ow.ly/4-9-34/css/ie6.css\"
|
167
|
+
/>\r\n\t<![endif]-->\r\n\t<!--[if IE 7]>\r\n\t<link rel=\"stylesheet\" type=\"text/css\"
|
168
|
+
href=\"http://static.ow.ly/4-9-34/css/ie7.css\" />\r\n\t<![endif]-->\r\n\r\n\t\n<script
|
169
|
+
type=\"text/javascript\">\n\tvar owly = new Object();\n\towly.c = new Object();\n\towly.c.rootUrl
|
170
|
+
= \"http://ow.ly\";\n\towly.c.photoRootUrl = \"http://static.ow.ly/photos\";\n\towly.c.swfUrl
|
171
|
+
= \"http://static.ow.ly/4-9-34/swf\";\n</script>\n\n<script type='text/javascript'>\n\tvar
|
172
|
+
googletag = googletag || {};\n\tgoogletag.cmd = googletag.cmd || [];\n\t(function()
|
173
|
+
{\n\t\tvar gads = document.createElement('script');\n\t\tgads.async = true;\n\t\tgads.type
|
174
|
+
= 'text/javascript';\n\t\tvar useSSL = 'https:' == document.location.protocol;\n\t\tgads.src
|
175
|
+
= (useSSL ? 'https:' : 'http:') + '//www.googletagservices.com/tag/js/gpt.js';\n\t\tvar
|
176
|
+
node = document.getElementsByTagName('script')[0];\n\t\tnode.parentNode.insertBefore(gads,
|
177
|
+
node);\n\t})();\n\t\n\tgoogletag.cmd.push(function() {\n\t\tgoogletag.defineSlot('/5280035/OwlyImagesBanner',
|
178
|
+
[300, 250], 'div-gpt-ad-1329423447822-0').addService(googletag.pubads());\n\t\tgoogletag.pubads().enableSingleRequest();\n\t\tgoogletag.enableServices();\n\t});\n</script>\n\n\t\t\t<script
|
179
|
+
type=\"text/javascript\" src=\"http://static.ow.ly/4-9-34/js/owly.gz.js\"></script>\n\t\r\n\t<link
|
180
|
+
rel=\"shortcut icon\" href=\"http://static.ow.ly/4-9-34/images/favicon.ico\"
|
181
|
+
/>\r\n\t<link rel=\"apple-touch-icon\" href=\"http://static.ow.ly/4-9-34/images/apple-touch-icon.png\"/>\r\n\t<script
|
182
|
+
src=\"//cdn.optimizely.com/js/196974338.js\"></script>\r\n</head>\r\n\r\n\r\n<body>\r\n<div
|
183
|
+
id=\"statusContainer\" style=\"display: none;\">\r\n\t<div class=\"y-n\">\r\n\t\t<span
|
184
|
+
class=\"cn-3\">\r\n\t\t\t<span class=\"tl\"><!-- --></span>\r\n\t\t\t<span
|
185
|
+
class=\"tc\"><!-- --></span>\r\n\t\t\t<span class=\"tr\"><!-- --></span>\r\n\t\t\t<span
|
186
|
+
class=\"ml\"><!-- --></span>\r\n\t\t\t<span class=\"mr\"><!-- --></span>\r\n\t\t\t<span
|
187
|
+
class=\"bl\"><!-- --></span>\r\n\t\t\t<span class=\"bc\"><!-- --></span>\r\n\t\t\t<span
|
188
|
+
class=\"br\"><!-- --></span>\r\n\t\t</span>\r\n\t\t<span class=\"_statusMsgContent\"></span>\r\n\t</div>\r\n</div>\r\n\r\n<div
|
189
|
+
id=\"wrapper\">\r\n\t<div id=\"header\">\r\n\t\t<h1 class=\"logo\"><a href=\"http://ow.ly\">Owly</a></h1>\r\n\t\t<div
|
190
|
+
id=\"globalNav\">\r\n\t\t\t\t\t\t\t\t\t\t<span id=\"btnLogin\" class=\"_twitterConnect
|
191
|
+
btn-sta\" typename=\"twitter\">\r\n\t\t\t\t\t<span class=\"icon-sn-16 twitter\"></span> <span
|
192
|
+
class=\"btn-text\">Sign in with Twitter</span>\r\n\t\t\t\t</span>\r\n\t\t\t\t<input
|
193
|
+
type=\"hidden\" id=\"loggedIn\" value=\"0\" />\r\n\t\t\t\t<input type=\"hidden\"
|
194
|
+
id=\"loggedInTwitterAccountId\" value=\"-1\" />\r\n\t\t\t\t\t</div>\r\n\t</div>\r\n\r\n\t<div
|
195
|
+
id=\"page\">\r\n\t\t<div id=\"primary\">\r\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"box
|
196
|
+
mediaBox last\">\r\n\t\t\t<div id=\"bar\">\r\n\t<div id=\"tools\">\r\n\t<!--<img
|
197
|
+
src=\"http://static.ow.ly/4-9-34/images/load.gif\" id=\"throbber\" />-->\r\n\t\t<a
|
198
|
+
href=\"#comments\" class=\"_localScroll _actionbarComment btn-sta comments\">\r\n\t\t\t<span
|
199
|
+
class=\"icon-19\"></span> <strong class=\"btn-text\">Comments</strong>
|
200
|
+
(<span class=\"_actionbarCommentCount\">...</span>)\r\n\t\t</a>\r\n\t\t<span
|
201
|
+
class=\"btn-sta\" onclick=\"expandBar('photo', 'panel-retweet',291);\">\r\n\t\t\t<span
|
202
|
+
class=\"icon-sn-16 twitter\"></span> <strong class=\"btn-text\">Tweet</strong>\r\n\t\t</span>\r\n\t\t<a
|
203
|
+
class=\"btn-sta share\" href=\"#\" title=\"Bookmark and Share\" onclick=\"expandBar('photo',
|
204
|
+
'panel-share',291); return false;\">\r\n\t\t\t<span class=\"icon-19\"></span> <strong
|
205
|
+
class=\"btn-text\">Share</strong>\r\n\t\t</a>\r\n\t\t \r\n\t\t<span
|
206
|
+
class=\"rate\"><a class=\"icon rateUp\" href=\"#\" onclick=\"fileScoreClick('photo',
|
207
|
+
'6680128', 'up');return false;\"><span class=\"icon-19\"></span></a><a class=\"icon
|
208
|
+
rateDown\" href=\"#\" onclick=\"fileScoreClick('photo', '6680128', 'down');return
|
209
|
+
false;\"><span class=\"icon-19\"></span></a>\r\n\t\t\t<strong>Rate </strong><span
|
210
|
+
class=\"score\" id=\"fileScoreRatingNumber\">(<em>+1</em>)</span>\r\n\t\t</span>\r\n\t\t \r\n\t\t\t\t\t<!--
|
211
|
+
View Original is Photo only -->\r\n\t\t\t<a class=\"btn-sta magnify\" href=\"http://ow.ly/i/s1O0/original\"
|
212
|
+
title=\"View Original Size\">\r\n\t\t\t\t<span class=\"icon-19\"></span> <strong
|
213
|
+
class=\"btn-text\">Original Size</strong>\r\n\t\t\t</a>\r\n\t\t\t</div>\r\n</div>\r\n\r\n<input
|
214
|
+
id=\"shortUrl\" type=\"hidden\" value=\"http://ow.ly/i/s1O0\" />\r\n<input
|
215
|
+
id=\"hash\" type=\"hidden\" value=\"s1O0\" />\r\n<input id=\"defaultContent\"
|
216
|
+
type=\"hidden\" value=\"RT @JZJewelry: Screen shot 2012-02-09 at 4.54.43 AM.png
|
217
|
+
http://ow.ly/i/s1O0\" />\r\n<input id=\"username\" type=\"hidden\" value=\"JZJewelry\"
|
218
|
+
/>\r\n\r\n<div id=\"panels\"></div>\r\n\r\n<script src=\"http://cdn.gigya.com/wildfire/js/wfapiv2.js\"></script>
|
219
|
+
\ <div class=\"imageWrapper\">\r\n \t<a href=\"http://ow.ly/i/s1O0/original\"
|
220
|
+
title=\"View original size\">\r\n <img src=\"http://static.ow.ly/photos/normal/s1O0.jpg\"
|
221
|
+
alt=\"Screen shot 2012-02-09 at 4.54.43 AM.png\" />\r\n </a>\r\n
|
222
|
+
\ </div>\r\n <div class=\"caption _tweetContent\">\r\n\t\t\t\t\t\t
|
223
|
+
\ </div>\r\n </div>\r\n<div class=\"mediaCredit\">\r\n <span class=\"icon
|
224
|
+
arrow-down\"><span class=\"icon-19\"></span></span>\r\n\t<a class=\"icon-plus
|
225
|
+
flag _flagPhoto\" href=\"#flagPhoto\"> <span class=\"icon-12\"></span>Report
|
226
|
+
Abuse</a>\r\n <div class=\"avatar-48\">\r\n \t<a class=\"border\" href=\"http://ow.ly/user/JZJewelry\"
|
227
|
+
title=\"JZJewelry\">\r\n \t<img src=\"https://pbs.twimg.com/profile_images/1791733662/jzj-logo-01_TWITTER_4___2__normal.jpg\"
|
228
|
+
onerror=\"doAvatarSearch(this, 'JZJewelry')\" alt=\"JZJewelry\" />\r\n </a>\r\n
|
229
|
+
\ </div>\r\n <h3 class=\"username\"><a href=\"http://ow.ly/user/JZJewelry\"
|
230
|
+
title=\"JZJewelry\">JZJewelry</a></h3>\r\n <h4 class=\"postdate\">Posted
|
231
|
+
719 days ago</h4>\r\n \r\n </div>\r\n\r\n\t\t<div class=\"listWrapper\">\r\n\t<a
|
232
|
+
name=\"comments\"></a>\r\n\t<div class=\"listTabs\">\r\n\t\t<div class=\"tab
|
233
|
+
active\">\r\n\t\t\t<a href=\"#\">Comments (<span class=\"_commentTabCount\">...</span>)</a>\r\n\t\t</div>\r\n\t\t\t</div>\r\n\t\r\n\t<div
|
234
|
+
class=\"listBoxes\">\r\n\t\t<div id=\"_comments\" class=\"listBox box\"> \r\n\t\t\t\t\t\t<div
|
235
|
+
class=\"item\"> \r\n\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"avatar-48\">\r\n\t\t\t\t\t\t<a
|
236
|
+
class=\"border\">\r\n\t\t\t\t\t\t\t<img src=\"../images/avatar_icon.jpg\"
|
237
|
+
alt=\"Default Avatar\" />\r\n\t\t\t\t\t\t</a>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<input
|
238
|
+
type=\"button\" id=\"btnLoginComment\" value=\"Login to Comment\" style=\"display:none\"
|
239
|
+
/>\r\n\t\t\t\t\t\t\t\t<div class=\"comment new-comment\">\r\n\t\t\t\t\t<span
|
240
|
+
class=\"arrow-left\"><span class=\"icon-19\"></span></span>\r\n\t\t\t\t\t<div
|
241
|
+
class=\"message\"> \r\n\t\t\t\t\t\t<form id=\"formComment\" class=\"retweet
|
242
|
+
_commentForm\" action=\"\" method=\"get\" target=\"_blank\" onsubmit=\"return
|
243
|
+
submitComment();\">\r\n\t\t\t\t\t\t\t<strong>Tweet a comment:</strong> <span
|
244
|
+
class=\"disclaimer\">(Note: This will post to your Twitter account as a reply
|
245
|
+
to @JZJewelry)</span>\r\n\t\t\t\t\t\t\t<div class=\"txa c-u\" onclick=\"$('._commentForm
|
246
|
+
#commentContent').focus(); $(this).addClass('focus');\">\r\n\t\t\t\t\t\t\t\t@JZJewelry…\t\t\t\t\t\t\t\t<textarea
|
247
|
+
name=\"comment[content]\" id=\"commentContent\" onblur=\"$('._commentForm
|
248
|
+
.txa').removeClass('focus');\"></textarea>\r\n\t\t\t\t\t\t\t\t…http://ow.ly/i/s1O0\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<div
|
249
|
+
id=\"commentUploadSwf\" class=\"_commentUploader\"> \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
|
250
|
+
\r\n\t\t\t\t\t\t\t\t<a href=\"#\" class=\"_signInToUpload\"><strong>Sign in</strong></a>
|
251
|
+
\ to attach an image or document to your comment\r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<span
|
252
|
+
id=\"retweet-error\"></span>\r\n\t\t\t\t\t\t\t<input type=\"hidden\" name=\"comment[modelType]\"
|
253
|
+
value=\"photo\" />\r\n\t\t\t\t\t\t\t<input type=\"hidden\" name=\"comment[modelId]\"
|
254
|
+
value=\"6680128\" />\r\n\t\t\t\t\t\t\t<input type=\"hidden\" name=\"comment[modelTwitterAccountId]\"
|
255
|
+
value=\"3658446\" />\r\n\t\t\t\t\t\t\t<input type=\"hidden\" name=\"comment[modelUsername]\"
|
256
|
+
value=\"JZJewelry\" />\r\n\t\t\t\t\t\t\t<input type=\"hidden\" name=\"comment[modelAvatar]\"
|
257
|
+
value=\"https://pbs.twimg.com/profile_images/1791733662/jzj-logo-01_TWITTER_4___2__normal.jpg\"
|
258
|
+
/>\r\n\t\t\t\t\t\t\t<input type=\"hidden\" name=\"comment[modelTweetId]\"
|
259
|
+
value=\"\" />\r\n\t\t\t\t\t\t\t<input type=\"hidden\" name=\"comment[replyModelType]\"
|
260
|
+
/>\r\n\t\t\t\t\t\t\t<input type=\"hidden\" name=\"comment[replyModelId]\"
|
261
|
+
/>\r\n\t\t\t\t\t\t\t<input type=\"hidden\" name=\"comment[replyItemInfo]\"
|
262
|
+
/>\r\n\t\t\t\t\t\t\t<input type=\"hidden\" name=\"comment[modelItemInfo]\"
|
263
|
+
value='http://static.ow.ly/photos/thumb/s1O0.jpg' />\r\n\t\t\t\t\t\t\t<div
|
264
|
+
class=\"sbt\">\r\n\t\t\t\t\t\t\t\t<input type=\"submit\" value=\"Send Tweet\"
|
265
|
+
/>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"clear\"></div>\r\n\t\t\t\t\t\t</form>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t</div>\r\n\t\t\r\n\t\t<div
|
266
|
+
class=\"_commentList\">\r\n\t\t\tLoading comments...<img src=\"../images/load.gif\"
|
267
|
+
alt=\"loading\" />\r\n\t\t</div>\r\n\t\t<a name=\"latestcomment\"></a>\r\n\t</div>\r\n\t</div>\r\n</div>\r\n<script
|
268
|
+
type=\"text/javascript\">\r\n\t$(document).ready(function() {\r\n\t\tif ($(\"._signInToUpload\").size()
|
269
|
+
> 0) {\r\n\t\t\t$(\"._signInToUpload\").click(function(e){\r\n\t\t\t\t$(\"#btnLogin\").click();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t});\r\n\t\t}\r\n\t\tgetComments();\r\n\t});\r\n</script>\r\r\n\r\n\r\n<script
|
270
|
+
type=\"text/javascript\">\r\n\t$(document).ready(function(){\r\n\t\t$(\"a._flagPhoto\").bind(\"click\",
|
271
|
+
function(event) {\r\n\t\t\tflagFile('photo', 6680128, this);\r\n\t\t\tevent.preventDefault();\r\n\t\t});\r\n\t\t\r\n\t\t\t\t\t/*\r\n\t\t\tvar
|
272
|
+
searchTerm = \"http://ow.ly/i/s1O0\";\r\n\t\t\tvar hash = searchTerm.substring(searchTerm.lastIndexOf(\"/\")+1);\r\n\t\t\tgetTweetContentBySearch('JZJewelry',
|
273
|
+
owly.c.rootUrl +'/i ' + hash, true, $(\"._tweetContent\"), 'Screen shot 2012-02-09
|
274
|
+
at 4.54.43 AM.png');\r\n\t\t\t*/\r\n\t\t\tsearchOriginalTweet('photo', '6680128',
|
275
|
+
$(\"._tweetContent\"), 'Screen shot 2012-02-09 at 4.54.43 AM.png');\r\n\t\t\t\r\n\r\n\t\t$('.imageWrapper').bind(\"contextmenu\",function(e){\r\n\t\t\treturn
|
276
|
+
false;\r\n\t\t});\r\n\r\n\t});\r\n\t\r\n\t\r\n</script>\r\t\t</div>\r\n\t\t<!--
|
277
|
+
only show sidebar if not viewing original size -->\r\n\t\t\t\t\t<div id=\"secondary\">\r\n\t\t\t\t\t\t\t\t<div
|
278
|
+
class=\"adbox\">\r\n\r\n\t\t\t\t\t\t\t\t\t\t<div id='div-gpt-ad-1329423447822-0'
|
279
|
+
style='width:300px; height:250px;'>\r\n\t\t\t\t\t\t<script type='text/javascript'>googletag.cmd.push(function()
|
280
|
+
{ googletag.display('div-gpt-ad-1329423447822-0'); });</script>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<!--
|
281
|
+
embed info -->\r\n\t\t\t\t\t<div id=\"embed\">\r\n\t\t\t\t\t\t<div class=\"box\">\r\n\t\t\t\t\t\t\t<div
|
282
|
+
class=\"innerBorder\">\r\n\t\t\t\t\t\t\t<label class=\"title\"><strong>Direct
|
283
|
+
Link:</strong></label>\r\n\t\t\t\t\t\t\t\t<div class=\"ipt\">\r\n\t\t\t\t\t\t\t\t<input
|
284
|
+
type=\"text\" onclick=\"this.focus(); this.select();\" value=\"http://ow.ly/i/s1O0\"
|
285
|
+
/>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div
|
286
|
+
class=\"listWrapper\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"listTabs\">\r\n\t\t\t\t\t\t\t\t\t<div
|
287
|
+
class=\"tab active\">\r\n\t\t\t\t\t\t\t\t\t\t<a href=\"#\" rel=\"_smallThumb\">Thumbnail</a>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t<div
|
288
|
+
class=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\t<a href=\"#\" rel=\"_fullThumb\">Full
|
289
|
+
Image</a>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t<div
|
290
|
+
class=\"listBoxes\">\r\n\t\t\t\t\t\t\t\t\t<div id=\"_smallThumb\" class=\"listBox
|
291
|
+
box\">\r\n\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"innerBorder\">\r\n\t\t\t\t\t\t\t\t\t\t\t<div
|
292
|
+
class=\"ipt\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<input type=\"text\" onclick=\"this.focus();
|
293
|
+
this.select();\" value='<a href=\"http://ow.ly/i/s1O0\" target=\"_blank\"><img
|
294
|
+
src=\"http://static.ow.ly/photos/thumb/s1O0.jpg\" alt=\"Owly Images\" /></a>'
|
295
|
+
/>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t<div
|
296
|
+
id=\"_fullThumb\" class=\"listBox box\" style=\"display: none;\">\r\n\r\n\t\t\t\t\t\t\t\t\t\t<div
|
297
|
+
class=\"innerBorder\">\r\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ipt\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<input
|
298
|
+
type=\"text\" onclick=\"this.focus(); this.select();\" value='<a href=\"http://ow.ly/i/s1O0\"
|
299
|
+
target=\"_blank\"><img src=\"http://static.ow.ly/photos/normal/s1O0.jpg\"
|
300
|
+
alt=\"Owly Images\" /></a>' />\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!--
|
301
|
+
photo info -->\r\n\t\t\t\t\t\t\t\t\t\t\t<!-- no photo info -->\r\n\t\t\t\t\t\t\t\t\t\t<!--
|
302
|
+
more-by-this-user info -->\r\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"thumbs box\">\r\n\t\t\t\t\t\t<div
|
303
|
+
class=\"innerBorder\">\r\n\t\t\t\t\t\t\t<p class=\"title\">\r\n\t\t\t\t\t\t\t\t<a
|
304
|
+
class=\"more\" href=\"http://ow.ly/user/JZJewelry\"><strong>See All »</strong></a>\r\n\t\t\t\t\t\t\t\t<strong>More
|
305
|
+
photos from JZJewelry</strong>\r\n\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div
|
306
|
+
class=\"thumb-77\">\r\n\t\t\t\t\t\t\t\t<a class=\"border\" href=\"http://ow.ly/i/3dks9\"
|
307
|
+
title=\"Screen shot 2013-09-20 at 2.08.51 PM.png\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img
|
308
|
+
src=\"http://static.ow.ly/photos/thumb/3dks9.jpg\" alt=\"Screen shot 2013-09-20
|
309
|
+
at 2.08.51 PM.png\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div
|
310
|
+
class=\"thumb-77\">\r\n\t\t\t\t\t\t\t\t<a class=\"border\" href=\"http://ow.ly/i/3b5i3\"
|
311
|
+
title=\"Screen shot 2013-09-15 at 11.42.05 PM.png\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img
|
312
|
+
src=\"http://static.ow.ly/photos/thumb/3b5i3.jpg\" alt=\"Screen shot 2013-09-15
|
313
|
+
at 11.42.05 PM.png\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div
|
314
|
+
class=\"thumb-77\">\r\n\t\t\t\t\t\t\t\t<a class=\"border\" href=\"http://ow.ly/i/383VF\"
|
315
|
+
title=\"image_3.jpeg\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img src=\"http://static.ow.ly/photos/thumb/383VF.jpg\"
|
316
|
+
alt=\"image_3.jpeg\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div
|
317
|
+
style=\"margin-bottom:10px;\">\r\n\t\t\t\t\t<a href=\"http://hootsuite.com\"
|
318
|
+
target=\"_blank\"><img src=\"http://static.ow.ly/4-9-34/images/hootsuite_promo.jpg\"
|
319
|
+
alt=\"HootSuite\" title=\"HootSuite\" /></a>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div
|
320
|
+
class=\"advertisment last\">\r\n\t\t\t\t\t<!-- VideoEgg tag --><!--\r\n\t\t\t\t\t<script>\r\n\t\t\t\t\t\tvar
|
321
|
+
ve_publisher = \"Owly\";\r\n\t\t\t\t\t\tvar ve_site = \"OW_LY\";\r\n\t\t\t\t\t\tvar
|
322
|
+
ve_area = \"OW_LY\";\r\n\t\t\t\t\t\tvar ve_location = \"OW_LY_PICTURE_300X600\";\r\n\t\t\t\t\t\tvar
|
323
|
+
ve_placement = \"OTHER_picture\";\r\n\t\t\t\t\t\tvar ve_width = 300;\r\n\t\t\t\t\t\tvar
|
324
|
+
ve_height = 600;\r\n\t\t\t\t\t\tvar ve_alternate = \"collapse\";\r\n\t\t\t\t\t\tdocument.write(\"<script
|
325
|
+
src='http://core.videoegg.com/eap/html/js/init.js?\"+Math.random()+\"'></sc\"+\"ript>\");\r\n\t\t\t\t\t</script>\r\n\t\t\t\t\t--><!--
|
326
|
+
end VideoEgg tag -->\r\n\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t</div>\r\n\r\n\t<div
|
327
|
+
id=\"footer\">\r\n\t\t© 2009-2013 ow.ly - <a href=\"http://ow.ly/privacy\">Privacy
|
328
|
+
Policy</a> | <a href=\"http://ow.ly/copyright\">Copyright Policy</a> | <a
|
329
|
+
href=\"http://ow.ly/terms\">Terms of Service</a> | <a class=\"fdbk\" target=\"_blank\"
|
330
|
+
href=\"http://getsatisfaction.com/hootsuite/products/hootsuite_owly\">Feedback</a>\r\n\t</div>\r\n\r\n\t<div
|
331
|
+
id=\"userMessage\">\r\n\t</div>\r\n\r\n</div>\r\n\r\n\r\n<script type=\"text/javascript\">\r\n\t$(document).ready(function()
|
332
|
+
{\r\n\t\t// convert all relative dates\r\n\t\t$(\"._relativeDate\").each(function()
|
333
|
+
{\r\n\t\t\tthis.innerHTML = getRelativeTime(this.innerHTML);\r\n\t\t\t$(this).css(\"visibility\",
|
334
|
+
\"visible\");\r\n\t\t});\r\n\r\n\t\t// bind url \"copy to clipboard\" textboxes\r\n\t\t$(\"input._copyUrl\").bind(\"click\",
|
335
|
+
function() {\r\n\t\t\tthis.focus();\r\n\t\t\tthis.select();\r\n\t\t});\r\n\r\n\t\t//
|
336
|
+
bind all local scroll links\r\n\t\t$(\"._localScroll\").live(\"click\", function(e)
|
337
|
+
{\r\n\t\t\tvar href = $(this).attr(\"href\");\r\n\t\t\tvar name = href.substring(href.indexOf(\"#\")+1);\r\n\t\t\tscrollToAnchor(name);\r\n\t\t\te.preventDefault();\r\n\t\t});\r\n\r\n\r\n\t\t\t\t\t//
|
338
|
+
popauth\r\n\t\t\tvar p = new popauth(\"twitter\", '/ajax/twitter/get-auth-url',
|
339
|
+
function(e, ot, ov) {\r\n\t\t\t\t$.getJSON('/ajax/twitter/get-access-token?ot='+ot+'&ov='+ov,
|
340
|
+
function(data) {\r\n\t\t\t\t\tif (data.success) {\r\n\t\t\t\t\t\tsetTimeout(function(){
|
341
|
+
window.location = window.location; }, 0.1);\t// refresh\r\n\t\t\t\t\t} else
|
342
|
+
{\r\n\t\t\t\t\t\tdisplayUserMessage(\"Login failed, please try again\");\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\t//
|
343
|
+
bind button\r\n\t\t\t$(\"#btnLogin\").bind(\"click\", function(e) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tp.start();\t//
|
344
|
+
start auth\r\n\t\t\t});\r\n\r\n\t\t\r\n\t\t$('.listTabs .tab a').click(function(e)
|
345
|
+
{\r\n\t\t\tif (!$(this).closest('.listTabs').hasClass('_nonAjax')) {\r\n\t\t\t\tif($(this).attr('rel')
|
346
|
+
&& $('#'+$(this).attr('rel')).length) {\r\n\t\t\t\t$(this).closest('.listTabs').find('.active').removeClass('active');\r\n\t\t\t\t$(this).parent().addClass('active');\r\n\t\t\t\t$(this).closest('.listWrapper').find('.listBoxes
|
347
|
+
.listBox').hide();\r\n\t\t\t\t\tvar target = $(this).attr('rel');\r\n\t\t\t\t\t$('#'+target).show();\r\n\t\t\t\t}\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$.preloadImages
|
348
|
+
= function() {\r\n\t\t\tfor (var i = 0; i<arguments.length; i++) {\r\n\t\t\t\timg
|
349
|
+
= new Image();\r\n\t\t\t\timg.src = arguments[i];\r\n\t\t\t}\r\n\t\t}\r\n\t\t$.preloadImages(\r\n\t\t\t'http://static.ow.ly/4-9-34/images/new/maps/map-12-hover.png',\r\n\t\t\t'http://static.ow.ly/4-9-34/images/new/maps/map-12-active.png',\r\n\t\t\t'http://static.ow.ly/4-9-34/images/new/maps/map-19-hover.png',\r\n\t\t\t'http://static.ow.ly/4-9-34/images/new/maps/map-19-active.png',\r\n\t\t\t'http://static.ow.ly/4-9-34/images/new/maps/map-73-hover.png',\r\n\t\t\t'http://static.ow.ly/4-9-34/images/new/maps/map-73-active.png'\r\n\t\t);\r\n\t});\r\n</script>\r\n\r\n\t<script
|
350
|
+
type=\"text/javascript\">\r\n\t\tvar _gaq = _gaq || [];\r\n\t\t_gaq.push(['_setAccount',
|
351
|
+
'UA-51223-22']);\r\n\t\t_gaq.push(['_trackPageview']);\r\n\r\n\t\t(function()
|
352
|
+
{\r\n\t\t\tvar ga = document.createElement('script'); ga.type = 'text/javascript';
|
353
|
+
ga.async = true;\r\n\t\t\tga.src = ('https:' == document.location.protocol
|
354
|
+
? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\r\n\t\t\tvar
|
355
|
+
s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga,
|
356
|
+
s);\r\n\t\t})();\r\n\t</script>\r\n\t<script type=\"text/javascript\">\r\n\t\ttry
|
357
|
+
{\r\n\t\t\tvar pageTracker = _gat._getTracker(\"UA-51223-22\");\r\n\t\t\tpageTracker._trackPageview();\r\n\t\t}
|
358
|
+
catch(err) {}\r\n\t</script>\r\n</body>\r\n</html>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r"
|
359
|
+
http_version:
|
360
|
+
recorded_at: Tue, 28 Jan 2014 05:45:15 GMT
|
361
|
+
recorded_with: VCR 2.8.0
|
metadata
ADDED
@@ -0,0 +1,138 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: unwind
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Scott Watermasysk
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-01-28 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '10.1'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '10.1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: minitest
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '5.2'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '5.2'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: vcr
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '2.8'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.8'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: webmock
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.17'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.17'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: addressable
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '2.2'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '2.2'
|
83
|
+
description: "\t\t\t\t\t\t\t\t\t\tFollows a chain of redirects and reports back on
|
84
|
+
all the steps. \n\t\t\t\t\t\t\t\t\t\tHeavily inspired by John Nunemaker's blog post.\n\t\t\t\t\t\t\t\t\t\thttp://railstips.org/blog/archives/2009/03/04/following-redirects-with-nethttp/\n"
|
85
|
+
email:
|
86
|
+
- scottwater@gmail.com
|
87
|
+
executables: []
|
88
|
+
extensions: []
|
89
|
+
extra_rdoc_files: []
|
90
|
+
files:
|
91
|
+
- .gitignore
|
92
|
+
- Gemfile
|
93
|
+
- Rakefile
|
94
|
+
- Readme.md
|
95
|
+
- example/sample.rb
|
96
|
+
- lib/unwind.rb
|
97
|
+
- lib/unwind/version.rb
|
98
|
+
- test/redirect_follower_test.rb
|
99
|
+
- unwind.gemspec
|
100
|
+
- vcr_cassettes/amazon.yml
|
101
|
+
- vcr_cassettes/canonical_url.yml
|
102
|
+
- vcr_cassettes/meta_refresh.yml
|
103
|
+
- vcr_cassettes/missing_redirect.yml
|
104
|
+
- vcr_cassettes/no_redirect.yml
|
105
|
+
- vcr_cassettes/pdf.yml
|
106
|
+
- vcr_cassettes/relative_canonical_url.yml
|
107
|
+
- vcr_cassettes/relative_meta_refresh.yml
|
108
|
+
- vcr_cassettes/relative_stackoverflow.yml
|
109
|
+
- vcr_cassettes/relative_stackoverflow_2.yml
|
110
|
+
- vcr_cassettes/ssl_tpope.yml
|
111
|
+
- vcr_cassettes/with_cookie.yml
|
112
|
+
- vcr_cassettes/xZVND1.yml
|
113
|
+
homepage: http://www.scottw.com/unwind
|
114
|
+
licenses:
|
115
|
+
- MIT
|
116
|
+
metadata: {}
|
117
|
+
post_install_message:
|
118
|
+
rdoc_options: []
|
119
|
+
require_paths:
|
120
|
+
- lib
|
121
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - '>='
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '0'
|
131
|
+
requirements: []
|
132
|
+
rubyforge_project: unwind
|
133
|
+
rubygems_version: 2.2.1
|
134
|
+
signing_key:
|
135
|
+
specification_version: 4
|
136
|
+
summary: Follows a chain redirects.
|
137
|
+
test_files:
|
138
|
+
- test/redirect_follower_test.rb
|