tweetlr 0.1.21 → 0.1.22
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 +2 -1
- data/README.md +3 -1
- data/config/tweetlr.yml.test +18 -0
- data/lib/tweetlr/combinators/twitter_tumblr.rb +1 -2
- data/lib/tweetlr/core.rb +4 -5
- data/lib/tweetlr/processors/tumblr.rb +1 -0
- data/lib/tweetlr.rb +1 -1
- data/spec/core_spec.rb +51 -36
- data/spec/processors/http_spec.rb +10 -0
- data/spec/processors/photo_services_processor_spec.rb +6 -0
- data/spec/processors/twitter_processor_spec.rb +30 -13
- data/spec/spec_helper.rb +9 -4
- data/tweetlr.gemspec +2 -1
- metadata +20 -7
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# tweetlr
|
2
2
|
|
3
|
-
<a href="http://travis-ci.org/#!/5v3n/tweetlr"></a>
|
3
|
+
<a href="http://travis-ci.org/#!/5v3n/tweetlr"></a> <a href="https://codeclimate.com/github/5v3n/tweetlr"><img src="https://codeclimate.com/github/5v3n/tweetlr.png" /></a>
|
4
|
+
|
5
|
+
|
4
6
|
|
5
7
|
tweetlr crawls twitter for a given term, extracts photos out of the collected tweets' short urls and posts the images to tumblr.
|
6
8
|
|
@@ -0,0 +1,18 @@
|
|
1
|
+
results_per_page: 100
|
2
|
+
result_type: recent
|
3
|
+
search_term: 'cat+dog+unicorn' #find tweets containing any of these terms
|
4
|
+
start_at_tweet_id: 61847783463854082 # the tweet id to start searching at
|
5
|
+
api_endpoint_twitter: 'http://search.twitter.com/search.json'
|
6
|
+
api_endpoint_tumblr: 'http://www.tumblr.com'
|
7
|
+
tumblr_oauth_api_key: YOUR APPS TUMBLR API TOKEN
|
8
|
+
tumblr_oauth_api_secret: YOUR APPS TUMBLR API SECRET
|
9
|
+
tumblr_oauth_access_token_key: YOUR BLOGS OAUTH ACCESS TOKEN KEY
|
10
|
+
tumblr_oauth_access_token_secret: YOUR BLOGS OAUTH ACCESS TOKEN SECRE
|
11
|
+
tumblr_blog_hostname: YOUR BLOGS HOSTNAME #e.g. myblog.tumblr.com
|
12
|
+
embedly_key: '' #tweetlr uses http://embedly.com for link processing. a free plan containing an api key is available & recommended to use in order to ensure full support
|
13
|
+
update_period: 300 #check for updates every 300 secs = 5 minutes
|
14
|
+
shouts: 'says' # will be concatenated after the username, before the message: @mr_x says: awesome things on a photo!
|
15
|
+
loglevel: 1 # 0: debug, 1: info (default), 2: warn, 3: error, 5: fatal
|
16
|
+
whitelist: #twitter accounts in that list will have their tweets published immediately. post from others will be saved as drafts. blank list will publish all tweets immediately
|
17
|
+
- whitey_mc_whitelist
|
18
|
+
- sven_kr
|
@@ -26,10 +26,9 @@ module Tweetlr::Combinators
|
|
26
26
|
def self.generate_photo_post_from_tweet(tweet, options = {})
|
27
27
|
log.debug "#{self}.generate_photo_post_from_tweet with options: #{options.inspect}"
|
28
28
|
tumblr_post = nil
|
29
|
-
message = tweet['text']
|
30
29
|
whitelist = options[:whitelist]
|
31
30
|
whitelist.each {|entry| entry.downcase!} if (whitelist && whitelist.size != 0)
|
32
|
-
if !Tweetlr::Processors::Twitter::retweet?
|
31
|
+
if !Tweetlr::Processors::Twitter::retweet? tweet['text']
|
33
32
|
log.debug "tweet: #{tweet}"
|
34
33
|
tumblr_post = {}
|
35
34
|
tumblr_post[:tumblr_blog_hostname] = options[:tumblr_blog_hostname] || options[:group]
|
data/lib/tweetlr/core.rb
CHANGED
@@ -17,7 +17,7 @@ class Tweetlr::Core
|
|
17
17
|
def initialize(args)
|
18
18
|
initialize_logging(args[:loglevel])
|
19
19
|
initialize_attributes(args)
|
20
|
-
log.info "Tweetlr #{Tweetlr::VERSION} initialized. Ready to roll."
|
20
|
+
Tweetlr::LogAware.log.info "Tweetlr #{Tweetlr::VERSION} initialized. Ready to roll."
|
21
21
|
end
|
22
22
|
|
23
23
|
def self.crawl(config)
|
@@ -51,7 +51,7 @@ private
|
|
51
51
|
@whitelist.each {|entry| entry.downcase!} if @whitelist
|
52
52
|
end
|
53
53
|
def initialize_logging(loglevel)
|
54
|
-
log = Logger.new(STDOUT)
|
54
|
+
log = Tweetlr::LogAware.log || Logger.new(STDOUT)
|
55
55
|
if (Logger::DEBUG..Logger::UNKNOWN).to_a.index(loglevel)
|
56
56
|
log.level = loglevel
|
57
57
|
else
|
@@ -70,16 +70,15 @@ private
|
|
70
70
|
if tumblr_post.nil? || tumblr_post[:source].nil?
|
71
71
|
log.warn "could not get image source: tweet: #{tweet} --- tumblr post: #{tumblr_post.inspect}"
|
72
72
|
else
|
73
|
-
post_to_tumblr
|
73
|
+
post_to_tumblr tumblr_post, tumblr_config
|
74
74
|
end
|
75
75
|
end
|
76
76
|
end
|
77
77
|
def self.post_to_tumblr(tumblr_post, tumblr_config)
|
78
78
|
log.debug "tumblr post: #{tumblr_post}"
|
79
79
|
res = Tweetlr::Processors::Tumblr.post tumblr_post.merge(tumblr_config)
|
80
|
-
log.debug "tumblr response: #{res}"
|
81
80
|
if res && res.code == "201"
|
82
|
-
log.info "tumblr post created (tumblr response: #{res.header}
|
81
|
+
log.info "tumblr post created (tumblr response header: #{res.header}"
|
83
82
|
elsif res
|
84
83
|
log.warn "tumblr response: #{res.header} #{res.body}"
|
85
84
|
else
|
@@ -17,6 +17,7 @@ module Tweetlr::Processors
|
|
17
17
|
#optional arguments: :tags, :type (default: 'photo')
|
18
18
|
#
|
19
19
|
def self.post(options={})
|
20
|
+
log.info "posting to #{options[:tumblr_blog_hostname] || options[:group]}..."
|
20
21
|
base_hostname = options[:tumblr_blog_hostname] || options[:group]
|
21
22
|
tumblr_oauth_api_key= options[:tumblr_oauth_api_key]
|
22
23
|
tumblr_oauth_api_secret= options[:tumblr_oauth_api_secret]
|
data/lib/tweetlr.rb
CHANGED
data/spec/core_spec.rb
CHANGED
@@ -2,17 +2,13 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Tweetlr::Core do
|
4
4
|
|
5
|
-
config_file = File.join( Dir.pwd, 'config', 'tweetlr.yml')
|
5
|
+
config_file = File.join( Dir.pwd, 'config', 'tweetlr.yml.test')
|
6
6
|
config = YAML.load_file(config_file)
|
7
7
|
TIMESTAMP = config['twitter_timestamp']
|
8
8
|
WHITELIST = config['whitelist']
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
@second_link = "http://instagr.am/p/DzCWn/"
|
13
|
-
@third_link = "https://imageurl.com"
|
14
|
-
@twitter_response = {"from_user_id_str"=>"1915714", "profile_image_url"=>"http://a0.twimg.com/profile_images/386000279/2_normal.jpg", "created_at"=>"Sun, 17 Apr 2011 16:48:42 +0000", "from_user"=>"whitey_Mc_whIteLIst", "id_str"=>"59659561224765440", "metadata"=>{"result_type"=>"recent"}, "to_user_id"=>nil, "text"=>"Rigaer #wirsounterwegs #{@first_link} @ Augenarzt Dr. Lierow #{@second_link} #{@third_link}", "id"=>59659561224765440, "from_user_id"=>1915714, "geo"=>{"type"=>"Point", "coordinates"=>[52.5182, 13.454]}, "iso_language_code"=>"de", "place"=>{"id"=>"3078869807f9dd36", "type"=>"city", "full_name"=>"Berlin, Berlin"}, "to_user_id_str"=>nil, "source"=>"<a href="http://instagr.am" rel="nofollow">instagram</a>"}
|
15
|
-
@tweetlr_config = {
|
10
|
+
let(:tweetlr_config) do
|
11
|
+
{
|
16
12
|
:since_id => 0,
|
17
13
|
:results_per_page => 3,
|
18
14
|
:search_term => 'coffeediary',
|
@@ -25,36 +21,55 @@ describe Tweetlr::Core do
|
|
25
21
|
:tumblr_oauth_api_key => config['tumblr_oauth_api_key'],
|
26
22
|
:tumblr_blog_hostname => config['tumblr_blog_hostname']
|
27
23
|
}
|
28
|
-
stub_tumblr
|
29
|
-
stub_twitter
|
30
|
-
stub_oauth
|
31
24
|
end
|
32
|
-
|
33
|
-
|
34
|
-
result = Tweetlr::Core.crawl(@tweetlr_config)
|
35
|
-
since_id_before.should_not == result[:since_id]
|
25
|
+
let(:stubbed_tumblr_post) do
|
26
|
+
{:tumblr_blog_hostname=>nil, :type=>"photo", :date=>"Sun, 28 Apr 2013 14:10:43 +0000", :source=>"https://irs0.4sqi.net/img/general/600x600/304170_IfHzPdhxs9mpGlPk8jogxdul8q8KhTBNmeAiP9H5TyY.jpg", :tags=>"sven_kr", :state=>"published", :caption=>"<a href=\"http://twitter.com/sven_kr/statuses/328511599881097216\" alt=\"tweet\">@sven_kr</a>: #coffeediary Wanted to stay at home but had to test the new tweetlr ;-) (@ Mamalicious w/ @snoopsmaus) [pic]: http://t.co/7ilE9BDJxJ"}
|
36
27
|
end
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
:
|
56
|
-
|
57
|
-
|
58
|
-
|
28
|
+
let(:first_link) { "http://url.com" }
|
29
|
+
let(:second_link) { "http://instagr.am/p/DzCWn/" }
|
30
|
+
let(:third_link) { "https://imageurl.com" }
|
31
|
+
let(:twitter_response) { {"from_user_id_str"=>"1915714", "profile_image_url"=>"http://a0.twimg.com/profile_images/386000279/2_normal.jpg", "created_at"=>"Sun, 17 Apr 2011 16:48:42 +0000", "from_user"=>"whitey_Mc_whIteLIst", "id_str"=>"59659561224765440", "metadata"=>{"result_type"=>"recent"}, "to_user_id"=>nil, "text"=>"Rigaer #wirsounterwegs #{first_link} @ Augenarzt Dr. Lierow #{second_link} #{third_link}", "id"=>59659561224765440, "from_user_id"=>1915714, "geo"=>{"type"=>"Point", "coordinates"=>[52.5182, 13.454]}, "iso_language_code"=>"de", "place"=>{"id"=>"3078869807f9dd36", "type"=>"city", "full_name"=>"Berlin, Berlin"}, "to_user_id_str"=>nil, "source"=>"<a href="http://instagr.am" rel="nofollow">instagram</a>"} }
|
32
|
+
|
33
|
+
describe ".new" do
|
34
|
+
it "initializes a new instance" do
|
35
|
+
new_instance = Tweetlr::Core.new tweetlr_config
|
36
|
+
new_instance.should be
|
37
|
+
end
|
38
|
+
end
|
39
|
+
describe ".crawl(config)" do
|
40
|
+
before(:each) do
|
41
|
+
stub_tumblr
|
42
|
+
stub_twitter
|
43
|
+
stub_oauth
|
44
|
+
end
|
45
|
+
it "crawls twitter and posts to tumblr" do
|
46
|
+
Tweetlr::Combinators::TwitterTumblr.stub(:generate_photo_post_from_tweet).and_return stubbed_tumblr_post
|
47
|
+
since_id_before = tweetlr_config[:since_id]
|
48
|
+
result = Tweetlr::Core.crawl(tweetlr_config)
|
49
|
+
since_id_before.should_not == result[:since_id]
|
50
|
+
end
|
51
|
+
it "copes with legacy config that use tumblr v1 api (basic auth)" do
|
52
|
+
legacy_config = {
|
53
|
+
:id=>16,
|
54
|
+
:search_term=>"booga",
|
55
|
+
:tumblr_email=>"wooga@booga.de",
|
56
|
+
:tumblr_password=>"boogawooga",
|
57
|
+
:since_id=>"246543935663661057",
|
58
|
+
:results_per_page=>3,
|
59
|
+
:result_type=>nil,
|
60
|
+
:api_endpoint_twitter=>nil,
|
61
|
+
:api_endpoint_tumblr=>nil,
|
62
|
+
:update_period=>900,
|
63
|
+
:shouts=>nil,
|
64
|
+
:loglevel=>1,
|
65
|
+
:whitelist=>["user1", "user2"],
|
66
|
+
:last_crawl=>"Fri, 14 Sep 2012 09:43:10 UTC +00:00",
|
67
|
+
:active=>true,
|
68
|
+
:tumblr_oauth_access_token_key=>nil,
|
69
|
+
:tumblr_oauth_access_token_secret=>nil}
|
70
|
+
since_id_before = legacy_config[:since_id]
|
71
|
+
result = Tweetlr::Core.crawl(legacy_config)
|
72
|
+
since_id_before.should_not == result[:since_id]
|
73
|
+
end
|
59
74
|
end
|
60
75
|
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Tweetlr::Processors::Http do
|
4
|
+
it ".http_get copes with errors by retrying, not raising" do
|
5
|
+
Curl::Easy.any_instance.stub(:perform).and_raise(Curl::Err::CurlError)
|
6
|
+
Tweetlr::Processors::Http.stub!(:sleep) #releasing the sleep handbrake...
|
7
|
+
Tweetlr::Processors::Http.should_receive(:sleep).with(3)
|
8
|
+
expect { Tweetlr::Processors::Http.http_get('mocky wocky')}.to_not raise_error(Curl::Err::CurlError)
|
9
|
+
end
|
10
|
+
end
|
@@ -60,4 +60,10 @@ describe Tweetlr::Processors::PhotoService do
|
|
60
60
|
link = Tweetlr::Processors::PhotoService::link_url_redirect 'im mocked anyways'
|
61
61
|
link.should == 'http://s3.amazonaws.com/imgly_production/899582/full.jpg'
|
62
62
|
end
|
63
|
+
it "copes with redirect errors" do
|
64
|
+
Curl::Easy.any_instance.stub(:http_get).and_raise(Curl::Err::CurlError)
|
65
|
+
Tweetlr::Processors::PhotoService.stub!(:sleep) #releasing the sleep handbrake...
|
66
|
+
Tweetlr::Processors::PhotoService.should_receive(:sleep).with(3)
|
67
|
+
expect { Tweetlr::Processors::PhotoService::link_url_redirect 'im mocked anyways'}.to_not raise_error(Curl::Err::CurlError)
|
68
|
+
end
|
63
69
|
end
|
@@ -14,19 +14,36 @@ describe Tweetlr::Processors::Twitter do
|
|
14
14
|
:api_endpoint_twitter => Tweetlr::API_ENDPOINT_TWITTER
|
15
15
|
}
|
16
16
|
end
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
17
|
+
describe "#search(config)" do
|
18
|
+
it "searches twitter for a given term" do
|
19
|
+
stub_twitter
|
20
|
+
response = Tweetlr::Processors::Twitter::search @twitter_config
|
21
|
+
tweets = response['results']
|
22
|
+
tweets.should be
|
23
|
+
tweets.should_not be_empty
|
24
|
+
end
|
23
25
|
end
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
26
|
+
describe "#lazy_search(config)" do
|
27
|
+
it "searches twitter for a given term" do
|
28
|
+
stub_twitter
|
29
|
+
response = Tweetlr::Processors::Twitter::lazy_search @twitter_config
|
30
|
+
tweets = response['results']
|
31
|
+
tweets.should be
|
32
|
+
tweets.should_not be_empty
|
33
|
+
end
|
34
|
+
it "copes with nil as input" do
|
35
|
+
stub_twitter
|
36
|
+
Tweetlr::Processors::Twitter::lazy_search(nil).should be_nil
|
37
|
+
end
|
38
|
+
end
|
39
|
+
describe "#extract_links()" do
|
40
|
+
it "extracts links" do
|
41
|
+
links = Tweetlr::Processors::Twitter::extract_links ''
|
42
|
+
links.should be_nil
|
43
|
+
links = Tweetlr::Processors::Twitter::extract_links @twitter_response
|
44
|
+
links[0].should == @first_link
|
45
|
+
links[1].should == @second_link
|
46
|
+
links[2].should == @third_link
|
47
|
+
end
|
31
48
|
end
|
32
49
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,14 +1,19 @@
|
|
1
1
|
#encoding: utf-8
|
2
|
+
require 'simplecov'
|
3
|
+
SimpleCov.start
|
4
|
+
|
2
5
|
require "bundler"
|
3
6
|
require "logger"
|
4
7
|
require "yaml"
|
5
8
|
require "#{File.dirname(__FILE__)}/../lib/tweetlr"
|
6
9
|
|
10
|
+
|
7
11
|
Bundler.require :default, :development, :test
|
8
12
|
|
9
|
-
logger = Logger.new(
|
10
|
-
logger.level = Logger::
|
13
|
+
logger = Logger.new('/dev/null')
|
14
|
+
#logger.level = Logger::DEBUG
|
11
15
|
Tweetlr::LogAware.log = logger
|
16
|
+
Tweetlr::LogAware.log
|
12
17
|
|
13
18
|
def check_pic_url_extraction(service)
|
14
19
|
image_url = Tweetlr::Processors::PhotoService.find_image_url @links[service]
|
@@ -16,7 +21,7 @@ def check_pic_url_extraction(service)
|
|
16
21
|
end
|
17
22
|
|
18
23
|
def stub_oauth
|
19
|
-
OAuth::AccessToken.any_instance.stub(:post).and_return(Net::HTTPCreated.new("Created.", "201",
|
24
|
+
OAuth::AccessToken.any_instance.stub(:post).and_return(Net::HTTPCreated.new("Created.", "201", true))
|
20
25
|
end
|
21
26
|
|
22
27
|
def stub_tumblr
|
@@ -38,7 +43,7 @@ Content-Type: text/plain; charset=utf-8
|
|
38
43
|
end
|
39
44
|
|
40
45
|
def stub_twitter
|
41
|
-
Curl::Easy.any_instance.stub(:body_str).and_return
|
46
|
+
Curl::Easy.any_instance.stub(:body_str).and_return %^{"completed_in":0.013,"max_id":328511599881097216,"max_id_str":"328511599881097216","next_page":"?page=2&max_id=328511599881097216&q=coffeediary&rpp=3&result_type=recent","page":1,"query":"coffeediary","refresh_url":"?since_id=328511599881097216&q=coffeediary&result_type=recent","results":[{"created_at":"Sun, 28 Apr 2013 14:10:43 +0000","from_user":"sven_kr","from_user_id":61437533,"from_user_id_str":"61437533","from_user_name":"Sven Kr\u00e4uter | 5v3n","geo":{"coordinates":[53.563684,9.959734],"type":"Point"},"id":328511599881097216,"id_str":"328511599881097216","iso_language_code":"en","metadata":{"result_type":"recent"},"place":{"full_name":"Hamburg","id":"171b760b35e47fe5","type":"CITY"},"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/2305774679\/am2l5mt563000bt0jwvw_normal.jpeg","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/2305774679\/am2l5mt563000bt0jwvw_normal.jpeg","source":"<a href="http:\/\/foursquare.com">foursquare<\/a>","text":"#coffeediary Wanted to stay at home but had to test the new tweetlr ;-) (@ Mamalicious w\/ @snoopsmaus) [pic]: http:\/\/t.co\/7ilE9BDJxJ"}],"results_per_page":1,"since_id":0,"since_id_str":"0"}^
|
42
47
|
Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
|
43
48
|
end
|
44
49
|
|
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.
|
3
|
+
s.version = "0.1.22"
|
4
4
|
s.author = "Sven Kraeuter"
|
5
5
|
s.email = "sven.kraeuter@gmail.com"
|
6
6
|
s.homepage = "http://tweetlr.5v3n.com"
|
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.add_development_dependency "rake"
|
21
21
|
s.add_development_dependency "rspec"
|
22
22
|
s.add_development_dependency "rdoc"
|
23
|
+
s.add_development_dependency "simplecov"
|
23
24
|
|
24
25
|
s.files = `git ls-files`.split("\n")
|
25
26
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
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.
|
4
|
+
version: 0.1.22
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -155,6 +155,22 @@ dependencies:
|
|
155
155
|
- - ! '>='
|
156
156
|
- !ruby/object:Gem::Version
|
157
157
|
version: '0'
|
158
|
+
- !ruby/object:Gem::Dependency
|
159
|
+
name: simplecov
|
160
|
+
requirement: !ruby/object:Gem::Requirement
|
161
|
+
none: false
|
162
|
+
requirements:
|
163
|
+
- - ! '>='
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: '0'
|
166
|
+
type: :development
|
167
|
+
prerelease: false
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
170
|
+
requirements:
|
171
|
+
- - ! '>='
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
158
174
|
description: tweetlr crawls twitter for a given term, extracts photos out of the collected
|
159
175
|
tweets' short urls and posts the images to tumblr.
|
160
176
|
email: sven.kraeuter@gmail.com
|
@@ -175,6 +191,7 @@ files:
|
|
175
191
|
- Rakefile
|
176
192
|
- bin/tweetlr
|
177
193
|
- config/tweetlr.yml
|
194
|
+
- config/tweetlr.yml.test
|
178
195
|
- lib/tweetlr.rb
|
179
196
|
- lib/tweetlr/combinators/twitter_tumblr.rb
|
180
197
|
- lib/tweetlr/core.rb
|
@@ -185,6 +202,7 @@ files:
|
|
185
202
|
- lib/tweetlr/processors/twitter.rb
|
186
203
|
- spec/combinators/twitter_tumblr_combinator_spec.rb
|
187
204
|
- spec/core_spec.rb
|
205
|
+
- spec/processors/http_spec.rb
|
188
206
|
- spec/processors/photo_services_processor_spec.rb
|
189
207
|
- spec/processors/tumblr_processor_spec.rb
|
190
208
|
- spec/processors/twitter_processor_spec.rb
|
@@ -202,18 +220,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
202
220
|
- - ! '>='
|
203
221
|
- !ruby/object:Gem::Version
|
204
222
|
version: '0'
|
205
|
-
segments:
|
206
|
-
- 0
|
207
|
-
hash: 3037405379502590450
|
208
223
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
209
224
|
none: false
|
210
225
|
requirements:
|
211
226
|
- - ! '>='
|
212
227
|
- !ruby/object:Gem::Version
|
213
228
|
version: '0'
|
214
|
-
segments:
|
215
|
-
- 0
|
216
|
-
hash: 3037405379502590450
|
217
229
|
requirements: []
|
218
230
|
rubyforge_project: tweetlr
|
219
231
|
rubygems_version: 1.8.25
|
@@ -224,6 +236,7 @@ summary: tweetlr crawls twitter for a given term, extracts photos out of the col
|
|
224
236
|
test_files:
|
225
237
|
- spec/combinators/twitter_tumblr_combinator_spec.rb
|
226
238
|
- spec/core_spec.rb
|
239
|
+
- spec/processors/http_spec.rb
|
227
240
|
- spec/processors/photo_services_processor_spec.rb
|
228
241
|
- spec/processors/tumblr_processor_spec.rb
|
229
242
|
- spec/processors/twitter_processor_spec.rb
|