pupil 0.0.6 → 0.1.0
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/Gemfile +1 -0
- data/Gemfile.lock +5 -3
- data/VERSION +1 -1
- data/lib/pupil.rb +18 -660
- data/lib/pupil/account.rb +51 -0
- data/lib/pupil/base.rb +83 -0
- data/lib/pupil/blocks.rb +45 -0
- data/lib/pupil/direct_messages.rb +57 -0
- data/lib/pupil/friendships.rb +70 -0
- data/lib/pupil/{keygen.rb → keygen/keygen.rb} +0 -0
- data/lib/pupil/lists.rb +34 -0
- data/lib/pupil/schemes.rb +220 -0
- data/lib/pupil/statuses.rb +84 -0
- data/lib/pupil/stream.rb +94 -0
- data/lib/pupil/users.rb +13 -0
- data/pupil.gemspec +16 -4
- data/samples/generate-key.rb +1 -2
- data/spec/pupil_spec.rb +123 -2
- metadata +37 -17
- data/samples/ff-dumper.rb +0 -19
@@ -0,0 +1,84 @@
|
|
1
|
+
class Pupil
|
2
|
+
# @return [Array] Timeline
|
3
|
+
# @param [Hash] param
|
4
|
+
# @option param [Fixnum] :count Number of tweets
|
5
|
+
# @option param [Fixnum] :since_id
|
6
|
+
# @option param [Fixnum] :max_id
|
7
|
+
# @option param [Fixnum] :page
|
8
|
+
# @option param [Symbol] :trim_user
|
9
|
+
# @option param [Symbol] :include #=> [:rts]
|
10
|
+
# @option param [Symbol] :exclude #=> [:replies]
|
11
|
+
# @option param [Symbol] :contributor_details
|
12
|
+
def home_timeline param={}
|
13
|
+
response = self.get("/statuses/home_timeline.json", param)
|
14
|
+
statuses = Array.new
|
15
|
+
response.each do |element|
|
16
|
+
status = Status.new element
|
17
|
+
statuses << status
|
18
|
+
end
|
19
|
+
return statuses
|
20
|
+
end
|
21
|
+
|
22
|
+
# @return [Hash] mention
|
23
|
+
# @param [Hash] param
|
24
|
+
def mentions param={}
|
25
|
+
response = self.get("/statuses/mentions.json", param)
|
26
|
+
statuses = Array.new
|
27
|
+
response.each do |element|
|
28
|
+
status = Status.new element
|
29
|
+
statuses << status
|
30
|
+
end
|
31
|
+
return statuses
|
32
|
+
end
|
33
|
+
|
34
|
+
# Returning user timeline
|
35
|
+
# @return [Hash] timeline
|
36
|
+
# @param [Hash] param
|
37
|
+
# @option param [Fixnum] :user_id The ID of user
|
38
|
+
# @option param [String] :screen_name The Screen name of user
|
39
|
+
# @option param [Fixnum] :since_id
|
40
|
+
# @option param [Fixnum] :max_id
|
41
|
+
# @option param [Fixnum] :count
|
42
|
+
# @option param [Fixnum] :page Specifies
|
43
|
+
# @option param [Symbol] :trim_user
|
44
|
+
# @option param [Symbol] :include #=> [:rts]
|
45
|
+
# @option param [Symbol] :exclude #=> [:replies]
|
46
|
+
# @option param [Symbol] :contributor_details
|
47
|
+
# @example
|
48
|
+
# twitter = Pupil.new PUPIL_KEY
|
49
|
+
# twitter.user_timeline(:screen_name => 'o_ame', :exclude => :replies).each do |status|
|
50
|
+
# puts "#{status.user.screen_name}: #{status.text}"
|
51
|
+
# end
|
52
|
+
def user_timeline param={}
|
53
|
+
response = self.get("/statuses/user_timeline.json", param)
|
54
|
+
statuses = Array.new
|
55
|
+
response.each do |element|
|
56
|
+
status = Status.new element
|
57
|
+
statuses << status
|
58
|
+
end
|
59
|
+
return statuses
|
60
|
+
end
|
61
|
+
|
62
|
+
def show_status status_id
|
63
|
+
response = @access_token.get("/statuses/show/#{status_id}.json").body
|
64
|
+
return response
|
65
|
+
status = Status.new response
|
66
|
+
return status
|
67
|
+
end
|
68
|
+
|
69
|
+
def update(status, irt='')
|
70
|
+
response = self.post(
|
71
|
+
"/statuses/update.json",
|
72
|
+
"status"=> status,
|
73
|
+
"in_reply_to_status_id" => irt
|
74
|
+
)
|
75
|
+
return response
|
76
|
+
end
|
77
|
+
|
78
|
+
alias_method :tweet, :update
|
79
|
+
|
80
|
+
def destroy status_id
|
81
|
+
response = self.post("/statuses/destroy/#{status_id}.json")
|
82
|
+
return response
|
83
|
+
end
|
84
|
+
end
|
data/lib/pupil/stream.rb
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
class Pupil
|
2
|
+
class Stream
|
3
|
+
class StreamError < StandardError ; end
|
4
|
+
STREAM_APIS = {
|
5
|
+
:userstream => "https://userstream.twitter.com/2/user.json",
|
6
|
+
:filter => "https://stream.twitter.com/1/statuses/filter.json%s"
|
7
|
+
}
|
8
|
+
|
9
|
+
def initialize key
|
10
|
+
@screen_name = key[:screen_name]
|
11
|
+
@client = nil
|
12
|
+
@config = nil
|
13
|
+
|
14
|
+
@consumer = OAuth::Consumer.new(
|
15
|
+
key[:consumer_key],
|
16
|
+
key[:consumer_secret],
|
17
|
+
:site => TWITTER_API_URL
|
18
|
+
)
|
19
|
+
@access_token = OAuth::AccessToken.new(
|
20
|
+
@consumer,
|
21
|
+
key[:access_token],
|
22
|
+
key[:access_token_secret]
|
23
|
+
)
|
24
|
+
end
|
25
|
+
|
26
|
+
def start(type, param=nil, &block)
|
27
|
+
raise ArgumentError unless block_given?
|
28
|
+
|
29
|
+
run_get_stream type, param, &block
|
30
|
+
end
|
31
|
+
|
32
|
+
def run_get_stream(type, param=nil, &block)
|
33
|
+
uri = URI.parse(STREAM_APIS[type] % Pupil.param_serializer(param))
|
34
|
+
https = Net::HTTP.new(uri.host, uri.port)
|
35
|
+
https.use_ssl = true
|
36
|
+
https.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
37
|
+
https.verify_depth = 5
|
38
|
+
|
39
|
+
while true do
|
40
|
+
begin
|
41
|
+
https.start do |https|
|
42
|
+
request = Net::HTTP::Get.new(uri.request_uri)
|
43
|
+
request["User-Agent"] = "Ruby/#{RUBY_VERSION} Pupil::Stream"
|
44
|
+
request.oauth!(https, @consumer, @access_token)
|
45
|
+
buf = ""
|
46
|
+
https.request(request) do |response|
|
47
|
+
response.read_body do |chunk|
|
48
|
+
buf << chunk
|
49
|
+
while (line = buf[/.+?(\r\n)+/m]) != nil
|
50
|
+
begin
|
51
|
+
buf.sub!(line,"")
|
52
|
+
line.strip!
|
53
|
+
status = JSON.parse(line)
|
54
|
+
rescue
|
55
|
+
break
|
56
|
+
end
|
57
|
+
|
58
|
+
block.call StreamEvent.new(status)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
rescue => vars
|
64
|
+
raise StreamError, "StreamError: #{vars}"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
class StreamEvent
|
70
|
+
attr_reader :type
|
71
|
+
attr_reader :content
|
72
|
+
|
73
|
+
def initialize status
|
74
|
+
@type, @content = self.guess_event status
|
75
|
+
end
|
76
|
+
|
77
|
+
def guess_event status
|
78
|
+
if status["delete"]
|
79
|
+
return :delete, status["delete"]["status"]
|
80
|
+
elsif status["friends"]
|
81
|
+
return :friends, status["friends"]
|
82
|
+
elsif status["event"] == "favorite"
|
83
|
+
return :favorite, status
|
84
|
+
elsif status["retweeted_status"]
|
85
|
+
return :retweet, status
|
86
|
+
elsif status["text"]
|
87
|
+
return :status, status#Pupil::Status.new(status)
|
88
|
+
else
|
89
|
+
return :unknown, status
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
data/lib/pupil/users.rb
ADDED
data/pupil.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "pupil"
|
8
|
-
s.version = "0.0
|
8
|
+
s.version = "0.1.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Oame"]
|
12
|
-
s.date = "2011-
|
12
|
+
s.date = "2011-12-15"
|
13
13
|
s.description = "The \"Lazy\" Twitter API Wrapper for Ruby 1.9.2"
|
14
14
|
s.email = "oame@oameya.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -26,9 +26,18 @@ Gem::Specification.new do |s|
|
|
26
26
|
"Rakefile",
|
27
27
|
"VERSION",
|
28
28
|
"lib/pupil.rb",
|
29
|
-
"lib/pupil/
|
29
|
+
"lib/pupil/account.rb",
|
30
|
+
"lib/pupil/base.rb",
|
31
|
+
"lib/pupil/blocks.rb",
|
32
|
+
"lib/pupil/direct_messages.rb",
|
33
|
+
"lib/pupil/friendships.rb",
|
34
|
+
"lib/pupil/keygen/keygen.rb",
|
35
|
+
"lib/pupil/lists.rb",
|
36
|
+
"lib/pupil/schemes.rb",
|
37
|
+
"lib/pupil/statuses.rb",
|
38
|
+
"lib/pupil/stream.rb",
|
39
|
+
"lib/pupil/users.rb",
|
30
40
|
"pupil.gemspec",
|
31
|
-
"samples/ff-dumper.rb",
|
32
41
|
"samples/generate-key.rb",
|
33
42
|
"spec/pupil_spec.rb",
|
34
43
|
"spec/spec_helper.rb"
|
@@ -44,6 +53,7 @@ Gem::Specification.new do |s|
|
|
44
53
|
|
45
54
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
46
55
|
s.add_runtime_dependency(%q<oauth>, [">= 0"])
|
56
|
+
s.add_runtime_dependency(%q<json>, [">= 0"])
|
47
57
|
s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
|
48
58
|
s.add_development_dependency(%q<yard>, ["~> 0.6.0"])
|
49
59
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
@@ -51,6 +61,7 @@ Gem::Specification.new do |s|
|
|
51
61
|
s.add_development_dependency(%q<rcov>, [">= 0"])
|
52
62
|
else
|
53
63
|
s.add_dependency(%q<oauth>, [">= 0"])
|
64
|
+
s.add_dependency(%q<json>, [">= 0"])
|
54
65
|
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
55
66
|
s.add_dependency(%q<yard>, ["~> 0.6.0"])
|
56
67
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
@@ -59,6 +70,7 @@ Gem::Specification.new do |s|
|
|
59
70
|
end
|
60
71
|
else
|
61
72
|
s.add_dependency(%q<oauth>, [">= 0"])
|
73
|
+
s.add_dependency(%q<json>, [">= 0"])
|
62
74
|
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
63
75
|
s.add_dependency(%q<yard>, ["~> 0.6.0"])
|
64
76
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
data/samples/generate-key.rb
CHANGED
data/spec/pupil_spec.rb
CHANGED
@@ -9,21 +9,142 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
9
9
|
describe Pupil, "が #home_timeline を呼ぶ時は" do
|
10
10
|
before do
|
11
11
|
pupil = Pupil.new PUPIL_TESTKEY
|
12
|
-
@home_timeline = pupil.home_timeline
|
12
|
+
@home_timeline = pupil.home_timeline :count => 50
|
13
13
|
end
|
14
14
|
|
15
15
|
it "Array型を返すこと" do
|
16
16
|
@home_timeline.class.should == Array
|
17
17
|
end
|
18
|
+
|
19
|
+
it "sizeが50であること" do
|
20
|
+
@home_timeline.size.should == 50
|
21
|
+
end
|
18
22
|
end
|
19
23
|
|
20
24
|
describe Pupil, "が #mentions を呼ぶ時は" do
|
21
25
|
before do
|
22
26
|
pupil = Pupil.new PUPIL_TESTKEY
|
23
|
-
@mentions = pupil.mentions
|
27
|
+
@mentions = pupil.mentions :count => 10
|
24
28
|
end
|
25
29
|
|
26
30
|
it "Array型を返すこと" do
|
27
31
|
@mentions.class.should == Array
|
28
32
|
end
|
33
|
+
|
34
|
+
it "sizeが50であること" do
|
35
|
+
@mentions.size.should == 10
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe Pupil, "が #verify_credentials を呼ぶ時は" do
|
40
|
+
before do
|
41
|
+
pupil = Pupil.new PUPIL_TESTKEY
|
42
|
+
@vc = pupil.verify_credentials
|
43
|
+
end
|
44
|
+
|
45
|
+
it "Pupil::User型を返すこと" do
|
46
|
+
@vc.class.should == Pupil::User
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe Pupil, "が #user_timeline を呼ぶ時は" do
|
51
|
+
before do
|
52
|
+
pupil = Pupil.new PUPIL_TESTKEY
|
53
|
+
@user_timeline = pupil.user_timeline :screen_name => pupil.screen_name
|
54
|
+
end
|
55
|
+
|
56
|
+
it "Array型を返すこと" do
|
57
|
+
@user_timeline.class.should == Array
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe Pupil, "が #friendship? を呼ぶ時は" do
|
62
|
+
before do
|
63
|
+
pupil = Pupil.new PUPIL_TESTKEY
|
64
|
+
@nonfriendship = pupil.friendship? pupil.screen_name, KNOWN_NONFOLLOWED_USER
|
65
|
+
@friendship = pupil.friendship? pupil.screen_name, KNOWN_USER
|
66
|
+
end
|
67
|
+
|
68
|
+
it "フォロー関係に無い場合はFalseClass型を返すこと" do
|
69
|
+
@nonfriendship.class.should == FalseClass
|
70
|
+
end
|
71
|
+
|
72
|
+
it "フォロー関係にある場合はTrueClass型を返すこと" do
|
73
|
+
@friendship.class.should == TrueClass
|
74
|
+
end
|
29
75
|
end
|
76
|
+
|
77
|
+
describe Pupil, "が #follow を呼ぶ時は" do
|
78
|
+
before do
|
79
|
+
pupil = Pupil.new PUPIL_TESTKEY
|
80
|
+
@follow = pupil.follow :screen_name => KNOWN_NONFOLLOWED_USER
|
81
|
+
@follow_fail = pupil.follow :screen_name => UNKNOWN_USER
|
82
|
+
end
|
83
|
+
|
84
|
+
it "フォローに成功した場合はPupil::User型を返すこと" do
|
85
|
+
@follow.class.should == Pupil::User
|
86
|
+
end
|
87
|
+
|
88
|
+
it "フォローに失敗した場合はFalseClass型を返すこと" do
|
89
|
+
@follow_fail.class.should == FalseClass
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
describe Pupil, "が #unfollow を呼ぶ時は" do
|
94
|
+
before do
|
95
|
+
pupil = Pupil.new PUPIL_TESTKEY
|
96
|
+
@unfollow = pupil.unfollow :screen_name => KNOWN_NONFOLLOWED_USER
|
97
|
+
@unfollow_fail = pupil.unfollow :screen_name => UNKNOWN_USER
|
98
|
+
end
|
99
|
+
|
100
|
+
it "成功した場合はPupil::User型を返すこと" do
|
101
|
+
@unfollow.class.should == Pupil::User
|
102
|
+
end
|
103
|
+
|
104
|
+
it "失敗した場合にはFalseClassを返すこと" do
|
105
|
+
@unfollow_fail.class.should == FalseClass
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
describe Pupil, "が #block を呼ぶ時は" do
|
110
|
+
before do
|
111
|
+
pupil = Pupil.new PUPIL_TESTKEY
|
112
|
+
@block = pupil.block :screen_name => KNOWN_NONFOLLOWED_USER
|
113
|
+
@block_fail = pupil.block :screen_name => UNKNOWN_USER
|
114
|
+
end
|
115
|
+
|
116
|
+
it "成功した場合はPupil::User型を返すこと" do
|
117
|
+
@block.class.should == Pupil::User
|
118
|
+
end
|
119
|
+
|
120
|
+
it "失敗した場合にはFalseClassを返すこと" do
|
121
|
+
@block_fail.class.should == FalseClass
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
describe Pupil, "が #unblock を呼ぶ時は" do
|
126
|
+
before do
|
127
|
+
pupil = Pupil.new PUPIL_TESTKEY
|
128
|
+
@unblock = pupil.unblock :screen_name => KNOWN_NONFOLLOWED_USER
|
129
|
+
@unblock_fail = pupil.unblock :screen_name => UNKNOWN_USER
|
130
|
+
end
|
131
|
+
|
132
|
+
it "成功した場合はPupil::User型を返すこと" do
|
133
|
+
@unblock.class.should == Pupil::User
|
134
|
+
end
|
135
|
+
|
136
|
+
it "失敗した場合にはFalseClassを返すこと" do
|
137
|
+
@unblock_fail.class.should == FalseClass
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
describe Pupil, "が #blocking を呼ぶ時は" do
|
142
|
+
before do
|
143
|
+
pupil = Pupil.new PUPIL_TESTKEY
|
144
|
+
@blocking = pupil.blocking
|
145
|
+
end
|
146
|
+
|
147
|
+
it "Array型を返すこと" do
|
148
|
+
@blocking.class.should == Array
|
149
|
+
end
|
150
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pupil
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
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
|
+
date: 2011-12-15 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: oauth
|
16
|
-
requirement: &
|
16
|
+
requirement: &70343823054920 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,21 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70343823054920
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: json
|
27
|
+
requirement: &70343823033660 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70343823033660
|
25
36
|
- !ruby/object:Gem::Dependency
|
26
37
|
name: rspec
|
27
|
-
requirement: &
|
38
|
+
requirement: &70343823032620 !ruby/object:Gem::Requirement
|
28
39
|
none: false
|
29
40
|
requirements:
|
30
41
|
- - ~>
|
@@ -32,10 +43,10 @@ dependencies:
|
|
32
43
|
version: 2.3.0
|
33
44
|
type: :development
|
34
45
|
prerelease: false
|
35
|
-
version_requirements: *
|
46
|
+
version_requirements: *70343823032620
|
36
47
|
- !ruby/object:Gem::Dependency
|
37
48
|
name: yard
|
38
|
-
requirement: &
|
49
|
+
requirement: &70343823031540 !ruby/object:Gem::Requirement
|
39
50
|
none: false
|
40
51
|
requirements:
|
41
52
|
- - ~>
|
@@ -43,10 +54,10 @@ dependencies:
|
|
43
54
|
version: 0.6.0
|
44
55
|
type: :development
|
45
56
|
prerelease: false
|
46
|
-
version_requirements: *
|
57
|
+
version_requirements: *70343823031540
|
47
58
|
- !ruby/object:Gem::Dependency
|
48
59
|
name: bundler
|
49
|
-
requirement: &
|
60
|
+
requirement: &70343823029980 !ruby/object:Gem::Requirement
|
50
61
|
none: false
|
51
62
|
requirements:
|
52
63
|
- - ~>
|
@@ -54,10 +65,10 @@ dependencies:
|
|
54
65
|
version: 1.0.0
|
55
66
|
type: :development
|
56
67
|
prerelease: false
|
57
|
-
version_requirements: *
|
68
|
+
version_requirements: *70343823029980
|
58
69
|
- !ruby/object:Gem::Dependency
|
59
70
|
name: jeweler
|
60
|
-
requirement: &
|
71
|
+
requirement: &70343823027780 !ruby/object:Gem::Requirement
|
61
72
|
none: false
|
62
73
|
requirements:
|
63
74
|
- - ~>
|
@@ -65,10 +76,10 @@ dependencies:
|
|
65
76
|
version: 1.6.4
|
66
77
|
type: :development
|
67
78
|
prerelease: false
|
68
|
-
version_requirements: *
|
79
|
+
version_requirements: *70343823027780
|
69
80
|
- !ruby/object:Gem::Dependency
|
70
81
|
name: rcov
|
71
|
-
requirement: &
|
82
|
+
requirement: &70343823026600 !ruby/object:Gem::Requirement
|
72
83
|
none: false
|
73
84
|
requirements:
|
74
85
|
- - ! '>='
|
@@ -76,7 +87,7 @@ dependencies:
|
|
76
87
|
version: '0'
|
77
88
|
type: :development
|
78
89
|
prerelease: false
|
79
|
-
version_requirements: *
|
90
|
+
version_requirements: *70343823026600
|
80
91
|
description: The "Lazy" Twitter API Wrapper for Ruby 1.9.2
|
81
92
|
email: oame@oameya.com
|
82
93
|
executables: []
|
@@ -94,9 +105,18 @@ files:
|
|
94
105
|
- Rakefile
|
95
106
|
- VERSION
|
96
107
|
- lib/pupil.rb
|
97
|
-
- lib/pupil/
|
108
|
+
- lib/pupil/account.rb
|
109
|
+
- lib/pupil/base.rb
|
110
|
+
- lib/pupil/blocks.rb
|
111
|
+
- lib/pupil/direct_messages.rb
|
112
|
+
- lib/pupil/friendships.rb
|
113
|
+
- lib/pupil/keygen/keygen.rb
|
114
|
+
- lib/pupil/lists.rb
|
115
|
+
- lib/pupil/schemes.rb
|
116
|
+
- lib/pupil/statuses.rb
|
117
|
+
- lib/pupil/stream.rb
|
118
|
+
- lib/pupil/users.rb
|
98
119
|
- pupil.gemspec
|
99
|
-
- samples/ff-dumper.rb
|
100
120
|
- samples/generate-key.rb
|
101
121
|
- spec/pupil_spec.rb
|
102
122
|
- spec/spec_helper.rb
|
@@ -115,7 +135,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
115
135
|
version: '0'
|
116
136
|
segments:
|
117
137
|
- 0
|
118
|
-
hash:
|
138
|
+
hash: 4408204829077515658
|
119
139
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
140
|
none: false
|
121
141
|
requirements:
|