twithub 0.1.3 → 0.1.4
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/lib/twithub/entry_builder_methods.rb +5 -0
- data/lib/twithub/feed_entry.rb +9 -1
- data/lib/twithub/github.rb +3 -3
- data/lib/twithub/twitter.rb +2 -1
- data/lib/twithub/version.rb +1 -1
- data/spec/twithub/feed_entry_spec.rb +20 -0
- data/spec/twithub/github_entry_spec.rb +3 -1
- data/spec/twithub/github_spec.rb +5 -2
- data/spec/twithub/twitter_entry_spec.rb +3 -1
- data/spec/twithub/twitter_spec.rb +4 -2
- metadata +9 -9
data/lib/twithub/feed_entry.rb
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
module Twithub
|
|
3
3
|
class FeedEntry
|
|
4
4
|
include Comparable
|
|
5
|
-
attr_reader :content, :posted_at, :origin, :username
|
|
5
|
+
attr_reader :content, :posted_at, :origin, :username, :url
|
|
6
6
|
|
|
7
7
|
def <=>(other_entry)
|
|
8
8
|
other_entry.posted_at <=> posted_at
|
|
@@ -12,5 +12,13 @@ module Twithub
|
|
|
12
12
|
{ :content => content, :username => username,
|
|
13
13
|
:posted_at => posted_at, :origin => origin }.to_json
|
|
14
14
|
end
|
|
15
|
+
|
|
16
|
+
def from_twitter?
|
|
17
|
+
origin == Twithub::TWITTER
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def from_github?
|
|
21
|
+
origin == Twithub::GITHUB
|
|
22
|
+
end
|
|
15
23
|
end
|
|
16
24
|
end
|
data/lib/twithub/github.rb
CHANGED
|
@@ -2,9 +2,9 @@ module Twithub
|
|
|
2
2
|
class Github
|
|
3
3
|
def self.entries_for(username)
|
|
4
4
|
return [] unless username
|
|
5
|
-
|
|
6
|
-
Feedzirra::Feed.fetch_and_parse(
|
|
7
|
-
GithubEntry.new.with_content(entry.title).with_username(entry.author).with_posted_at(entry.published)
|
|
5
|
+
feed_url = "http://github.com/#{username}.atom"
|
|
6
|
+
Feedzirra::Feed.fetch_and_parse(feed_url).entries.map do |entry|
|
|
7
|
+
GithubEntry.new.with_content(entry.title).with_username(entry.author).with_posted_at(entry.published).with_url(entry.url)
|
|
8
8
|
end
|
|
9
9
|
end
|
|
10
10
|
end
|
data/lib/twithub/twitter.rb
CHANGED
|
@@ -3,7 +3,8 @@ module Twithub
|
|
|
3
3
|
def self.entries_for(username)
|
|
4
4
|
return [] unless username
|
|
5
5
|
::Twitter.user_timeline(username).map do |status|
|
|
6
|
-
|
|
6
|
+
url = "http://twitter.com/#{status.from_user}/status/#{status.id}"
|
|
7
|
+
TwitterEntry.new.with_content(status.text).with_username(status.from_user).with_posted_at(status.created_at).with_url(url)
|
|
7
8
|
end
|
|
8
9
|
end
|
|
9
10
|
end
|
data/lib/twithub/version.rb
CHANGED
|
@@ -24,6 +24,26 @@ describe Twithub::FeedEntry do
|
|
|
24
24
|
end
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
+
describe "entries with mocked out origins" do
|
|
28
|
+
let(:twitter_entry) { Twithub::FeedEntry.new }
|
|
29
|
+
let(:github_entry) { Twithub::FeedEntry.new }
|
|
30
|
+
|
|
31
|
+
before do
|
|
32
|
+
twitter_entry.stub(:origin).and_return(Twithub::TWITTER)
|
|
33
|
+
github_entry.stub(:origin).and_return(Twithub::GITHUB)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it "should know if the entry is from twitter" do
|
|
37
|
+
twitter_entry.from_twitter?.should be_true
|
|
38
|
+
github_entry.from_twitter?.should be_false
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it "should know if the entry is from github" do
|
|
42
|
+
github_entry.from_github?.should be_true
|
|
43
|
+
twitter_entry.from_github?.should be_false
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
27
47
|
describe "an entry with stubbed out attributes" do
|
|
28
48
|
let(:entry) { Twithub::FeedEntry.new }
|
|
29
49
|
let(:time) { Time.now }
|
|
@@ -4,12 +4,14 @@ describe Twithub::GithubEntry do
|
|
|
4
4
|
let(:time) { Time.now }
|
|
5
5
|
let(:text) { "just a random content string" }
|
|
6
6
|
let(:username) { "randomusername" }
|
|
7
|
+
let(:url) { "http://foo" }
|
|
7
8
|
|
|
8
9
|
it "should allow building of a twitter entry" do
|
|
9
|
-
entry = Twithub::GithubEntry.new.with_content(text).with_username(username).with_posted_at(time)
|
|
10
|
+
entry = Twithub::GithubEntry.new.with_content(text).with_username(username).with_posted_at(time).with_url(url)
|
|
10
11
|
entry.content.should == text
|
|
11
12
|
entry.username.should == username
|
|
12
13
|
entry.posted_at.should == time
|
|
13
14
|
entry.origin.should == Twithub::GITHUB
|
|
15
|
+
entry.url.should == url
|
|
14
16
|
end
|
|
15
17
|
end
|
data/spec/twithub/github_spec.rb
CHANGED
|
@@ -6,8 +6,9 @@ describe Twithub::Github do
|
|
|
6
6
|
let(:recent_time) { Time.now }
|
|
7
7
|
let(:username) { "pzimbelman" }
|
|
8
8
|
let(:url) { "http://github.com/#{username}.atom" }
|
|
9
|
-
let(:first_github_response) { double("git", :title => "pushed to master!", :author => username, :published => recent_time) }
|
|
10
|
-
let(:second_github_response) { double("git", :title => "pushed to branch", :author => username, :published => early_time) }
|
|
9
|
+
let(:first_github_response) { double("git", :title => "pushed to master!", :author => username, :published => recent_time, :url => "http://fooness") }
|
|
10
|
+
let(:second_github_response) { double("git", :title => "pushed to branch", :author => username, :published => early_time, :url => "http://barness") }
|
|
11
|
+
|
|
11
12
|
let(:responses) { [first_github_response, second_github_response] }
|
|
12
13
|
|
|
13
14
|
before do
|
|
@@ -21,11 +22,13 @@ describe Twithub::Github do
|
|
|
21
22
|
entries.first.content.should == first_github_response.title
|
|
22
23
|
entries.first.username.should == username
|
|
23
24
|
entries.first.posted_at.should == recent_time
|
|
25
|
+
entries.first.url.should == "http://fooness"
|
|
24
26
|
|
|
25
27
|
entries.last.is_a?(Twithub::GithubEntry).should be_true
|
|
26
28
|
entries.last.content.should == second_github_response.title
|
|
27
29
|
entries.last.username.should == username
|
|
28
30
|
entries.last.posted_at.should == early_time
|
|
31
|
+
entries.last.url.should == "http://barness"
|
|
29
32
|
end
|
|
30
33
|
end
|
|
31
34
|
|
|
@@ -4,12 +4,14 @@ describe Twithub::TwitterEntry do
|
|
|
4
4
|
let(:time) { Time.now }
|
|
5
5
|
let(:text) { "just a random content string" }
|
|
6
6
|
let(:username) { "randomusername" }
|
|
7
|
+
let(:url) { "http://foobar" }
|
|
7
8
|
|
|
8
9
|
it "should allow building of a twitter entry" do
|
|
9
|
-
entry = Twithub::TwitterEntry.new.with_content(text).with_username(username).with_posted_at(time)
|
|
10
|
+
entry = Twithub::TwitterEntry.new.with_content(text).with_username(username).with_posted_at(time).with_url(url)
|
|
10
11
|
entry.content.should == text
|
|
11
12
|
entry.username.should == username
|
|
12
13
|
entry.posted_at.should == time
|
|
13
14
|
entry.origin.should == Twithub::TWITTER
|
|
15
|
+
entry.url.should == url
|
|
14
16
|
end
|
|
15
17
|
end
|
|
@@ -5,8 +5,8 @@ describe Twithub::Twitter do
|
|
|
5
5
|
let(:early_time) { Time.parse("Jan 1 2011 1:00EST") }
|
|
6
6
|
let(:recent_time) { Time.now }
|
|
7
7
|
let(:username) { "pzimbelman" }
|
|
8
|
-
let(:first_twitter_response) { double("twitter", :text => "the tweet!", :from_user => username, :created_at => recent_time) }
|
|
9
|
-
let(:second_twitter_response) { double("twitter", :text => "the early tweet!", :from_user => username, :created_at => early_time) }
|
|
8
|
+
let(:first_twitter_response) { double("twitter", :text => "the tweet!", :from_user => username, :created_at => recent_time, :id => 1234) }
|
|
9
|
+
let(:second_twitter_response) { double("twitter", :text => "the early tweet!", :from_user => username, :created_at => early_time, :id => 123) }
|
|
10
10
|
|
|
11
11
|
before do
|
|
12
12
|
Twitter.should_receive(:user_timeline).with(username).and_return([first_twitter_response,
|
|
@@ -20,11 +20,13 @@ describe Twithub::Twitter do
|
|
|
20
20
|
entries.first.content.should == "the tweet!"
|
|
21
21
|
entries.first.username.should == username
|
|
22
22
|
entries.first.posted_at.should == recent_time
|
|
23
|
+
entries.first.url.should == "http://twitter.com/pzimbelman/status/1234"
|
|
23
24
|
|
|
24
25
|
entries.last.is_a?(Twithub::TwitterEntry).should be_true
|
|
25
26
|
entries.last.content.should == "the early tweet!"
|
|
26
27
|
entries.last.username.should == username
|
|
27
28
|
entries.last.posted_at.should == early_time
|
|
29
|
+
entries.last.url.should == "http://twitter.com/pzimbelman/status/123"
|
|
28
30
|
end
|
|
29
31
|
end
|
|
30
32
|
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: twithub
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.4
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -13,7 +13,7 @@ date: 2012-07-23 00:00:00.000000000 Z
|
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: rspec
|
|
16
|
-
requirement: &
|
|
16
|
+
requirement: &70303926056680 !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: :development
|
|
23
23
|
prerelease: false
|
|
24
|
-
version_requirements: *
|
|
24
|
+
version_requirements: *70303926056680
|
|
25
25
|
- !ruby/object:Gem::Dependency
|
|
26
26
|
name: rake
|
|
27
|
-
requirement: &
|
|
27
|
+
requirement: &70303926056200 !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: :development
|
|
34
34
|
prerelease: false
|
|
35
|
-
version_requirements: *
|
|
35
|
+
version_requirements: *70303926056200
|
|
36
36
|
- !ruby/object:Gem::Dependency
|
|
37
37
|
name: twitter
|
|
38
|
-
requirement: &
|
|
38
|
+
requirement: &70303926055680 !ruby/object:Gem::Requirement
|
|
39
39
|
none: false
|
|
40
40
|
requirements:
|
|
41
41
|
- - ~>
|
|
@@ -43,10 +43,10 @@ dependencies:
|
|
|
43
43
|
version: '3.3'
|
|
44
44
|
type: :runtime
|
|
45
45
|
prerelease: false
|
|
46
|
-
version_requirements: *
|
|
46
|
+
version_requirements: *70303926055680
|
|
47
47
|
- !ruby/object:Gem::Dependency
|
|
48
48
|
name: feedzirra
|
|
49
|
-
requirement: &
|
|
49
|
+
requirement: &70303926055160 !ruby/object:Gem::Requirement
|
|
50
50
|
none: false
|
|
51
51
|
requirements:
|
|
52
52
|
- - ~>
|
|
@@ -54,7 +54,7 @@ dependencies:
|
|
|
54
54
|
version: 0.2.0.rc2
|
|
55
55
|
type: :runtime
|
|
56
56
|
prerelease: false
|
|
57
|
-
version_requirements: *
|
|
57
|
+
version_requirements: *70303926055160
|
|
58
58
|
description: A gem to aggregate your recent twitter and github activity into a single
|
|
59
59
|
feed. Can accept multiple logins for either service.
|
|
60
60
|
email:
|