twistream 0.3.0 → 0.4.0.beta1

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 ADDED
@@ -0,0 +1,4 @@
1
+ .idea
2
+ pkg
3
+ *doc
4
+ spec/auth.yml
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,26 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ twistream (0.4.0.beta1)
5
+ yajl-ruby (~> 0.7.8)
6
+
7
+ GEM
8
+ remote: http://rubygems.org/
9
+ specs:
10
+ diff-lcs (1.1.3)
11
+ rspec (2.6.0)
12
+ rspec-core (~> 2.6.0)
13
+ rspec-expectations (~> 2.6.0)
14
+ rspec-mocks (~> 2.6.0)
15
+ rspec-core (2.6.4)
16
+ rspec-expectations (2.6.0)
17
+ diff-lcs (~> 1.1.2)
18
+ rspec-mocks (2.6.0)
19
+ yajl-ruby (0.7.9)
20
+
21
+ PLATFORMS
22
+ ruby
23
+
24
+ DEPENDENCIES
25
+ rspec (>= 2.4.0)
26
+ twistream!
data/README.md ADDED
@@ -0,0 +1,30 @@
1
+ twistream
2
+ =========
3
+
4
+ twistream is an simple client for hooking up with the twitter streaming api
5
+
6
+ Installation
7
+ ------------
8
+
9
+ ** stable release **
10
+
11
+ gem install twistream
12
+
13
+ ** beta release **
14
+
15
+ gem install twistream --pre
16
+
17
+ Usage
18
+ -----
19
+
20
+ auth = { :user => 'username', :pass => 'password' }
21
+ @client = TwiStream::Client.new(auth)
22
+ @client.sample do |status|
23
+ puts status
24
+ end
25
+
26
+ Disclaimer
27
+ ----------
28
+
29
+ This gem is still very experimental and undocumented.
30
+ There could be major API changes between future versions
data/Rakefile CHANGED
@@ -1,58 +1,16 @@
1
- require 'rubygems'
2
- require 'rake'
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
3
 
4
- begin
5
- require 'jeweler'
6
- Jeweler::Tasks.new do |gem|
7
- gem.name = "twistream"
8
- gem.summary = %Q{a simple streaming api client for twitter}
9
- gem.description = %Q{a simple streaming api client for twitter}
10
- gem.email = "swessel@gr4yweb.de"
11
- gem.homepage = "http://github.com/gr4y/twistream"
12
- gem.authors = ["Sascha Wessel"]
13
- gem.require_path = 'lib'
14
- gem.files = %w( Rakefile ) + Dir.glob("{lib}/**/*") + %w( VERSION )
15
- gem.add_runtime_dependency "yajl-ruby", "~> 0.7.8"
16
- end
17
- rescue LoadError
18
- puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
19
- end
20
-
21
- desc "generate rdoc"
22
- require 'rake/rdoctask'
23
- Rake::RDocTask.new do |rdoc|
24
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
25
- rdoc.rdoc_dir = 'rdoc'
26
- rdoc.title = "twistream #{version}"
27
- rdoc.rdoc_files.include('README*')
28
- rdoc.rdoc_files.include('lib/**/*.rb')
4
+ desc "generate documentation"
5
+ require 'yard'
6
+ YARD::Rake::YardocTask.new do |yard|
7
+ yard.files = ['lib/**/*.rb']
8
+ yard.options = ["--no-private"]
29
9
  end
30
10
 
31
11
  desc "run all specs"
32
- begin
33
- gem 'rspec', '1.3.0'
34
- require 'spec/rake/spectask'
35
- Spec::Rake::SpecTask.new do |t|
36
- t.spec_files = FileList['spec/**/*_spec.rb']
37
- end
38
- rescue LoadError
39
- warn "[twistream] rspec is not installed. install it with: gem install rspec --version 1.3.0"
40
- end
41
-
42
- require 'rake/rdoctask'
43
- Rake::RDocTask.new do |rdoc|
44
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
45
- rdoc.rdoc_dir = 'rdoc'
46
- rdoc.title = "twistream #{version}"
47
- rdoc.rdoc_files.include('README*')
48
- rdoc.rdoc_files.include('lib/**/*.rb')
49
- end
50
-
51
- require 'reek/rake/task'
52
- Reek::Rake::Task.new do |t|
53
- t.fail_on_error = false
54
- t.verbose = true
55
- end
12
+ require 'rspec/core/rake_task'
13
+ RSpec::Core::RakeTask.new(:spec)
56
14
 
57
- task :test => [:spec]
58
- task :default => [:test, :build]
15
+ task :devbuild => [:yard, :build]
16
+ task :default => [:spec, :devbuild]
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.4.0.beta1
@@ -2,8 +2,8 @@ module TwiStream
2
2
  class Client
3
3
  extend TwiStream::EventHandler
4
4
  attr_accessor :realm
5
- events :on_error
6
-
5
+ events :on_error, :on_start
6
+
7
7
  def initialize(auth)
8
8
  self.realm = "#{auth[:user]}:#{auth[:pass]}".chomp
9
9
  end
@@ -32,25 +32,24 @@ module TwiStream
32
32
  start(:filter, :locations => params.join(','), & block)
33
33
  end
34
34
 
35
- def stop
36
- if @thread.alive?
37
- @thread.kill
35
+ def stop
36
+ if @stream.alive?
37
+ @stream.kill
38
38
  end
39
39
  end
40
40
 
41
41
  private
42
42
  def start(api_method, params = {}, & block)
43
43
  url = build_uri(api_method)
44
- @thread = Thread.new do
45
- begin
44
+ begin
45
+ @stream = Thread.new do
46
46
  ::Yajl::HttpStream.post(url, params) do |status|
47
47
  block.call(status)
48
48
  end
49
- rescue
50
- on_error.trigger($!, $@)
51
49
  end
50
+ rescue
51
+ on_error.trigger($!, $@)
52
52
  end
53
- @thread.join
54
53
  end
55
54
 
56
55
  def build_uri(api_method)
@@ -6,7 +6,7 @@ module TwiStream
6
6
  @name = name
7
7
  end
8
8
 
9
- def handle(method=nil, & block)
9
+ def receive(method=nil, & block)
10
10
  @handler = method if method
11
11
  @handler = block if block
12
12
  end
@@ -0,0 +1,2 @@
1
+ :user: username
2
+ :pass: password
data/spec/client_spec.rb CHANGED
@@ -5,19 +5,17 @@ describe TwiStream::Client do
5
5
  before :all do
6
6
  auth = YAML.load_file('spec/auth.yml')
7
7
  @client = TwiStream::Client.new(auth)
8
- @client.on_error.handle do |msg,tr|
9
- puts msg
8
+ @client.on_error.receive do |msg,tr|
9
+ raise e
10
10
  end
11
11
  end
12
12
 
13
- context "start the filter stream, wait 10 seconds and stop" do
13
+ context "filter by keywords, wait, stop" do
14
14
  it "should start the filter stream" do
15
15
  keywords = "nowplaying", "nowwatching"
16
- @thread = Thread.new do
17
- @client.filter_by_keywords(keywords) do |status|
18
- status.should_not == be_nil
19
- puts status['id']
20
- end
16
+ @client.filter_by_keywords(keywords) do |status|
17
+ status.should_not == be_nil
18
+ puts status['id']
21
19
  end
22
20
  end
23
21
 
@@ -30,7 +28,7 @@ describe TwiStream::Client do
30
28
  end
31
29
  end
32
30
 
33
- context "start the sample stream, wait 10 seconds and stop" do
31
+ context "sample, wait, stop" do
34
32
  it "should start the sample stream" do
35
33
  @thread = Thread.new do
36
34
  @client.sample do |status|
data/twistream.gemspec ADDED
@@ -0,0 +1,20 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = %q{twistream}
3
+ s.version = File.read('VERSION')
4
+ s.platform = Gem::Platform::RUBY
5
+ s.authors = ["Sascha Wessel"]
6
+ s.email = %q{swessel@gr4yweb.de}
7
+ s.homepage = %q{http://github.com/gr4y/twistream}
8
+ s.description = %q{a simple streaming api client for twitter}
9
+ s.summary = %q{a simple streaming api client for twitter}
10
+
11
+ s.rubyforge_project = "twistream"
12
+
13
+ s.files = `git ls-files`.split("\n")
14
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
15
+ s.require_paths = ["lib"]
16
+
17
+ s.add_dependency "yajl-ruby", "~> 0.7.8"
18
+ s.add_development_dependency "rspec", ">= 2.4.0"
19
+ end
20
+
metadata CHANGED
@@ -1,75 +1,83 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: twistream
3
- version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.3.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.0.beta1
5
+ prerelease: 6
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Sascha Wessel
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-02-18 00:00:00 +01:00
14
- default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
12
+ date: 2011-09-02 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
17
15
  name: yajl-ruby
18
- prerelease: false
19
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70144168678040 !ruby/object:Gem::Requirement
20
17
  none: false
21
- requirements:
18
+ requirements:
22
19
  - - ~>
23
- - !ruby/object:Gem::Version
20
+ - !ruby/object:Gem::Version
24
21
  version: 0.7.8
25
22
  type: :runtime
26
- version_requirements: *id001
23
+ prerelease: false
24
+ version_requirements: *70144168678040
25
+ - !ruby/object:Gem::Dependency
26
+ name: rspec
27
+ requirement: &70144168676760 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: 2.4.0
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *70144168676760
27
36
  description: a simple streaming api client for twitter
28
37
  email: swessel@gr4yweb.de
29
38
  executables: []
30
-
31
39
  extensions: []
32
-
33
- extra_rdoc_files:
34
- - README.rdoc
35
- files:
40
+ extra_rdoc_files: []
41
+ files:
42
+ - .gitignore
43
+ - Gemfile
44
+ - Gemfile.lock
45
+ - README.md
36
46
  - Rakefile
37
47
  - VERSION
38
48
  - lib/twistream.rb
39
49
  - lib/twistream/client.rb
40
50
  - lib/twistream/event.rb
41
51
  - lib/twistream/event_handler.rb
42
- - README.rdoc
52
+ - spec/auth.yml.sample
43
53
  - spec/client_spec.rb
44
54
  - spec/spec_helper.rb
45
- has_rdoc: true
55
+ - twistream.gemspec
46
56
  homepage: http://github.com/gr4y/twistream
47
57
  licenses: []
48
-
49
58
  post_install_message:
50
59
  rdoc_options: []
51
-
52
- require_paths:
60
+ require_paths:
53
61
  - lib
54
- required_ruby_version: !ruby/object:Gem::Requirement
62
+ required_ruby_version: !ruby/object:Gem::Requirement
55
63
  none: false
56
- requirements:
57
- - - ">="
58
- - !ruby/object:Gem::Version
59
- version: "0"
60
- required_rubygems_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ! '>='
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ required_rubygems_version: !ruby/object:Gem::Requirement
61
69
  none: false
62
- requirements:
63
- - - ">="
64
- - !ruby/object:Gem::Version
65
- version: "0"
70
+ requirements:
71
+ - - ! '>'
72
+ - !ruby/object:Gem::Version
73
+ version: 1.3.1
66
74
  requirements: []
67
-
68
- rubyforge_project:
69
- rubygems_version: 1.5.0
75
+ rubyforge_project: twistream
76
+ rubygems_version: 1.8.6
70
77
  signing_key:
71
78
  specification_version: 3
72
79
  summary: a simple streaming api client for twitter
73
- test_files:
80
+ test_files:
81
+ - spec/auth.yml.sample
74
82
  - spec/client_spec.rb
75
83
  - spec/spec_helper.rb
data/README.rdoc DELETED
@@ -1,5 +0,0 @@
1
- = twistream
2
-
3
- == what?
4
-
5
- twistream is an simple client for hooking up with the twitter streaming api