pupil 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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: []