tweetlr 0.1.9 → 0.1.10

Sign up to get free protection for your applications and to get access to all the features.
@@ -40,7 +40,9 @@ module Processors
40
40
 
41
41
  #extract the image of a path.com pic
42
42
  def self.image_url_path(link_url)
43
- image_url=nil
43
+ service_url = link_url_redirect link_url #follow possible redirects
44
+ link_url = service_url if service_url #if there's no redirect, service_url will be nil
45
+ image_url = nil
44
46
  html_response = Processors::Http::http_get link_url
45
47
  html_doc = Nokogiri::HTML.parse(html_response.body_str)
46
48
  if html_doc
data/lib/tweetlr.rb CHANGED
@@ -12,7 +12,7 @@ require 'log_aware'
12
12
 
13
13
  class Tweetlr
14
14
 
15
- VERSION = '0.1.9'
15
+ VERSION = '0.1.10'
16
16
 
17
17
  API_ENDPOINT_TWITTER = 'http://search.twitter.com/search.json'
18
18
  API_ENDPOINT_TUMBLR = 'http://www.tumblr.com'
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  describe Processors::PhotoService do
4
4
  before :each do
5
5
  @links = {
6
- :path => 'https://path.com/p/1OKhLx',
6
+ :path => 'http://path.com/p/KQd57',
7
7
  :instagram => "http://instagr.am/p/DzCWn/",
8
8
  :twitpic => "http://twitpic.com/449o2x",
9
9
  :yfrog => "http://yfrog.com/h4vlfp",
@@ -28,6 +28,11 @@ describe Processors::PhotoService do
28
28
  check_pic_url_extraction service if [:instagram,:picplz,:yfrog,:imgly,:not_listed].index service
29
29
  end
30
30
  end
31
+ it "finds path images for redirected moments as well" do
32
+ stub_path_redirected
33
+ url = Processors::PhotoService::find_image_url @links[:path]
34
+ url.should == 'https://s3-us-west-1.amazonaws.com/images.path.com/photos2/f90fd831-43c3-48fd-84cb-5c3bae52957a/2x.jpg'
35
+ end
31
36
  it "should not crash if embedly fallback won't find a link" do
32
37
  stub_bad_request
33
38
  url = Processors::PhotoService::find_image_url "http://mopskopf"
data/spec/spec_helper.rb CHANGED
@@ -11,6 +11,162 @@ def check_pic_url_extraction(service)
11
11
  image_url.should =~ Processors::PhotoService::PIC_REGEXP
12
12
  end
13
13
 
14
+ def stub_tumblr
15
+ Curl::Easy.any_instance.stub(:response_code).and_return 201
16
+ Curl::Easy.any_instance.stub(:header_str).and_return %|HTTP/1.1 201 Created
17
+ Date: Sun, 13 Nov 2011 16:56:02 GMT
18
+ Server: Apache
19
+ P3P: CP="ALL ADM DEV PSAi COM OUR OTRo STP IND ONL"
20
+ Vary: Accept-Encoding
21
+ X-Tumblr-Usec: D=2600406
22
+ Content-Length: 11
23
+ Connection: close
24
+ Content-Type: text/plain; charset=utf-8
25
+
26
+ |
27
+ Curl::Easy.any_instance.stub(:body_str).and_return %|12742797055|
28
+ Curl::Easy.stub!(:http_post).and_return Curl::Easy.new
29
+ stub_instagram
30
+ end
31
+
32
+ def stub_twitter
33
+ Curl::Easy.any_instance.stub(:body_str).and_return %|{"results":[{"from_user_id_str":"220650275","profile_image_url":"http://a2.twimg.com/profile_images/668619338/9729_148876458070_505518070_2628895_7160219_n_normal.jpg","created_at":"Sat, 16 Jul 2011 23:20:01 +0000","from_user":"LoMuma","id_str":"92372947855093760","metadata":{"result_type":"recent"},"to_user_id":null,"text":"Need to stop procrastinating! 5 quizzes and personal responses due tomorrow... #fail","id":92372947855093760,"from_user_id":220650275,"geo":null,"iso_language_code":"en","to_user_id_str":null,"source":"<a href="http://twitter.com/">web</a>"},{"from_user_id_str":"129718556","profile_image_url":"http://a2.twimg.com/profile_images/1428268221/twitter_normal.png","created_at":"Sat, 16 Jul 2011 23:20:01 +0000","from_user":"priiislopes","id_str":"92372947846692865","metadata":{"result_type":"recent"},"to_user_id":null,"text":"Esse jogo do Flu foi uma vergonha. Se ele fez o melhor dele no brasileiro semana passada, hj fez o pior de todos os tempos. #Fail","id":92372947846692865,"from_user_id":129718556,"geo":null,"iso_language_code":"pt","to_user_id_str":null,"source":"<a href="http://twitter.com/">web</a>"},{"from_user_id_str":"259930166","profile_image_url":"http://a3.twimg.com/profile_images/1425221519/foto_normal.jpg","created_at":"Sat, 16 Jul 2011 23:20:00 +0000","from_user":"YamiiG4","id_str":"92372943132303360","metadata":{"result_type":"recent"},"to_user_id":null,"text":"vaya que eran 2 minutos..#FAIL!","id":92372943132303360,"from_user_id":259930166,"geo":null,"iso_language_code":"es","to_user_id_str":null,"source":"<a href="http://www.tweetdeck.com" rel="nofollow">TweetDeck</a>"},{"from_user_id_str":"321557905","profile_image_url":"http://a0.twimg.com/profile_images/1445672626/profile_normal.png","created_at":"Sat, 16 Jul 2011 23:20:00 +0000","from_user":"JasWafer_FFOE","id_str":"92372941379088384","metadata":{"result_type":"recent"},"to_user_id":null,"text":"RT @eye_OFBEHOLDER: RT @JasWafer_FFOE #Oomf said that he'll NEVER eat pussy! O.o --#FAIL","id":92372941379088384,"from_user_id":321557905,"geo":null,"iso_language_code":"en","to_user_id_str":null,"source":"<a href="http://twidroyd.com" rel="nofollow">Twidroyd for Android</a>"},{"from_user_id_str":"279395613","profile_image_url":"http://a0.twimg.com/profile_images/1334871419/lnnsquare_normal.jpg","created_at":"Sat, 16 Jul 2011 23:19:59 +0000","from_user":"LanguageNewsNet","id_str":"92372940640890881","metadata":{"result_type":"recent"},"to_user_id":null,"text":"Questioning the Inca Paradox: Did the civilization behind Machu Picchu really fail to develop a written la... http://tinyurl.com/5sfos23","id":92372940640890881,"from_user_id":279395613,"geo":null,"iso_language_code":"en","to_user_id_str":null,"source":"<a href="http://twitterfeed.com" rel="nofollow">twitterfeed</a>"}],"max_id":92372947855093760,"since_id":0,"refresh_url":"?since_id=92372947855093760&q=+fail","next_page":"?page=2&max_id=92372947855093760&rpp=5&q=+fail","results_per_page":5,"page":1,"completed_in":0.022152,"since_id_str":"0","max_id_str":"92372947855093760","query":"+fail"}|
34
+ Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
35
+ end
36
+
37
+ def stub_twitter_pics
38
+ Curl::Easy.any_instance.stub(:body_str).and_return %|{"url": "http://pic.twitter.com/stubbedpic.jpg:large"}|
39
+ Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
40
+ end
41
+
42
+ def stub_instagram
43
+ Curl::Easy.any_instance.stub(:body_str).and_return %|{"provider_url": "http://instagram.com/", "title": "Curse you tweets. See what you have done to me?!!!", "url": "http://distillery.s3.amazonaws.com/media/2011/05/02/d25df62b9cec4a138967a3ad027d055b_7.jpg", "author_name": "loswhit", "height": 612, "width": 612, "version": "1.0", "author_url": "http://instagram.com/", "provider_name": "Instagram", "type": "photo"}|
44
+ Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
45
+ end
46
+
47
+ #instagram syntax but without a valid image link
48
+ def stub_no_image_link
49
+ Curl::Easy.any_instance.stub(:body_str).and_return %|{"url":"http://noimageurl"}|
50
+ Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
51
+ end
52
+
53
+ def stub_bad_request
54
+ Curl::Easy.any_instance.stub(:body_str).and_return %|<html><title>400: Bad Request - Invalid URL format http://mopskopf</title><body>400: Bad Request - Invalid URL format http://mopskopf</body></html>|
55
+ Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
56
+ end
57
+
58
+ def stub_utf8_response
59
+ Curl::Easy.any_instance.stub(:body_str).and_return %|√∫ƒ® are inhabitänts of utf-8 wonderländ.|
60
+ Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
61
+ end
62
+
63
+ def stub_yfrog
64
+ Curl::Easy.any_instance.stub(:body_str).and_return %|{"version":"1.0","provider_name":"yFrog","provider_url":"http:\/\/yfrog.com","thumbnail_url":"http:\/\/yfrog.com\/h4vlfp:small","width":1210,"height":894,"type":"image","url":"http:\/\/img616.yfrog.com\/img616\/16\/vlf.png"}|
65
+ Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
66
+ end
67
+
68
+ def stub_picplz
69
+ Curl::Easy.any_instance.stub(:body_str).and_return %|{"result":"ok","value":{"pics":[{"city":{"url":"/city/los-angeles-ca/","id":27,"name":"Los Angeles, CA"},"creator":{"username":"lakers","display_name":"Los Angeles Lakers","following_count":8,"follower_count":2364,"id":216541,"icon":{"url":"http://s1.ui1.picplzthumbs.com/usericons/c7/46/be/c746bee5eb6926e71f46176fddbd3fc16fc9b198_meds.jpg","width":75,"height":75}},"url":"/user/lakers/pic/6rlcc/","pic_files":{"640r":{"width":640,"img_url":"http://s1.i1.picplzthumbs.com/upload/img/7c/54/a0/7c54a0a10d3e97bef7ac570e14f461b1836e9168_wmeg.jpg","height":478},"100sh":{"width":100,"img_url":"http://s1.i1.picplzthumbs.com/upload/img/7c/54/a0/7c54a0a10d3e97bef7ac570e14f461b1836e9168_t200s.jpg","height":100},"320rh":{"width":320,"img_url":"http://s1.i1.picplzthumbs.com/upload/img/7c/54/a0/7c54a0a10d3e97bef7ac570e14f461b1836e9168_mmed.jpg","height":239}},"view_count":10873,"caption":"The playoff logo down on the floor.","comment_count":2,"like_count":24,"place":{"url":"/pics/staples-center-los-angeles-ca/","id":17357,"name":"STAPLES Center"},"date":1303059128,"id":1662796}]}}|
70
+ Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
71
+ end
72
+
73
+ def stub_lockerz
74
+ Curl::Easy.any_instance.stub(:body_str).and_return %|{"BigImageUrl":"http:\/\/c0013763.cdn1.cloudfiles.rackspacecloud.com\/x2_5f9fc67","CommentCount":1,"DetailsUrl":"http:\/\/api.plixi.com\/api\/tpapi.svc\/json\/photos\/100269159","GdAlias":"100269159","Id":100269159,"LargeImageUrl":"http:\/\/c0013763.cdn1.cloudfiles.rackspacecloud.com\/x2_5f9fc67","LikedVotes":0,"Location":{"Latitude":0,"Longitude":0},"MediumImageUrl":"http:\/\/c0013764.cdn1.cloudfiles.rackspacecloud.com\/x2_5f9fc67","Message":"Her name is Tofoi Al Nasr , she Reps the future of Qatar. @ the Doha Forum, technology is the new Revolution! ","MobileImageUrl":"http:\/\/c0013765.cdn1.cloudfiles.rackspacecloud.com\/x2_5f9fc67","Name":"x2_5f9fc67","SmallImageUrl":"http:\/\/c0013766.cdn1.cloudfiles.rackspacecloud.com\/x2_5f9fc67","ThumbnailUrl":"http:\/\/c0013767.cdn1.cloudfiles.rackspacecloud.com\/x2_5f9fc67","TinyAlias":"100269159","TwitterStatusId":67672440125394944,"UnLikedVotes":0,"UploadDate":1304969336,"UploadDateString":"2011-05-09T19:28:56Z","UserId":1067006,"Views":9319,"Vote":null}|
75
+ Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
76
+ end
77
+
78
+ #follow redirect lookups
79
+
80
+ def stub_imgly
81
+ curl = Curl::Easy.new
82
+ Curl::Easy.any_instance.stub(:perform).and_return curl
83
+ Curl::Easy.stub!(:http_get).and_return curl
84
+ Curl::Easy.any_instance.stub(:header_str).and_return %|HTTP/1.1 302 Found
85
+ Content-Type: text/html; charset=utf-8
86
+ Connection: keep-alive
87
+ Status: 302
88
+ X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.7
89
+ Location: http://s3.amazonaws.com/imgly_production/899582/full.jpg\r\nX-Runtime: 5
90
+ Content-Length: 122
91
+ Set-Cookie: _imgly_session=BAh7BjoPc2Vzc2lvbl9pZCIlZTk3ZDI2ZmNhNWJjNGVjOTVjNDdiNThjOWFkYjliNTY%3D--83345d9317715d664bcb5de63b0529488a17a351; domain=.img.ly; path=/; expires=Sun, 31-Jul-2011 00:59:06 GMT; HttpOnly
92
+ Cache-Control: no-cache
93
+ Server: nginx/1.0.0 + Phusion Passenger 3.0.7 (mod_rails/mod_rack)
94
+
95
+ |
96
+ end
97
+
98
+ def stub_twitpic
99
+ curl = Curl::Easy.new
100
+ Curl::Easy.any_instance.stub(:perform).and_return curl
101
+ Curl::Easy.any_instance.stub(:header_str).and_return %|HTTP/1.1 302 Moved Temporarily
102
+ Server: nginx
103
+ Date: Sun, 17 Jul 2011 01:03:43 GMT
104
+ Content-Type: image/jpeg
105
+ Transfer-Encoding: chunked
106
+ Connection: keep-alive
107
+ X-Powered-By: PHP/5.3.5-1ubuntu7.2
108
+ Last-Modified: Sat, 16 Jul 2011 22:17:03 GMT
109
+ Etag: 0fe3c085839afa6e42ce28973192704a
110
+ Cache-Control: maxage=10000
111
+ Expires: Sun, 17 Jul 2011 03:50:23 GMT
112
+ Pragma: public
113
+ Location: http://s3.amazonaws.com/twitpic/photos/full/249034281.jpg?AWSAccessKeyId=AKIAJF3XCCKACR3QDMOA&Expires=1310865623&Signature=KNFdFAK%2Bu0u3maMaguUjsm2MbaM%3D\r\n
114
+ |
115
+ #stub redirected call's response
116
+ Curl::Easy.stub!(:http_get).and_return curl
117
+ Curl::Easy.any_instance.stub(:body_str).and_return %|http://s3.amazonaws.com/twitpic/photos/full/249034281.jpg?AWSAccessKeyId=AKIAJF3XCCKACR3QDMOA&Expires=1310865623&Signature=KNFdFAK%2Bu0u3maMaguUjsm2MbaM%3D\r\n|
118
+ end
119
+
120
+ def stub_tco
121
+ Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
122
+ Curl::Easy.any_instance.stub(:header_str).and_return %|HTTP/1.1 301 Moved Permanently
123
+ Date: Sun, 17 Jul 2011 01:03:51 GMT
124
+ Server: hi
125
+ Location: http://yfrog.com/h0m3vpj
126
+ Cache-Control: private,max-age=300
127
+ Expires: Sun, 17 Jul 2011 01:08:51 GMT
128
+ Content-Length: 0
129
+ Connection: close
130
+ Content-Type: text/html; charset=UTF-8
131
+
132
+ |
133
+ stub_yfrog
134
+ end
135
+
136
+ #embedly powered lookups
137
+
138
+ def stub_foursquare
139
+ Curl::Easy.any_instance.stub(:body_str).and_return %|{"provider_url": "http://foursquare.com", "description": "See where your friends are, learn about the places they frequent, and unlock rewards as you travel. 8555 Fletcher PkwyLa Mesa, CA 91942(619) 589-0071", "title": "Matt S. checked in at Banbu Sushi Bar And Grill", "url": "https://playfoursquare.s3.amazonaws.com/pix/PNIBDBIPP5G2XGROCZXVCOHABOZP4MICHZVPJWZXZWAN3SEQ.jpg", "author_name": "Matt S.", "height": 345, "width": 460, "thumbnail_url": "https://playfoursquare.s3.amazonaws.com/pix/PNIBDBIPP5G2XGROCZXVCOHABOZP4MICHZVPJWZXZWAN3SEQ.jpg", "thumbnail_width": 460, "version": "1.0", "provider_name": "Foursquare", "type": "photo", "thumbnail_height": 345, "author_url": "https://foursquare.com/mjstraus"}|
140
+ Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
141
+ end
142
+
143
+ def stub_embedly
144
+ Curl::Easy.any_instance.stub(:body_str).and_return %|{"provider_url": "http://www.flickr.com/", "description": "Lady GaGa", "title": "Lady GaGa", "url": "http://farm6.static.flickr.com/5204/5319200155_c966f67dc3.jpg", "author_name": "mjcom18", "height": 468, "width": 307, "thumbnail_url": "http://farm6.static.flickr.com/5204/5319200155_c966f67dc3_t.jpg", "thumbnail_width": 66, "version": "1.0", "provider_name": "Flickr", "cache_age": 3600, "type": "photo", "thumbnail_height": 100, "author_url": "http://www.flickr.com/photos/57795463@N05/"}|
145
+ Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
146
+ end
147
+
148
+ def stub_embedly_no_photo
149
+ Curl::Easy.any_instance.stub(:body_str).and_return %|{"provider_url": "http://www.yelp.de/", "description": "Fotos von Kopiba \u2013 #coffeediary \u2013 Hamburg", "title": "#coffeediary Yelp", "url": "http://www.yelp.de/biz_photos/wB1uHl_VnEbn7tqigTZKTQ?pt=biz_photo&ref=twitter&select=py1D5XEyOHcOcg6GJD3SEQ", "thumbnail_width": 298, "thumbnail_url": "http://s3-media4.ak.yelpcdn.com/bphoto/py1D5XEyOHcOcg6GJD3SEQ/l.jpg", "version": "1.0", "provider_name": "Yelp", "type": "link", "thumbnail_height": 400}|
150
+ Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
151
+ end
152
+
153
+ #path
154
+
155
+ def stub_path_redirected
156
+ curl = Curl::Easy.new
157
+ Curl::Easy.any_instance.stub(:perform).and_return curl
158
+ Curl::Easy.any_instance.stub(:header_str).and_return %|HTTP/1.1 302 Moved Temporarily
159
+ Date: Thu, 29 Dec 2011 20:30:22 GMT
160
+ Connection: close
161
+ Content-Length: 178
162
+ Server: nginx
163
+ Content-Type: text/html
164
+ Location: https://path.com/p/KQd57\r\n
165
+ |
166
+ #stub redirected call's response
167
+ stub_path
168
+ end
169
+
14
170
  def stub_path
15
171
  Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
16
172
  Curl::Easy.any_instance.stub(:body_str).and_return %^
@@ -270,141 +426,4 @@ def stub_path
270
426
  </html>^
271
427
  end
272
428
 
273
- def stub_tumblr
274
- Curl::Easy.any_instance.stub(:response_code).and_return 201
275
- Curl::Easy.any_instance.stub(:header_str).and_return %|HTTP/1.1 201 Created
276
- Date: Sun, 13 Nov 2011 16:56:02 GMT
277
- Server: Apache
278
- P3P: CP="ALL ADM DEV PSAi COM OUR OTRo STP IND ONL"
279
- Vary: Accept-Encoding
280
- X-Tumblr-Usec: D=2600406
281
- Content-Length: 11
282
- Connection: close
283
- Content-Type: text/plain; charset=utf-8
284
-
285
- |
286
- Curl::Easy.any_instance.stub(:body_str).and_return %|12742797055|
287
- Curl::Easy.stub!(:http_post).and_return Curl::Easy.new
288
- stub_instagram
289
- end
290
-
291
- def stub_twitter
292
- Curl::Easy.any_instance.stub(:body_str).and_return %|{"results":[{"from_user_id_str":"220650275","profile_image_url":"http://a2.twimg.com/profile_images/668619338/9729_148876458070_505518070_2628895_7160219_n_normal.jpg","created_at":"Sat, 16 Jul 2011 23:20:01 +0000","from_user":"LoMuma","id_str":"92372947855093760","metadata":{"result_type":"recent"},"to_user_id":null,"text":"Need to stop procrastinating! 5 quizzes and personal responses due tomorrow... #fail","id":92372947855093760,"from_user_id":220650275,"geo":null,"iso_language_code":"en","to_user_id_str":null,"source":"&lt;a href=&quot;http://twitter.com/&quot;&gt;web&lt;/a&gt;"},{"from_user_id_str":"129718556","profile_image_url":"http://a2.twimg.com/profile_images/1428268221/twitter_normal.png","created_at":"Sat, 16 Jul 2011 23:20:01 +0000","from_user":"priiislopes","id_str":"92372947846692865","metadata":{"result_type":"recent"},"to_user_id":null,"text":"Esse jogo do Flu foi uma vergonha. Se ele fez o melhor dele no brasileiro semana passada, hj fez o pior de todos os tempos. #Fail","id":92372947846692865,"from_user_id":129718556,"geo":null,"iso_language_code":"pt","to_user_id_str":null,"source":"&lt;a href=&quot;http://twitter.com/&quot;&gt;web&lt;/a&gt;"},{"from_user_id_str":"259930166","profile_image_url":"http://a3.twimg.com/profile_images/1425221519/foto_normal.jpg","created_at":"Sat, 16 Jul 2011 23:20:00 +0000","from_user":"YamiiG4","id_str":"92372943132303360","metadata":{"result_type":"recent"},"to_user_id":null,"text":"vaya que eran 2 minutos..#FAIL!","id":92372943132303360,"from_user_id":259930166,"geo":null,"iso_language_code":"es","to_user_id_str":null,"source":"&lt;a href=&quot;http://www.tweetdeck.com&quot; rel=&quot;nofollow&quot;&gt;TweetDeck&lt;/a&gt;"},{"from_user_id_str":"321557905","profile_image_url":"http://a0.twimg.com/profile_images/1445672626/profile_normal.png","created_at":"Sat, 16 Jul 2011 23:20:00 +0000","from_user":"JasWafer_FFOE","id_str":"92372941379088384","metadata":{"result_type":"recent"},"to_user_id":null,"text":"RT @eye_OFBEHOLDER: RT @JasWafer_FFOE #Oomf said that he'll NEVER eat pussy! O.o --#FAIL","id":92372941379088384,"from_user_id":321557905,"geo":null,"iso_language_code":"en","to_user_id_str":null,"source":"&lt;a href=&quot;http://twidroyd.com&quot; rel=&quot;nofollow&quot;&gt;Twidroyd for Android&lt;/a&gt;"},{"from_user_id_str":"279395613","profile_image_url":"http://a0.twimg.com/profile_images/1334871419/lnnsquare_normal.jpg","created_at":"Sat, 16 Jul 2011 23:19:59 +0000","from_user":"LanguageNewsNet","id_str":"92372940640890881","metadata":{"result_type":"recent"},"to_user_id":null,"text":"Questioning the Inca Paradox: Did the civilization behind Machu Picchu really fail to develop a written la... http://tinyurl.com/5sfos23","id":92372940640890881,"from_user_id":279395613,"geo":null,"iso_language_code":"en","to_user_id_str":null,"source":"&lt;a href=&quot;http://twitterfeed.com&quot; rel=&quot;nofollow&quot;&gt;twitterfeed&lt;/a&gt;"}],"max_id":92372947855093760,"since_id":0,"refresh_url":"?since_id=92372947855093760&q=+fail","next_page":"?page=2&max_id=92372947855093760&rpp=5&q=+fail","results_per_page":5,"page":1,"completed_in":0.022152,"since_id_str":"0","max_id_str":"92372947855093760","query":"+fail"}|
293
- Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
294
- end
295
-
296
- def stub_twitter_pics
297
- Curl::Easy.any_instance.stub(:body_str).and_return %|{"url": "http://pic.twitter.com/stubbedpic.jpg:large"}|
298
- Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
299
- end
300
-
301
- def stub_instagram
302
- Curl::Easy.any_instance.stub(:body_str).and_return %|{"provider_url": "http://instagram.com/", "title": "Curse you tweets. See what you have done to me?!!!", "url": "http://distillery.s3.amazonaws.com/media/2011/05/02/d25df62b9cec4a138967a3ad027d055b_7.jpg", "author_name": "loswhit", "height": 612, "width": 612, "version": "1.0", "author_url": "http://instagram.com/", "provider_name": "Instagram", "type": "photo"}|
303
- Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
304
- end
305
429
 
306
- #instagram syntax but without a valid image link
307
- def stub_no_image_link
308
- Curl::Easy.any_instance.stub(:body_str).and_return %|{"url":"http://noimageurl"}|
309
- Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
310
- end
311
-
312
- def stub_bad_request
313
- Curl::Easy.any_instance.stub(:body_str).and_return %|<html><title>400: Bad Request - Invalid URL format http://mopskopf</title><body>400: Bad Request - Invalid URL format http://mopskopf</body></html>|
314
- Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
315
- end
316
-
317
- def stub_utf8_response
318
- Curl::Easy.any_instance.stub(:body_str).and_return %|√∫ƒ® are inhabitänts of utf-8 wonderländ.|
319
- Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
320
- end
321
-
322
- def stub_yfrog
323
- Curl::Easy.any_instance.stub(:body_str).and_return %|{"version":"1.0","provider_name":"yFrog","provider_url":"http:\/\/yfrog.com","thumbnail_url":"http:\/\/yfrog.com\/h4vlfp:small","width":1210,"height":894,"type":"image","url":"http:\/\/img616.yfrog.com\/img616\/16\/vlf.png"}|
324
- Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
325
- end
326
-
327
- def stub_picplz
328
- Curl::Easy.any_instance.stub(:body_str).and_return %|{"result":"ok","value":{"pics":[{"city":{"url":"/city/los-angeles-ca/","id":27,"name":"Los Angeles, CA"},"creator":{"username":"lakers","display_name":"Los Angeles Lakers","following_count":8,"follower_count":2364,"id":216541,"icon":{"url":"http://s1.ui1.picplzthumbs.com/usericons/c7/46/be/c746bee5eb6926e71f46176fddbd3fc16fc9b198_meds.jpg","width":75,"height":75}},"url":"/user/lakers/pic/6rlcc/","pic_files":{"640r":{"width":640,"img_url":"http://s1.i1.picplzthumbs.com/upload/img/7c/54/a0/7c54a0a10d3e97bef7ac570e14f461b1836e9168_wmeg.jpg","height":478},"100sh":{"width":100,"img_url":"http://s1.i1.picplzthumbs.com/upload/img/7c/54/a0/7c54a0a10d3e97bef7ac570e14f461b1836e9168_t200s.jpg","height":100},"320rh":{"width":320,"img_url":"http://s1.i1.picplzthumbs.com/upload/img/7c/54/a0/7c54a0a10d3e97bef7ac570e14f461b1836e9168_mmed.jpg","height":239}},"view_count":10873,"caption":"The playoff logo down on the floor.","comment_count":2,"like_count":24,"place":{"url":"/pics/staples-center-los-angeles-ca/","id":17357,"name":"STAPLES Center"},"date":1303059128,"id":1662796}]}}|
329
- Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
330
- end
331
-
332
- def stub_lockerz
333
- Curl::Easy.any_instance.stub(:body_str).and_return %|{"BigImageUrl":"http:\/\/c0013763.cdn1.cloudfiles.rackspacecloud.com\/x2_5f9fc67","CommentCount":1,"DetailsUrl":"http:\/\/api.plixi.com\/api\/tpapi.svc\/json\/photos\/100269159","GdAlias":"100269159","Id":100269159,"LargeImageUrl":"http:\/\/c0013763.cdn1.cloudfiles.rackspacecloud.com\/x2_5f9fc67","LikedVotes":0,"Location":{"Latitude":0,"Longitude":0},"MediumImageUrl":"http:\/\/c0013764.cdn1.cloudfiles.rackspacecloud.com\/x2_5f9fc67","Message":"Her name is Tofoi Al Nasr , she Reps the future of Qatar. @ the Doha Forum, technology is the new Revolution! ","MobileImageUrl":"http:\/\/c0013765.cdn1.cloudfiles.rackspacecloud.com\/x2_5f9fc67","Name":"x2_5f9fc67","SmallImageUrl":"http:\/\/c0013766.cdn1.cloudfiles.rackspacecloud.com\/x2_5f9fc67","ThumbnailUrl":"http:\/\/c0013767.cdn1.cloudfiles.rackspacecloud.com\/x2_5f9fc67","TinyAlias":"100269159","TwitterStatusId":67672440125394944,"UnLikedVotes":0,"UploadDate":1304969336,"UploadDateString":"2011-05-09T19:28:56Z","UserId":1067006,"Views":9319,"Vote":null}|
334
- Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
335
- end
336
-
337
- #follow redirect lookups
338
-
339
- def stub_imgly
340
- curl = Curl::Easy.new
341
- Curl::Easy.any_instance.stub(:perform).and_return curl
342
- Curl::Easy.stub!(:http_get).and_return curl
343
- Curl::Easy.any_instance.stub(:header_str).and_return %|HTTP/1.1 302 Found
344
- Content-Type: text/html; charset=utf-8
345
- Connection: keep-alive
346
- Status: 302
347
- X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.7
348
- Location: http://s3.amazonaws.com/imgly_production/899582/full.jpg\r\nX-Runtime: 5
349
- Content-Length: 122
350
- Set-Cookie: _imgly_session=BAh7BjoPc2Vzc2lvbl9pZCIlZTk3ZDI2ZmNhNWJjNGVjOTVjNDdiNThjOWFkYjliNTY%3D--83345d9317715d664bcb5de63b0529488a17a351; domain=.img.ly; path=/; expires=Sun, 31-Jul-2011 00:59:06 GMT; HttpOnly
351
- Cache-Control: no-cache
352
- Server: nginx/1.0.0 + Phusion Passenger 3.0.7 (mod_rails/mod_rack)
353
-
354
- |
355
- end
356
-
357
- def stub_twitpic
358
- curl = Curl::Easy.new
359
- Curl::Easy.any_instance.stub(:perform).and_return curl
360
- Curl::Easy.any_instance.stub(:header_str).and_return %|HTTP/1.1 302 Moved Temporarily
361
- Server: nginx
362
- Date: Sun, 17 Jul 2011 01:03:43 GMT
363
- Content-Type: image/jpeg
364
- Transfer-Encoding: chunked
365
- Connection: keep-alive
366
- X-Powered-By: PHP/5.3.5-1ubuntu7.2
367
- Last-Modified: Sat, 16 Jul 2011 22:17:03 GMT
368
- Etag: 0fe3c085839afa6e42ce28973192704a
369
- Cache-Control: maxage=10000
370
- Expires: Sun, 17 Jul 2011 03:50:23 GMT
371
- Pragma: public
372
- Location: http://s3.amazonaws.com/twitpic/photos/full/249034281.jpg?AWSAccessKeyId=AKIAJF3XCCKACR3QDMOA&Expires=1310865623&Signature=KNFdFAK%2Bu0u3maMaguUjsm2MbaM%3D\r\n
373
- |
374
- #stub redirected call's response
375
- Curl::Easy.stub!(:http_get).and_return curl
376
- Curl::Easy.any_instance.stub(:body_str).and_return %|http://s3.amazonaws.com/twitpic/photos/full/249034281.jpg?AWSAccessKeyId=AKIAJF3XCCKACR3QDMOA&Expires=1310865623&Signature=KNFdFAK%2Bu0u3maMaguUjsm2MbaM%3D\r\n|
377
- end
378
-
379
- def stub_tco
380
- Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
381
- Curl::Easy.any_instance.stub(:header_str).and_return %|HTTP/1.1 301 Moved Permanently
382
- Date: Sun, 17 Jul 2011 01:03:51 GMT
383
- Server: hi
384
- Location: http://yfrog.com/h0m3vpj
385
- Cache-Control: private,max-age=300
386
- Expires: Sun, 17 Jul 2011 01:08:51 GMT
387
- Content-Length: 0
388
- Connection: close
389
- Content-Type: text/html; charset=UTF-8
390
-
391
- |
392
- stub_yfrog
393
- end
394
-
395
- #embedly powered lookups
396
-
397
- def stub_foursquare
398
- Curl::Easy.any_instance.stub(:body_str).and_return %|{"provider_url": "http://foursquare.com", "description": "See where your friends are, learn about the places they frequent, and unlock rewards as you travel. 8555 Fletcher PkwyLa Mesa, CA 91942(619) 589-0071", "title": "Matt S. checked in at Banbu Sushi Bar And Grill", "url": "https://playfoursquare.s3.amazonaws.com/pix/PNIBDBIPP5G2XGROCZXVCOHABOZP4MICHZVPJWZXZWAN3SEQ.jpg", "author_name": "Matt S.", "height": 345, "width": 460, "thumbnail_url": "https://playfoursquare.s3.amazonaws.com/pix/PNIBDBIPP5G2XGROCZXVCOHABOZP4MICHZVPJWZXZWAN3SEQ.jpg", "thumbnail_width": 460, "version": "1.0", "provider_name": "Foursquare", "type": "photo", "thumbnail_height": 345, "author_url": "https://foursquare.com/mjstraus"}|
399
- Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
400
- end
401
-
402
- def stub_embedly
403
- Curl::Easy.any_instance.stub(:body_str).and_return %|{"provider_url": "http://www.flickr.com/", "description": "Lady GaGa", "title": "Lady GaGa", "url": "http://farm6.static.flickr.com/5204/5319200155_c966f67dc3.jpg", "author_name": "mjcom18", "height": 468, "width": 307, "thumbnail_url": "http://farm6.static.flickr.com/5204/5319200155_c966f67dc3_t.jpg", "thumbnail_width": 66, "version": "1.0", "provider_name": "Flickr", "cache_age": 3600, "type": "photo", "thumbnail_height": 100, "author_url": "http://www.flickr.com/photos/57795463@N05/"}|
404
- Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
405
- end
406
-
407
- def stub_embedly_no_photo
408
- Curl::Easy.any_instance.stub(:body_str).and_return %|{"provider_url": "http://www.yelp.de/", "description": "Fotos von Kopiba \u2013 #coffeediary \u2013 Hamburg", "title": "#coffeediary Yelp", "url": "http://www.yelp.de/biz_photos/wB1uHl_VnEbn7tqigTZKTQ?pt=biz_photo&ref=twitter&select=py1D5XEyOHcOcg6GJD3SEQ", "thumbnail_width": 298, "thumbnail_url": "http://s3-media4.ak.yelpcdn.com/bphoto/py1D5XEyOHcOcg6GJD3SEQ/l.jpg", "version": "1.0", "provider_name": "Yelp", "type": "link", "thumbnail_height": 400}|
409
- Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
410
- end
data/tweetlr.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "tweetlr"
3
- s.version = "0.1.9"
3
+ s.version = "0.1.10"
4
4
  s.author = "Sven Kraeuter"
5
5
  s.email = "sven.kraeuter@gmail.com"
6
6
  s.homepage = "http://tweetlr.5v3n.com"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tweetlr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.1.10
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-28 00:00:00.000000000Z
12
+ date: 2011-12-29 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: daemons
16
- requirement: &2157402720 !ruby/object:Gem::Requirement
16
+ requirement: &2153375840 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2157402720
24
+ version_requirements: *2153375840
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: eventmachine
27
- requirement: &2157402220 !ruby/object:Gem::Requirement
27
+ requirement: &2153375100 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2157402220
35
+ version_requirements: *2153375100
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: curb
38
- requirement: &2157401780 !ruby/object:Gem::Requirement
38
+ requirement: &2153370580 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2157401780
46
+ version_requirements: *2153370580
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: json
49
- requirement: &2157401360 !ruby/object:Gem::Requirement
49
+ requirement: &2153370160 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *2157401360
57
+ version_requirements: *2153370160
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: nokogiri
60
- requirement: &2157400940 !ruby/object:Gem::Requirement
60
+ requirement: &2153369740 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *2157400940
68
+ version_requirements: *2153369740
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
- requirement: &2157400520 !ruby/object:Gem::Requirement
71
+ requirement: &2153369320 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *2157400520
79
+ version_requirements: *2153369320
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rspec
82
- requirement: &2157400100 !ruby/object:Gem::Requirement
82
+ requirement: &2153368900 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *2157400100
90
+ version_requirements: *2153368900
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rdoc
93
- requirement: &2157399680 !ruby/object:Gem::Requirement
93
+ requirement: &2153368420 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,7 +98,7 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *2157399680
101
+ version_requirements: *2153368420
102
102
  description: tweetlr crawls twitter for a given term, extracts photos out of the collected
103
103
  tweets' short urls and posts the images to tumblr.
104
104
  email: sven.kraeuter@gmail.com