pupil 0.1.0 → 0.1.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.
Files changed (44) hide show
  1. data/.document +0 -1
  2. data/Rakefile +12 -12
  3. data/VERSION +1 -1
  4. data/doc/Pupil.html +3455 -0
  5. data/doc/Pupil/DirectMessage.html +848 -0
  6. data/doc/Pupil/Entities.html +416 -0
  7. data/doc/Pupil/Hashtag.html +416 -0
  8. data/doc/Pupil/Keygen.html +838 -0
  9. data/doc/Pupil/Keygen/MissingRequiredTokens.html +116 -0
  10. data/doc/Pupil/List.html +992 -0
  11. data/doc/Pupil/NetworkError.html +116 -0
  12. data/doc/Pupil/Status.html +1570 -0
  13. data/doc/Pupil/Stream.html +439 -0
  14. data/doc/Pupil/Stream/StreamError.html +116 -0
  15. data/doc/Pupil/Stream/StreamEvent.html +421 -0
  16. data/doc/Pupil/URL.html +488 -0
  17. data/doc/Pupil/UnsupportedParameter.html +116 -0
  18. data/doc/Pupil/User.html +3008 -0
  19. data/doc/_index.html +282 -0
  20. data/doc/class_list.html +47 -0
  21. data/doc/css/common.css +1 -0
  22. data/doc/css/full_list.css +55 -0
  23. data/doc/css/style.css +322 -0
  24. data/doc/file.LICENSE.html +85 -0
  25. data/doc/file.README.html +113 -0
  26. data/doc/file_list.html +52 -0
  27. data/doc/frames.html +13 -0
  28. data/doc/index.html +113 -0
  29. data/doc/js/app.js +205 -0
  30. data/doc/js/full_list.js +167 -0
  31. data/doc/js/jquery.js +16 -0
  32. data/doc/method_list.html +1182 -0
  33. data/doc/top-level-namespace.html +103 -0
  34. data/lib/pupil.rb +1 -9
  35. data/lib/pupil/base.rb +6 -0
  36. data/lib/pupil/blocks.rb +3 -4
  37. data/lib/pupil/keygen.rb +5 -0
  38. data/lib/pupil/keygen/{keygen.rb → base.rb} +0 -2
  39. data/lib/pupil/stream.rb +5 -93
  40. data/lib/pupil/stream/base.rb +94 -0
  41. data/samples/generate-key.rb +2 -2
  42. data/spec/spec_helper.rb +2 -2
  43. metadata +53 -22
  44. data/pupil.gemspec +0 -81
@@ -0,0 +1,103 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>
7
+ Top Level Namespace
8
+
9
+ &mdash; Documentation by YARD 0.7.3
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ relpath = '';
19
+ if (relpath != '') relpath += '/';
20
+ </script>
21
+
22
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
23
+
24
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
25
+
26
+
27
+ </head>
28
+ <body>
29
+ <script type="text/javascript" charset="utf-8">
30
+ if (window.top.frames.main) document.body.className = 'frames';
31
+ </script>
32
+
33
+ <div id="header">
34
+ <div id="menu">
35
+
36
+ <a href="_index.html">Index</a> &raquo;
37
+
38
+
39
+ <span class="title">Top Level Namespace</span>
40
+
41
+
42
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
43
+ </div>
44
+
45
+ <div id="search">
46
+
47
+ <a id="class_list_link" href="#">Class List</a>
48
+
49
+ <a id="method_list_link" href="#">Method List</a>
50
+
51
+ <a id="file_list_link" href="#">File List</a>
52
+
53
+ </div>
54
+ <div class="clear"></div>
55
+ </div>
56
+
57
+ <iframe id="search_frame"></iframe>
58
+
59
+ <div id="content"><h1>Top Level Namespace
60
+
61
+
62
+
63
+ </h1>
64
+
65
+ <dl class="box">
66
+
67
+
68
+
69
+
70
+
71
+
72
+
73
+
74
+ </dl>
75
+ <div class="clear"></div>
76
+
77
+ <h2>Defined Under Namespace</h2>
78
+ <p class="children">
79
+
80
+
81
+
82
+
83
+ <strong class="classes">Classes:</strong> <span class='object_link'><a href="Pupil.html" title="Pupil (class)">Pupil</a></span>
84
+
85
+
86
+ </p>
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+ </div>
95
+
96
+ <div id="footer">
97
+ Generated on Fri Dec 16 17:19:17 2011 by
98
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
99
+ 0.7.3 (ruby-1.9.2).
100
+ </div>
101
+
102
+ </body>
103
+ </html>
data/lib/pupil.rb CHANGED
@@ -1,12 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
- require "net/http"
4
- require "uri"
5
- require "pp"
6
- require "rubygems" if RUBY_VERSION < "1.9.0"
7
- require "json"
8
- require "oauth"
9
-
10
3
  $LOAD_PATH << File.dirname(File.expand_path(__FILE__)) if RUBY_VERSION >= "1.9.0"
11
4
  require "pupil/base"
12
5
  require "pupil/schemes"
@@ -16,5 +9,4 @@ require "pupil/users"
16
9
  require "pupil/direct_messages"
17
10
  require "pupil/lists"
18
11
  require "pupil/friendships"
19
- require "pupil/blocks"
20
- require "pupil/stream"
12
+ require "pupil/blocks"
data/lib/pupil/base.rb CHANGED
@@ -1,3 +1,9 @@
1
+ require "rubygems"
2
+ require "net/http"
3
+ require "uri"
4
+ require "oauth"
5
+ require "json"
6
+
1
7
  class Pupil
2
8
  attr_reader :screen_name
3
9
  class UnsupportedParameter < StandardError ; end
data/lib/pupil/blocks.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  class Pupil
2
2
  # @param [Fixnum] id id
3
- # @return [Hash] response
3
+ # @return [Pupil::User] response
4
4
  def block param
5
5
  case param.keys[0].to_sym
6
6
  when :screen_name
@@ -16,7 +16,7 @@ class Pupil
16
16
  end
17
17
 
18
18
  # @param [Fixnum] id id
19
- # @return [Hash] response
19
+ # @return [Pupil::User] response
20
20
  def unblock param
21
21
  case param.keys[0].to_sym
22
22
  when :screen_name
@@ -31,10 +31,9 @@ class Pupil
31
31
  return false
32
32
  end
33
33
 
34
- # @return [Hash] list of blocking users
34
+ # @return [Array] list of blocking users
35
35
  def blocking
36
36
  response = self.get("/blocks/blocking.json")
37
- p response
38
37
  users = Array.new
39
38
  response["users"].each do |element|
40
39
  user = User.new element
@@ -0,0 +1,5 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ $LOAD_PATH << File.dirname(File.expand_path(__FILE__)) if RUBY_VERSION >= "1.9.0"
4
+ require "base"
5
+ require "keygen/base"
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  class Pupil
4
2
  class Keygen
5
3
  attr_reader :consumer_key
data/lib/pupil/stream.rb CHANGED
@@ -1,94 +1,6 @@
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
- }
1
+ # -*- coding: utf-8 -*-
8
2
 
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
3
+ $LOAD_PATH << File.dirname(File.expand_path(__FILE__)) if RUBY_VERSION >= "1.9.0"
4
+ require "base"
5
+ require "schemes"
6
+ require "stream/base"
@@ -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
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
2
  # -*- coding: utf-8 -*-
3
3
 
4
- require "rubygems" if RUBY_VERSION < "1.9.0"
5
- require "pupil"
4
+ $LOAD_PATH << File.join(File.dirname(File.expand_path(__FILE__)), "../")
5
+ require "lib/pupil/keygen"
6
6
 
7
7
  keygen = Pupil::Keygen.new
8
8
  keygen.interactive
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
2
  $LOAD_PATH.unshift(File.dirname(__FILE__))
3
- require 'rspec'
4
- require 'pupil'
3
+ require "rspec"
4
+ require "pupil"
5
5
 
6
6
  # Requires supporting files with custom matchers and macros, etc,
7
7
  # in ./support/ and its subdirectories.
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.1.0
4
+ version: 0.1.1
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-15 00:00:00.000000000Z
12
+ date: 2011-12-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: oauth
16
- requirement: &70343823054920 !ruby/object:Gem::Requirement
16
+ requirement: &70231264295240 !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: *70343823054920
24
+ version_requirements: *70231264295240
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: json
27
- requirement: &70343823033660 !ruby/object:Gem::Requirement
27
+ requirement: &70231264294480 !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: *70343823033660
35
+ version_requirements: *70231264294480
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &70343823032620 !ruby/object:Gem::Requirement
38
+ requirement: &70231264293820 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 2.3.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70343823032620
46
+ version_requirements: *70231264293820
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: yard
49
- requirement: &70343823031540 !ruby/object:Gem::Requirement
49
+ requirement: &70231264293280 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.6.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70343823031540
57
+ version_requirements: *70231264293280
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: bundler
60
- requirement: &70343823029980 !ruby/object:Gem::Requirement
60
+ requirement: &70231264292700 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.0.0
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70343823029980
68
+ version_requirements: *70231264292700
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: jeweler
71
- requirement: &70343823027780 !ruby/object:Gem::Requirement
71
+ requirement: &70231264292200 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 1.6.4
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70343823027780
79
+ version_requirements: *70231264292200
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rcov
82
- requirement: &70343823026600 !ruby/object:Gem::Requirement
82
+ requirement: &70231264291680 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,8 +87,8 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70343823026600
91
- description: The "Lazy" Twitter API Wrapper for Ruby 1.9.2
90
+ version_requirements: *70231264291680
91
+ description: The "Lazy" Twitter API Library for Ruby 1.9.x. Easy to use.
92
92
  email: oame@oameya.com
93
93
  executables: []
94
94
  extensions: []
@@ -104,19 +104,50 @@ files:
104
104
  - README.rdoc
105
105
  - Rakefile
106
106
  - VERSION
107
+ - doc/Pupil.html
108
+ - doc/Pupil/DirectMessage.html
109
+ - doc/Pupil/Entities.html
110
+ - doc/Pupil/Hashtag.html
111
+ - doc/Pupil/Keygen.html
112
+ - doc/Pupil/Keygen/MissingRequiredTokens.html
113
+ - doc/Pupil/List.html
114
+ - doc/Pupil/NetworkError.html
115
+ - doc/Pupil/Status.html
116
+ - doc/Pupil/Stream.html
117
+ - doc/Pupil/Stream/StreamError.html
118
+ - doc/Pupil/Stream/StreamEvent.html
119
+ - doc/Pupil/URL.html
120
+ - doc/Pupil/UnsupportedParameter.html
121
+ - doc/Pupil/User.html
122
+ - doc/_index.html
123
+ - doc/class_list.html
124
+ - doc/css/common.css
125
+ - doc/css/full_list.css
126
+ - doc/css/style.css
127
+ - doc/file.LICENSE.html
128
+ - doc/file.README.html
129
+ - doc/file_list.html
130
+ - doc/frames.html
131
+ - doc/index.html
132
+ - doc/js/app.js
133
+ - doc/js/full_list.js
134
+ - doc/js/jquery.js
135
+ - doc/method_list.html
136
+ - doc/top-level-namespace.html
107
137
  - lib/pupil.rb
108
138
  - lib/pupil/account.rb
109
139
  - lib/pupil/base.rb
110
140
  - lib/pupil/blocks.rb
111
141
  - lib/pupil/direct_messages.rb
112
142
  - lib/pupil/friendships.rb
113
- - lib/pupil/keygen/keygen.rb
143
+ - lib/pupil/keygen.rb
144
+ - lib/pupil/keygen/base.rb
114
145
  - lib/pupil/lists.rb
115
146
  - lib/pupil/schemes.rb
116
147
  - lib/pupil/statuses.rb
117
148
  - lib/pupil/stream.rb
149
+ - lib/pupil/stream/base.rb
118
150
  - lib/pupil/users.rb
119
- - pupil.gemspec
120
151
  - samples/generate-key.rb
121
152
  - spec/pupil_spec.rb
122
153
  - spec/spec_helper.rb
@@ -135,7 +166,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
135
166
  version: '0'
136
167
  segments:
137
168
  - 0
138
- hash: 4408204829077515658
169
+ hash: -3748164186689792004
139
170
  required_rubygems_version: !ruby/object:Gem::Requirement
140
171
  none: false
141
172
  requirements:
@@ -144,8 +175,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
144
175
  version: '0'
145
176
  requirements: []
146
177
  rubyforge_project:
147
- rubygems_version: 1.8.10
178
+ rubygems_version: 1.8.12
148
179
  signing_key:
149
180
  specification_version: 3
150
- summary: The "Lazy" Twitter API Wrapper for Ruby
181
+ summary: The "Lazy" Twitter API Library for Ruby 1.9.x
151
182
  test_files: []