trumpet-trumpet 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
- :patch: 1
2
+ :patch: 2
3
3
  :major: 0
4
4
  :minor: 0
@@ -135,19 +135,4 @@ class Hash #:nodoc:
135
135
 
136
136
  param
137
137
  end
138
-
139
- # @return <String> The hash as attributes for an XML tag.
140
- #
141
- # @example
142
- # { :one => 1, "two"=>"TWO" }.to_xml_attributes
143
- # #=> 'one="1" two="TWO"'
144
- def to_xml_attributes
145
- map do |k,v|
146
- %{#{k.to_s.snake_case.sub(/^(.{1,1})/) { |m| m.downcase }}="#{v}"}
147
- end.join(' ')
148
- end
149
- end
150
-
151
- class BlankSlate #:nodoc:
152
- instance_methods.each { |m| undef_method m unless m =~ /^__/ }
153
138
  end
@@ -9,23 +9,23 @@ module Trumpet
9
9
  attr_reader *@@attributes
10
10
 
11
11
  def self.create(options)
12
- Channel.new(HTTP.post('/channels', :parameters => options))
12
+ Channel.new(Trumpet::Request.post('/channels', :parameters => options))
13
13
  end
14
14
 
15
15
  def self.find(name)
16
- Channel.new(HTTP.post("/channels/#{name}"))
16
+ Channel.new(Trumpet::Request.get("/channels/#{name}"))
17
17
  end
18
18
 
19
19
  def self.all
20
- HTTP::get('/channels').map { |attributes| Channel.new(attributes) }
20
+ Trumpet::Request.get('/channels').map { |attributes| Channel.new(attributes) }
21
21
  end
22
22
 
23
23
  def broadcast(message)
24
- Message.new(HTTP.post("/channels/#{@name}/messages", :parameters => message.to_h))
24
+ Message.new(Trumpet::Request.post("/channels/#{@name}/messages", :parameters => message.to_h))
25
25
  end
26
26
 
27
27
  def messages
28
- messages = HTTP.get("/channels/#{@name}/messages")
28
+ messages = Trumpet::Request.get("/channels/#{@name}/messages")
29
29
  messages.map { |attributes| Message.new(attributes) }
30
30
  end
31
31
 
@@ -0,0 +1,5 @@
1
+ module Trumpet
2
+ def self.authenticate_with(username, password)
3
+ Trumpet::Request.authenticate(username, password)
4
+ end
5
+ end
@@ -14,15 +14,20 @@ module Trumpet
14
14
 
15
15
 
16
16
  def self.create(options)
17
- Listener.new(HTTP.post('/listeners', :parameters => options))
17
+ Listener.new(Trumpet::Request.post('/listeners', :parameters => options))
18
18
  end
19
19
 
20
20
  def self.find(id)
21
- Listener.new(HTTP.get("/listeners/#{id}"))
21
+ Listener.new(Trumpet::Request.get("/listeners/#{id}"))
22
22
  end
23
23
 
24
24
  def self.delete
25
- HTTP.delete("/listeners/#{@id}")
25
+ !!Trumpet::Request.delete("/listeners/#{@id}")
26
+ end
27
+
28
+ def self.all_by_receiver_id(receiver_id)
29
+ listeners = Trumpet::Request.get("/receivers/#{receiver_id}/listeners")
30
+ listeners.map { |attributes| Listener.new(attributes) }
26
31
  end
27
32
 
28
33
 
@@ -19,14 +19,31 @@ module Trumpet
19
19
  attr_accessor *@@attributes
20
20
 
21
21
  def initialize(attributes)
22
-
23
-
24
-
25
22
  @@attributes.each do |attr|
26
23
  self.send "#{attr.to_s}=".to_sym, (attributes[attr] || attributes[attr.to_s])
27
24
  end
28
25
  end
29
26
 
27
+ def self.create(attributes)
28
+ message = Message.new(attributes)
29
+ message.broadcast
30
+ message
31
+ end
32
+
33
+ # Post a message to the server, but only if it didn't come from the server
34
+ def broadcast
35
+
36
+ puts "Self to h: #{self.to_h}"
37
+ puts "And plain to h: #{to_h}"
38
+
39
+ unless @id
40
+ attributes = Trumpet::Request.post('/messages', :parameters => self.to_h)
41
+ @@attributes.each do |attr|
42
+ self.send "#{attr.to_s}=".to_sym, (attributes[attr] || attributes[attr.to_s])
43
+ end
44
+ end
45
+ end
46
+
30
47
  def to_h
31
48
  @@attributes.inject({}) { |hash, attribute| hash[attribute] = self.send(attribute); hash }
32
49
  end
@@ -19,19 +19,23 @@ module Trumpet
19
19
 
20
20
 
21
21
  def self.create(options={})
22
- Receiver.new(HTTP.post("/receivers", :parameters => options))
22
+ Receiver.new(Trumpet::Request.post("/receivers", :parameters => options))
23
23
  end
24
24
 
25
25
  def self.find(id)
26
- Receiver.new(HTTP.get("/receivers/#{id}"))
26
+ Receiver.new(Trumpet::Request.get("/receivers/#{id}"))
27
27
  end
28
28
 
29
29
  def delete
30
- HTTP.delete("/receivers/#{@id}")
30
+ !!Trumpet::Request.delete("/receivers/#{@id}")
31
+ end
32
+
33
+ def listeners
34
+ Trumpet::Listener.all_by_receiver_id(@id)
31
35
  end
32
36
 
33
37
  def messages
34
- messages = HTTP.get("/receivers/#{@id}/messages")
38
+ messages = Trumpet::Request.get("/receivers/#{@id}/messages")
35
39
  messages.map { |attributes| Message.new(attributes) }
36
40
  end
37
41
 
@@ -0,0 +1,66 @@
1
+ module Trumpet
2
+ module Request
3
+ @@http = Resourceful::HttpAccessor.new
4
+ @@uri = 'http://api.trumpet.io:3000'
5
+ # @@uri = 'http://localhost:3000'
6
+
7
+ def self.authenticate(username, password)
8
+ my_realm_authenticator = Resourceful::BasicAuthenticator.new('Trumpet', username, password)
9
+ @@http = Resourceful::HttpAccessor.new(:authenticator => my_realm_authenticator)
10
+ end
11
+
12
+ def self.get(path, options={})
13
+ do_request(:get, path, options)
14
+ end
15
+
16
+ def self.post(path, options={})
17
+ do_request(:post, path, options)
18
+ end
19
+
20
+ def self.put(path, options={})
21
+ do_request(:put, path, options)
22
+ end
23
+
24
+ def self.delete(path, options={})
25
+ do_request(:delete, path, options)
26
+ end
27
+
28
+ private
29
+
30
+ def self.do_request(method, path, options)
31
+ resource = @@http.resource("#{@@uri}#{URI.encode(path)}")
32
+ begin
33
+ response =
34
+ if method == :post
35
+ resource.send(method, options[:parameters].to_params, :content_type => "application/x-www-form-urlencoded")
36
+ elsif options[:parameters]
37
+ resource.send(method, options[:parameters].to_params)
38
+ else
39
+ resource.send(method)
40
+ end
41
+ rescue Resourceful::UnsuccessfulHttpRequestError => e
42
+ response = e.http_response
43
+ error_string = JSON.parse(response.body).to_s
44
+
45
+ case response.code
46
+ when 400
47
+ raise Trumpet::BadRequest, error_string
48
+ when 403
49
+ raise Trumpet::Forbidden, error_string
50
+ when 404
51
+ raise Trumpet::NotFound, error_string
52
+ when 405
53
+ raise Trumpet::MethodNotAllowed, error_string
54
+ when 500
55
+ raise Trumpet::InternalServerError, error_string
56
+ when 501
57
+ raise Trumpet::NotImplemented, error_string
58
+ end
59
+ rescue IOError # Coudln't connect to server
60
+ raise Trumpet::ServerConnectionError, 'Could not connect to server'
61
+ end
62
+
63
+ (options[:parse_response] == false) ? response : JSON.parse(response.body)
64
+ end
65
+ end
66
+ end
@@ -17,27 +17,33 @@ module Trumpet
17
17
  attr_reader *@@attributes
18
18
 
19
19
  def self.create(options)
20
- attributes = HTTP::post('transmitters', :query => options)
21
- Transmitter.new(attributes)
20
+ Transmitter.new(Trumpet::Request.post('transmitters', :parameters => options))
22
21
  end
23
22
 
24
23
  def self.find(id)
25
- attributes = get("/transmitters/#{id}")
26
- Transmitter.new(attributes)
24
+ Transmitter.new(Trumpet::Request.get("/transmitters/#{id}"))
27
25
  end
28
26
 
29
27
  def delete
30
- self.class.delete('/')
28
+ Trumpet::Request.delete("/transmitters/#{@id}")
31
29
  end
32
30
 
33
31
  def listeners
34
- listeners = self.class.get("/transmitters/#{id}/listeners")
32
+ listeners = Trumpet::Request.get("/transmitters/#{@id}/listeners")
35
33
  listeners.map { |attributes| Listener.new(attributes) }
36
34
  end
37
35
 
38
36
  def broadcast(message)
39
- self.class.post("/transmitters/#{@transmitter_id}/messages", :query => message.to_h)
37
+ Trumpet::Request.post("/transmitters/#{@transmitter_id}/messages", :parameters => message.to_h)
40
38
  end
41
-
39
+
40
+
41
+ protected
42
+
43
+ def initialize(attributes)
44
+ @@attributes.each do |attr|
45
+ self.instance_variable_set(:"@#{attr.to_s}", attributes[attr.to_s]) if attributes[attr.to_s]
46
+ end
47
+ end
42
48
  end
43
49
  end
data/lib/trumpet/user.rb CHANGED
@@ -4,17 +4,44 @@ module Trumpet
4
4
  attr_reader *@@attributes
5
5
 
6
6
  def self.create(options)
7
- attributes = post('/users', options)
7
+ attributes = Trumpet::Request.post('/users', :parameters => options)
8
8
  User.new(attributes)
9
9
  end
10
10
 
11
11
  def self.find(name)
12
- attributes = get("/users/#{name}")
13
- User.new(attributes) if attributes["name"]
12
+ User.new(Trumpet::Request.get("/users/#{name}"))
14
13
  end
15
14
 
16
15
  def delete
17
- self.class.delete("/users/#{@name}")
16
+ !!Trumpet::Request.delete("/users/#{@name}")
18
17
  end
18
+
19
+ def channels
20
+ channels = Trumpet::Request.get("/users/#{@name}/channels")
21
+ channels.map { |attributes| Trumpet::Channel.new(attributes) }
22
+ end
23
+
24
+ def listeners
25
+ listeners = Trumpet::Request.get("/users/#{@name}/listeners")
26
+ listeners.map { |attributes| Trumpet::Channel.new(attributes) }
27
+ end
28
+
29
+ def receivers
30
+ receivers = Trumpet::Request.get("/users/#{@name}/receivers")
31
+ receivers.map { |attributes| Trumpet::Channel.new(attributes) }
32
+ end
33
+
34
+ def transmitters
35
+ transmitters = Trumpet::Request.get("/users/#{@name}/transmitters")
36
+ transmitters.map { |attributes| Trumpet::Transmitter.new(attributes) }
37
+ end
38
+
39
+ protected
40
+
41
+ def initialize(attributes)
42
+ @@attributes.each do |attr|
43
+ self.instance_variable_set(:"@#{attr.to_s}", attributes[attr.to_s]) if attributes[attr.to_s]
44
+ end
45
+ end
19
46
  end
20
47
  end
data/lib/trumpet.rb CHANGED
@@ -5,25 +5,17 @@ require 'resourceful'
5
5
  require 'json'
6
6
 
7
7
  require 'core_extensions'
8
- require 'http'
9
8
 
10
9
 
11
10
  module Trumpet
12
- include HTTP
13
-
14
- def authenticate(name, token)
15
-
16
- end
17
-
18
- def authenticated?
19
-
20
- end
21
11
  end
22
12
 
13
+ require 'trumpet/request'
23
14
  require 'trumpet/trumpet_resource'
24
15
  require 'trumpet/exceptions'
25
16
  require 'trumpet/message'
26
17
  require 'trumpet/receiver'
27
18
  require 'trumpet/listener'
28
19
  require 'trumpet/transmitter'
29
- require 'trumpet/channel'
20
+ require 'trumpet/channel'
21
+ require 'trumpet/helpers'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trumpet-trumpet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Taras
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-04-30 00:00:00 -07:00
12
+ date: 2009-05-01 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -47,14 +47,14 @@ files:
47
47
  - Rakefile
48
48
  - VERSION.yml
49
49
  - lib/core_extensions.rb
50
- - lib/http.rb
51
50
  - lib/trumpet.rb
52
51
  - lib/trumpet/channel.rb
53
52
  - lib/trumpet/exceptions.rb
53
+ - lib/trumpet/helpers.rb
54
54
  - lib/trumpet/listener.rb
55
55
  - lib/trumpet/message.rb
56
56
  - lib/trumpet/receiver.rb
57
- - lib/trumpet/sieve.rb
57
+ - lib/trumpet/request.rb
58
58
  - lib/trumpet/transmitter.rb
59
59
  - lib/trumpet/trumpet_resource.rb
60
60
  - lib/trumpet/user.rb
data/lib/http.rb DELETED
@@ -1,68 +0,0 @@
1
- module HTTP
2
- @@http = Resourceful::HttpAccessor.new
3
- @@uri = 'http://api.trumpet.io:3000'
4
-
5
- def self.get(path, options={})
6
- do_request(:get, path, options)
7
- end
8
-
9
- def self.post(path, options={})
10
- do_request(:post, path, options)
11
- end
12
-
13
- def self.put(path, options={})
14
- do_request(:put, path, options)
15
- end
16
-
17
- def self.delete(path, options={})
18
- do_request(:delete, path, options)
19
- end
20
-
21
- private
22
-
23
- def self.do_request(method, path, options)
24
- resource = @@http.resource("#{@@uri}#{URI.encode(path)}")
25
- begin
26
- response = if method == :post
27
- resource.send(method, options[:parameters].to_params, :content_type => "application/x-www-form-urlencoded")
28
- else
29
- options[:parameters] ? resource.send(method, options[:parameters].to_params) : resource.send(method)
30
- end
31
- rescue Resourceful::UnsuccessfulHttpRequestError => e
32
- response = e.http_response
33
- error_string = JSON.parse(response.body).to_s
34
-
35
- case response.code
36
- when 400
37
- raise Trumpet::BadRequest, error_string
38
- when 403
39
- raise Trumpet::Forbidden, error_string
40
- when 404
41
- raise Trumpet::NotFound, error_string
42
- when 405
43
- raise Trumpet::MethodNotAllowed, error_string
44
- when 500
45
- raise Trumpet::InternalServerError, error_string
46
- when 501
47
- raise Trumpet::NotImplemented, error_string
48
- end
49
- rescue IOError # Coudln't connect to server
50
- raise Trumpet::ServerConnectionError, 'Could not connect to server'
51
- end
52
-
53
- (options[:parse_response] == false) ? response : JSON.parse(response.body)
54
- end
55
-
56
- def self.handle_response(response, parse_response)
57
- case response.code
58
- when 400
59
- # TODO: what to do here?
60
- when 404
61
- raise Trumpet::ResourceNotFound JSON.parse(response.body)
62
- when 500
63
- # TODO: what to do here?
64
- end
65
-
66
- parse_response ? JSON.parse(response.body) : response
67
- end
68
- end
data/lib/trumpet/sieve.rb DELETED
@@ -1,102 +0,0 @@
1
- module Trumpet
2
- class Sieve
3
- include HTTParty
4
- base_uri 'devour.cc:3000'
5
-
6
- @@options_attributes = [
7
- :keywords , :location ,
8
- :via , :to ,
9
- :days , :start ,
10
- :end , :expires ,
11
- :foreign_id
12
- ]
13
-
14
- attr_accessor :id, :foreign_id, :name, :type, :created_at, :options
15
-
16
- @@options_attributes.each do |attribute|
17
- define_method "#{attribute}=" do |value|
18
- @options[attribute] = value
19
- end
20
- define_method attribute do
21
- @options[attribute]
22
- end
23
- end
24
-
25
-
26
- def initialize(options={})
27
- options.reject! { |key, value| value.nil? || (value.is_a?(String) && value.strip.empty?) }
28
-
29
- @options = {}
30
- @@options_attributes.each do |attribute|
31
- value = options[attribute] || options[attribute.to_s]
32
- @options[attribute] = value if value
33
- end
34
- end
35
-
36
- def pull
37
- add_to_server
38
-
39
- self.class.get("/sieves/#{id}").inject([]) do |memo, attributes|
40
- memo << Nugget.new(attributes)
41
- end
42
- end
43
-
44
- def subscribe
45
- wait_time ||= 2 # seconds
46
-
47
- while true
48
- results = pull
49
- results.each { |nugget| yield nugget }
50
- wait_time = results.nil? ? wait_time*2 : [wait_time/2, 2].max
51
- sleep(wait_time)
52
- end
53
- end
54
-
55
- def delete
56
- self.class.delete("/sieves/#{@id}")
57
- end
58
-
59
- def add_to_server
60
- unless @id
61
- attributes = self.class.post("/sieves", :query => options)
62
- @id = attributes['id']
63
- @type = attributes['type']
64
- @name = attributes['name']
65
- end
66
- end
67
-
68
- def self.index
69
- get("/sieves")
70
- end
71
-
72
- def self.find(id)
73
- attributes = get("/sieves/?id=#{id}").first
74
- instantiate(attributes)
75
- end
76
-
77
- def self.find_by_foreign_id(foreign_id)
78
- sieve_attributes = get("/sieves/?foreign_id=#{foreign_id}")
79
- sieve_attributes.collect { |attributes| instantiate(attributes) }
80
- end
81
-
82
- def self.create(options={})
83
- sieve = new(options)
84
- sieve.add_to_server
85
- sieve
86
- end
87
-
88
-
89
- private
90
-
91
- def self.instantiate(attributes)
92
- sieve = allocate
93
-
94
- sieve.id = attributes['id']
95
- sieve.options = attributes['options']
96
- sieve.type = attributes['type']
97
- sieve.name = attributes['name']
98
-
99
- sieve
100
- end
101
- end
102
- end