trumpet-trumpet 0.0.12 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +0 -0
- data/README.rdoc +0 -0
- data/Rakefile +1 -0
- data/VERSION.yml +2 -2
- data/lib/core_extensions.rb +0 -0
- data/lib/trumpet.rb +6 -2
- data/lib/trumpet/base.rb +16 -0
- data/lib/trumpet/channel.rb +14 -30
- data/lib/trumpet/delegator.rb +47 -0
- data/lib/trumpet/exceptions.rb +0 -0
- data/lib/trumpet/helpers.rb +1 -10
- data/lib/trumpet/listener.rb +9 -32
- data/lib/trumpet/message.rb +10 -18
- data/lib/trumpet/receiver.rb +13 -43
- data/lib/trumpet/request.rb +32 -22
- data/lib/trumpet/resource.rb +13 -0
- data/lib/trumpet/transmitter.rb +11 -41
- data/lib/trumpet/user.rb +20 -22
- data/spec/channel_spec.rb +39 -1
- data/spec/fixtures/channels/all +1 -0
- data/spec/fixtures/channels/create +1 -0
- data/spec/fixtures/channels/messages +1 -0
- data/spec/fixtures/channels/show +1 -0
- data/spec/fixtures/listeners/create +1 -0
- data/spec/fixtures/listeners/find +1 -0
- data/spec/fixtures/receivers/create +1 -0
- data/spec/fixtures/receivers/find +1 -0
- data/spec/fixtures/receivers/messages +1 -0
- data/spec/fixtures/transmitters/create +1 -0
- data/spec/fixtures/transmitters/find +1 -0
- data/spec/fixtures/users/channels +1 -0
- data/spec/fixtures/users/create +1 -0
- data/spec/fixtures/users/listeners +1 -0
- data/spec/fixtures/users/receivers +1 -0
- data/spec/fixtures/users/show +1 -0
- data/spec/listener_spec.rb +27 -0
- data/spec/message_spec.rb +60 -0
- data/spec/receiver_spec.rb +35 -0
- data/spec/resource_spec.rb +7 -0
- data/spec/spec_helper.rb +4 -0
- data/spec/transmitter_spec.rb +29 -0
- data/spec/user_spec.rb +58 -0
- metadata +45 -4
data/LICENSE
CHANGED
File without changes
|
data/README.rdoc
CHANGED
File without changes
|
data/Rakefile
CHANGED
@@ -10,6 +10,7 @@ begin
|
|
10
10
|
gem.homepage = "http://github.com/trumpet/trumpet"
|
11
11
|
gem.authors = ["Michael Taras"]
|
12
12
|
gem.add_dependency 'json'
|
13
|
+
gem.add_dependency 'fakeweb'
|
13
14
|
|
14
15
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
15
16
|
end
|
data/VERSION.yml
CHANGED
data/lib/core_extensions.rb
CHANGED
File without changes
|
data/lib/trumpet.rb
CHANGED
@@ -5,6 +5,7 @@ require 'json'
|
|
5
5
|
|
6
6
|
require 'net/http'
|
7
7
|
require 'uri'
|
8
|
+
require 'pp'
|
8
9
|
|
9
10
|
require 'core_extensions'
|
10
11
|
|
@@ -12,12 +13,15 @@ require 'core_extensions'
|
|
12
13
|
module Trumpet
|
13
14
|
end
|
14
15
|
|
15
|
-
require 'trumpet/request'
|
16
16
|
require 'trumpet/exceptions'
|
17
|
+
require 'trumpet/request'
|
18
|
+
require 'trumpet/resource'
|
17
19
|
require 'trumpet/message'
|
18
20
|
require 'trumpet/receiver'
|
19
21
|
require 'trumpet/listener'
|
20
22
|
require 'trumpet/transmitter'
|
21
23
|
require 'trumpet/channel'
|
22
24
|
require 'trumpet/user'
|
23
|
-
require 'trumpet/helpers'
|
25
|
+
require 'trumpet/helpers'
|
26
|
+
require 'trumpet/delegator'
|
27
|
+
require 'trumpet/base'
|
data/lib/trumpet/base.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
module Trumpet
|
2
|
+
class Base
|
3
|
+
include Delegator
|
4
|
+
|
5
|
+
delegate_with_credentials :users, User
|
6
|
+
delegate_with_credentials :channels, Channel
|
7
|
+
delegate_with_credentials :messages, Message
|
8
|
+
delegate_with_credentials :receivers, Receiver
|
9
|
+
delegate_with_credentials :listeners, Listener
|
10
|
+
delegate_with_credentials :transmitters, Transmitter
|
11
|
+
|
12
|
+
def initialize(credentials={})
|
13
|
+
@credentials = credentials unless credentials.empty?
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/trumpet/channel.rb
CHANGED
@@ -1,49 +1,33 @@
|
|
1
1
|
module Trumpet
|
2
|
-
class Channel
|
3
|
-
@@attributes = [
|
4
|
-
:name,
|
5
|
-
:description,
|
6
|
-
:receiver_id,
|
7
|
-
:transmitter_id,
|
8
|
-
:owner_id,
|
9
|
-
:created_at,
|
10
|
-
:updated_at
|
11
|
-
]
|
12
|
-
|
13
|
-
attr_reader *@@attributes
|
2
|
+
class Channel < Trumpet::Resource
|
14
3
|
|
15
4
|
def self.create(options)
|
16
|
-
Channel.new(Trumpet::Request.post('/channels',
|
5
|
+
Channel.new(Trumpet::Request.post('/channels', options))
|
17
6
|
end
|
18
7
|
|
19
|
-
def self.find(name)
|
20
|
-
Channel.new(Trumpet::Request.get("/channels/#{name}"))
|
8
|
+
def self.find(name, options={})
|
9
|
+
Channel.new(Trumpet::Request.get("/channels/#{name}", options))
|
21
10
|
end
|
22
11
|
|
23
|
-
def self.all
|
24
|
-
Trumpet::Request.get('/channels').map { |attributes| Channel.new(attributes) }
|
12
|
+
def self.all(options={})
|
13
|
+
Trumpet::Request.get('/channels', options).map { |attributes| Channel.new(attributes) }
|
25
14
|
end
|
26
15
|
|
27
|
-
def self.all_by_user(name)
|
28
|
-
channels = Trumpet::Request.get("/users/#{name}/channels")
|
16
|
+
def self.all_by_user(name, options={})
|
17
|
+
channels = Trumpet::Request.get("/users/#{name}/channels", options)
|
29
18
|
channels.map { |attributes| Channel.new(attributes) }
|
30
19
|
end
|
31
20
|
|
32
|
-
def broadcast(message)
|
33
|
-
|
21
|
+
def broadcast(message, options={})
|
22
|
+
options[:credentials] ||= @credentials
|
23
|
+
!!Trumpet::Request.post("/channels/#{@name}/messages", :parameters => message.to_h, :parse_response => false, :credentials => options[:credentials])
|
34
24
|
end
|
35
25
|
|
36
|
-
def messages
|
37
|
-
|
26
|
+
def messages(options={})
|
27
|
+
options[:credentials] ||= @credentials
|
28
|
+
messages = Trumpet::Request.get("/channels/#{@name}/messages", options)
|
38
29
|
messages.map { |attributes| Message.new(attributes) }
|
39
30
|
end
|
40
|
-
|
41
|
-
protected
|
42
31
|
|
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
|
48
32
|
end
|
49
33
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# This module defines the delegate_with_credentials method on classes that include it
|
2
|
+
# This allows the class to say the following :
|
3
|
+
#
|
4
|
+
# delegate_with_request :users, Trumpet::User
|
5
|
+
#
|
6
|
+
# And any instance of the class will have a users method on it, which will delegate
|
7
|
+
# calls to the Trumpet::User class with the proper request object in the args
|
8
|
+
|
9
|
+
module Trumpet
|
10
|
+
module Delegator
|
11
|
+
|
12
|
+
class ResourceDelegator
|
13
|
+
def initialize(delegate, credentials)
|
14
|
+
@delegate = delegate
|
15
|
+
@credentials = credentials
|
16
|
+
end
|
17
|
+
|
18
|
+
def method_missing(sym, args=nil)
|
19
|
+
if args.nil?
|
20
|
+
new_args = Hash.new
|
21
|
+
new_args[:credentials] = @credentials if @credentials
|
22
|
+
@delegate.send sym, new_args
|
23
|
+
elsif args.is_a? Hash
|
24
|
+
new_args = {}
|
25
|
+
new_args[:parameters] = args
|
26
|
+
new_args[:credentials] = @credentials if @credentials
|
27
|
+
@delegate.send sym, new_args
|
28
|
+
else
|
29
|
+
new_args = [args]
|
30
|
+
new_args << {:credentials => @credentials} if @credentials
|
31
|
+
@delegate.send sym, *new_args
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.included(includer)
|
37
|
+
class << includer
|
38
|
+
def delegate_with_credentials(resource, klass)
|
39
|
+
define_method resource do
|
40
|
+
ResourceDelegator.new(klass, @credentials)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
data/lib/trumpet/exceptions.rb
CHANGED
File without changes
|
data/lib/trumpet/helpers.rb
CHANGED
@@ -1,14 +1,5 @@
|
|
1
|
-
module Trumpet
|
2
|
-
def self.authenticate(username, password)
|
3
|
-
Trumpet::Request.authenticate(username, password)
|
4
|
-
true
|
5
|
-
end
|
6
|
-
|
1
|
+
module Trumpet
|
7
2
|
def self.set_server(uri, port=nil)
|
8
3
|
Trumpet::Request.set_server(uri, port)
|
9
4
|
end
|
10
|
-
|
11
|
-
def self.clear_credentials
|
12
|
-
Trumpet::Request.clear_credentials
|
13
|
-
end
|
14
5
|
end
|
data/lib/trumpet/listener.rb
CHANGED
@@ -1,46 +1,23 @@
|
|
1
1
|
module Trumpet
|
2
|
-
class Listener
|
3
|
-
@@attributes = [
|
4
|
-
:id,
|
5
|
-
:receiver_id,
|
6
|
-
:owner_id,
|
7
|
-
:uri,
|
8
|
-
:schedule,
|
9
|
-
:created_at,
|
10
|
-
:updated_at,
|
11
|
-
]
|
12
|
-
|
13
|
-
attr_reader *@@attributes
|
14
|
-
|
2
|
+
class Listener < Trumpet::Resource
|
15
3
|
|
16
4
|
def self.create(options)
|
17
|
-
if options[:receiver_id]
|
18
|
-
Listener.new(Trumpet::Request.post("/receivers/#{options[:receiver_id]}/listeners",
|
5
|
+
if options[:parameters][:receiver_id]
|
6
|
+
Listener.new(Trumpet::Request.post("/receivers/#{options[:parameters][:receiver_id]}/listeners", options))
|
19
7
|
else
|
20
8
|
raise Trumpet::BadRequest, "Must specify a receiver id when creating a listener"
|
21
9
|
end
|
22
10
|
end
|
23
11
|
|
24
|
-
def self.find(id)
|
25
|
-
Listener.new(Trumpet::Request.get("/listeners/#{id}"))
|
26
|
-
end
|
27
|
-
|
28
|
-
def self.all_by_user(name)
|
29
|
-
listeners = Trumpet::Request.get("/users/#{name}/listeners")
|
30
|
-
listeners.map { |attributes| Listener.new(attributes) }
|
12
|
+
def self.find(id, options={})
|
13
|
+
Listener.new(Trumpet::Request.get("/listeners/#{id}", options))
|
31
14
|
end
|
32
15
|
|
33
|
-
def delete
|
34
|
-
|
16
|
+
def delete(options={})
|
17
|
+
options[:credentials] ||= @credentials
|
18
|
+
options[:parse_response] = false
|
19
|
+
!!Trumpet::Request.delete("/listeners/#{@id}", options)
|
35
20
|
end
|
36
21
|
|
37
|
-
|
38
|
-
protected
|
39
|
-
|
40
|
-
def initialize(attributes)
|
41
|
-
@@attributes.each do |attr|
|
42
|
-
self.instance_variable_set(:"@#{attr.to_s}", attributes[attr.to_s]) if attributes[attr.to_s]
|
43
|
-
end
|
44
|
-
end
|
45
22
|
end
|
46
23
|
end
|
data/lib/trumpet/message.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
module Trumpet
|
2
2
|
class Message
|
3
|
+
|
3
4
|
@@attributes = [
|
4
5
|
:url , :created_by_id,
|
5
6
|
:author , :author_name,
|
@@ -9,36 +10,27 @@ module Trumpet
|
|
9
10
|
:lat , :lng,
|
10
11
|
:radius , :channel,
|
11
12
|
:public , :authorized_receiver_owners,
|
12
|
-
:content , :
|
13
|
-
:
|
13
|
+
:content , :id,
|
14
|
+
:created_at , :updated_at
|
14
15
|
]
|
15
16
|
|
16
17
|
#TODO: created_at and updated_at maybe not writable
|
17
|
-
|
18
|
-
|
18
|
+
|
19
19
|
attr_accessor *@@attributes
|
20
20
|
|
21
|
-
def initialize(
|
21
|
+
def initialize(options)
|
22
|
+
parameters = options[:parameters] ? options[:parameters] : options
|
22
23
|
@@attributes.each do |attr|
|
23
|
-
self.send "#{attr.to_s}=".to_sym, (
|
24
|
+
self.send "#{attr.to_s}=".to_sym, (parameters[attr] || parameters[attr.to_s])
|
24
25
|
end
|
25
26
|
end
|
26
27
|
|
27
|
-
def self.create(attributes)
|
28
|
-
|
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
|
-
unless @id
|
36
|
-
!!Trumpet::Request.post('/messages', :parameters => self.to_h, :parse_response => false)
|
37
|
-
end
|
28
|
+
def self.create(request, attributes)
|
29
|
+
!!request.post('/messages', :parameters => self.to_h, :parse_response => false)
|
38
30
|
end
|
39
31
|
|
40
32
|
def to_h
|
41
33
|
@@attributes.inject({}) { |hash, attribute| hash[attribute] = self.send(attribute); hash }
|
42
34
|
end
|
43
35
|
end
|
44
|
-
end
|
36
|
+
end
|
data/lib/trumpet/receiver.rb
CHANGED
@@ -1,59 +1,29 @@
|
|
1
1
|
module Trumpet
|
2
|
-
class Receiver
|
2
|
+
class Receiver < Trumpet::Resource
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
:source_url , :owner_id ,
|
7
|
-
:author , :author_name ,
|
8
|
-
:avatar_url , :authored_at ,
|
9
|
-
:title , :description ,
|
10
|
-
:tags , :location_string ,
|
11
|
-
:lat , :lng ,
|
12
|
-
:radius , :channels ,
|
13
|
-
:keywords , :name ,
|
14
|
-
:created_at , :updated_at ,
|
15
|
-
:errors
|
16
|
-
]
|
17
|
-
attr_reader *@@attributes
|
18
|
-
|
19
|
-
|
20
|
-
def self.create(options={})
|
21
|
-
Receiver.new(Trumpet::Request.post("/receivers", :parameters => options))
|
4
|
+
def self.create(options)
|
5
|
+
Receiver.new(Trumpet::Request.post("/receivers", options))
|
22
6
|
end
|
23
7
|
|
24
|
-
def self.find(id)
|
25
|
-
Receiver.new(Trumpet::Request.get("/receivers/#{id}"))
|
26
|
-
end
|
27
|
-
|
28
|
-
def self.all_by_user(name)
|
29
|
-
receivers = Trumpet::Request.get("/users/#{name}/receivers")
|
30
|
-
receivers.map { |attributes| Receiver.new(attributes) }
|
31
|
-
end
|
32
|
-
|
33
|
-
def delete
|
34
|
-
!!Trumpet::Request.delete("/receivers/#{@id}")
|
8
|
+
def self.find(id, options={})
|
9
|
+
Receiver.new(Trumpet::Request.get("/receivers/#{id}", options))
|
35
10
|
end
|
36
11
|
|
37
|
-
def
|
38
|
-
|
12
|
+
def delete(options={})
|
13
|
+
options[:credentials] ||= @credentials
|
14
|
+
options[:parse_response] = false
|
15
|
+
!!Trumpet::Request.delete("/receivers/#{@id}", options)
|
39
16
|
end
|
40
17
|
|
41
|
-
def messages
|
42
|
-
|
18
|
+
def messages(options={})
|
19
|
+
options[:credentials] ||= @credentials
|
20
|
+
messages = Trumpet::Request.get("/receivers/#{@id}/messages", options)
|
43
21
|
messages.map { |attributes| Message.new(attributes) }
|
44
22
|
end
|
45
23
|
|
46
24
|
def listen
|
47
25
|
#TODO: impliment this
|
48
26
|
end
|
49
|
-
|
50
|
-
|
51
|
-
protected
|
52
|
-
|
53
|
-
def initialize(attributes)
|
54
|
-
@@attributes.each do |attr|
|
55
|
-
self.instance_variable_set(:"@#{attr.to_s}", attributes[attr.to_s]) if attributes[attr.to_s]
|
56
|
-
end
|
57
|
-
end
|
27
|
+
|
58
28
|
end
|
59
29
|
end
|
data/lib/trumpet/request.rb
CHANGED
@@ -1,17 +1,7 @@
|
|
1
1
|
module Trumpet
|
2
2
|
module Request
|
3
|
-
@@http = Net::HTTP.new('api.trumpet.io'
|
4
|
-
|
5
|
-
|
6
|
-
def self.authenticate(username, password)
|
7
|
-
@@http_auth[:username] = username
|
8
|
-
@@http_auth[:password] = password
|
9
|
-
end
|
10
|
-
|
11
|
-
def self.clear_credentials
|
12
|
-
@@http_auth = {}
|
13
|
-
end
|
14
|
-
|
3
|
+
@@http = Net::HTTP.new('api.trumpet.io')
|
4
|
+
|
15
5
|
def self.get(path, options={})
|
16
6
|
do_request(Net::HTTP::Get, path, options)
|
17
7
|
end
|
@@ -25,23 +15,33 @@ module Trumpet
|
|
25
15
|
end
|
26
16
|
|
27
17
|
def self.delete(path, options={})
|
28
|
-
do_request(Net::HTTP::Delete, path, options)
|
18
|
+
do_request(Net::HTTP::Delete, path, options)
|
29
19
|
end
|
30
20
|
|
31
|
-
def self.set_server(
|
32
|
-
@@http = Net::HTTP.new(
|
21
|
+
def self.set_server(host, port=nil)
|
22
|
+
@@http = Net::HTTP.new(host.gsub('http://', ''), port) #no http:// in hosts
|
33
23
|
end
|
34
24
|
|
35
25
|
private
|
36
26
|
|
37
|
-
def self.do_request(http_method, path, options)
|
27
|
+
def self.do_request(http_method, path, options={})
|
38
28
|
raw_request = http_method.new(path)
|
39
|
-
raw_request.basic_auth(
|
29
|
+
raw_request.basic_auth(options[:credentials][:username], options[:credentials][:password]) if options[:credentials]
|
40
30
|
raw_request.body = options[:parameters].to_params if options[:parameters]
|
41
|
-
|
42
|
-
|
31
|
+
|
43
32
|
response = @@http.request(raw_request)
|
44
|
-
|
33
|
+
handle_errors(response)
|
34
|
+
|
35
|
+
if options[:parse_response] == false
|
36
|
+
response
|
37
|
+
else
|
38
|
+
parsed_response = JSON.parse(response.body)
|
39
|
+
attach_credentials(parsed_response, options[:credentials]) if options[:credentials]
|
40
|
+
parsed_response
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.handle_errors(response)
|
45
45
|
unless response.code.to_i < 400
|
46
46
|
error_string = JSON.parse(response.body).to_s
|
47
47
|
case response.code.to_i
|
@@ -60,8 +60,18 @@ module Trumpet
|
|
60
60
|
when 501
|
61
61
|
raise Trumpet::NotImplemented, error_string
|
62
62
|
end
|
63
|
-
end
|
64
|
-
(options[:parse_response] == false) ? response : JSON.parse(response.body)
|
63
|
+
end
|
65
64
|
end
|
65
|
+
|
66
|
+
def self.attach_credentials(parsed_response, credentials)
|
67
|
+
if parsed_response.is_a? Array
|
68
|
+
parsed_response.each do |attributes|
|
69
|
+
attributes[:credentials] = credentials
|
70
|
+
end
|
71
|
+
else
|
72
|
+
parsed_response[:credentials] = credentials
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
66
76
|
end
|
67
77
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Trumpet
|
2
|
+
class Resource
|
3
|
+
|
4
|
+
protected
|
5
|
+
|
6
|
+
def initialize(attributes)
|
7
|
+
attributes.each do |attribute, value|
|
8
|
+
self.class.send(:define_method, attribute) { instance_variable_get(:"@#{attribute.to_s}") }
|
9
|
+
instance_variable_set(:"@#{attribute.to_s}", value)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/trumpet/transmitter.rb
CHANGED
@@ -1,54 +1,24 @@
|
|
1
1
|
module Trumpet
|
2
|
-
class Transmitter
|
3
|
-
@@attributes = [
|
4
|
-
:id,
|
5
|
-
:source_url,
|
6
|
-
:tags,
|
7
|
-
:location_string,
|
8
|
-
:channel,
|
9
|
-
:lat,
|
10
|
-
:lng,
|
11
|
-
:radius,
|
12
|
-
:public,
|
13
|
-
:created_at,
|
14
|
-
:updated_at,
|
15
|
-
]
|
16
|
-
|
17
|
-
attr_reader *@@attributes
|
2
|
+
class Transmitter < Trumpet::Resource
|
18
3
|
|
19
4
|
def self.create(options)
|
20
|
-
Transmitter.new(Trumpet::Request.post('transmitters',
|
21
|
-
end
|
22
|
-
|
23
|
-
def self.find(id)
|
24
|
-
Transmitter.new(Trumpet::Request.get("/transmitters/#{id}"))
|
5
|
+
Transmitter.new(Trumpet::Request.post('/transmitters', options))
|
25
6
|
end
|
26
7
|
|
27
|
-
def self.
|
28
|
-
|
29
|
-
transmitters.map { |attributes| Trumpet::Transmitter.new(attributes) }
|
8
|
+
def self.find(id, options={})
|
9
|
+
Transmitter.new(Trumpet::Request.get("/transmitters/#{id}", options))
|
30
10
|
end
|
31
11
|
|
32
|
-
def delete
|
33
|
-
Trumpet::Request.delete("/transmitters/#{@id}")
|
12
|
+
def delete(options={})
|
13
|
+
Trumpet::Request.delete("/transmitters/#{@id}", options)
|
34
14
|
end
|
35
15
|
|
36
|
-
def
|
37
|
-
|
38
|
-
|
16
|
+
def broadcast(message, options={})
|
17
|
+
options[:credentials] ||= @credentials
|
18
|
+
options[:parameters] = message.to_h
|
19
|
+
options[:parse_response] = false
|
20
|
+
!!Trumpet::Request.post("/transmitters/#{@id}/messages", options)
|
39
21
|
end
|
40
22
|
|
41
|
-
def broadcast(message)
|
42
|
-
Trumpet::Request.post("/transmitters/#{@transmitter_id}/messages", :parameters => message.to_h, :parse_response => false)
|
43
|
-
end
|
44
|
-
|
45
|
-
|
46
|
-
protected
|
47
|
-
|
48
|
-
def initialize(attributes)
|
49
|
-
@@attributes.each do |attr|
|
50
|
-
self.instance_variable_set(:"@#{attr.to_s}", attributes[attr.to_s]) if attributes[attr.to_s]
|
51
|
-
end
|
52
|
-
end
|
53
23
|
end
|
54
24
|
end
|
data/lib/trumpet/user.rb
CHANGED
@@ -1,40 +1,38 @@
|
|
1
1
|
module Trumpet
|
2
|
-
class User
|
3
|
-
@@attributes = [:id, :name]
|
4
|
-
attr_reader *@@attributes
|
2
|
+
class User < Trumpet::Resource
|
5
3
|
|
6
4
|
def self.create(options)
|
7
|
-
attributes = Trumpet::Request.post('/users',
|
5
|
+
attributes = Trumpet::Request.post('/users', options)
|
8
6
|
User.new(attributes)
|
9
7
|
end
|
10
8
|
|
11
|
-
def self.find(name)
|
12
|
-
User.new(Trumpet::Request.get("/users/#{name}"))
|
9
|
+
def self.find(name, options={})
|
10
|
+
User.new(Trumpet::Request.get("/users/#{name}", options))
|
13
11
|
end
|
14
12
|
|
15
|
-
def delete
|
16
|
-
|
13
|
+
def delete(options={})
|
14
|
+
options[:credentials] ||= @credentials
|
15
|
+
options[:parse_response] = false
|
16
|
+
!!Trumpet::Request.delete("/users/#{@name}", options)
|
17
17
|
end
|
18
18
|
|
19
|
-
def channels
|
20
|
-
|
19
|
+
def channels(options={})
|
20
|
+
options[:credentials] ||= @credentials
|
21
|
+
channels = Trumpet::Request.get("/users/#{name}/channels", options)
|
22
|
+
channels.map { |attributes| Channel.new(attributes) }
|
21
23
|
end
|
22
24
|
|
23
|
-
def listeners
|
24
|
-
|
25
|
+
def listeners(options={})
|
26
|
+
options[:credentials] ||= @credentials
|
27
|
+
listeners = Trumpet::Request.get("/users/#{name}/listeners", options)
|
28
|
+
listeners.map { |attributes| Listener.new(attributes) }
|
25
29
|
end
|
26
30
|
|
27
|
-
def receivers
|
28
|
-
|
31
|
+
def receivers(options={})
|
32
|
+
options[:credentials] ||= @credentials
|
33
|
+
receivers = Trumpet::Request.get("/users/#{name}/receivers", options)
|
34
|
+
receivers.map { |attributes| Receiver.new(attributes) }
|
29
35
|
end
|
30
36
|
|
31
|
-
|
32
|
-
protected
|
33
|
-
|
34
|
-
def initialize(attributes)
|
35
|
-
@@attributes.each do |attr|
|
36
|
-
self.instance_variable_set(:"@#{attr.to_s}", attributes[attr.to_s]) if attributes[attr.to_s]
|
37
|
-
end
|
38
|
-
end
|
39
37
|
end
|
40
38
|
end
|
data/spec/channel_spec.rb
CHANGED
@@ -1,5 +1,43 @@
|
|
1
|
-
require 'spec_helper'
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
2
|
|
3
3
|
describe "Channel" do
|
4
4
|
|
5
|
+
before(:all) do
|
6
|
+
@trumpet = Trumpet::Base.new :username => 'somedude', :password => 'somepassword'
|
7
|
+
|
8
|
+
FakeWeb.register_uri :post, "somedude:somepassword@api.trumpet.io/channels", :file => "#{File.dirname(__FILE__)}/fixtures/channels/create"
|
9
|
+
FakeWeb.register_uri :get, "somedude:somepassword@api.trumpet.io/channels", :file => "#{File.dirname(__FILE__)}/fixtures/channels/all"
|
10
|
+
FakeWeb.register_uri :get, "somedude:somepassword@api.trumpet.io/channels/radical", :file => "#{File.dirname(__FILE__)}/fixtures/channels/show"
|
11
|
+
FakeWeb.register_uri :post, "somedude:somepassword@api.trumpet.io/channels/radical/messages", :status => ["204", "OK"]
|
12
|
+
FakeWeb.register_uri :get, "somedude:somepassword@api.trumpet.io/channels/radical/messages", :file => "#{File.dirname(__FILE__)}/fixtures/channels/messages"
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should let me create a channel' do
|
16
|
+
channel = @trumpet.channels.create :name => 'radical'
|
17
|
+
channel.name.should == 'radical'
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'should return a list of all channels' do
|
21
|
+
channels = @trumpet.channels.all
|
22
|
+
channels.length.should == 2
|
23
|
+
channels.first.name.should == 'cool'
|
24
|
+
channels.last.name.should == 'radical'
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should find a channel by name' do
|
28
|
+
channel = @trumpet.channels.find 'radical'
|
29
|
+
channel.name.should == 'radical'
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'should allow me to broadcast a message through a channel' do
|
33
|
+
channel = @trumpet.channels.find 'radical'
|
34
|
+
channel.broadcast(Trumpet::Message.new(:content => 'dude, awesome')).should == true
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'should return all messages in a given channel' do
|
38
|
+
channel = @trumpet.channels.find 'radical'
|
39
|
+
messages = channel.messages
|
40
|
+
messages.length.should == 3
|
41
|
+
end
|
42
|
+
|
5
43
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
[{"receiver_id":1,"name":"cool","updated_at":null,"description":null,"owner_id":1,"transmitter_id":1,"created_at":null},{"receiver_id":2,"name":"radical","updated_at":null,"description":null,"owner_id":1,"transmitter_id":2,"created_at":null}]
|
@@ -0,0 +1 @@
|
|
1
|
+
{"receiver_id":2,"name":"radical","updated_at":null,"description":null,"owner_id":1,"transmitter_id":2,"created_at":null}
|
@@ -0,0 +1 @@
|
|
1
|
+
[{"updated_at":"2009/05/13 11:29:50 -0700","public":true,"id":2,"content":"Super Gnarly Dude","channel":"radical","created_at":"2009/05/13 11:29:50 -0700"},{"updated_at":"2009/05/13 11:36:50 -0700","public":true,"id":3,"content":"Super Gnarly Dude","channel":"radical","created_at":"2009/05/13 11:36:50 -0700"},{"updated_at":"2009/05/13 11:36:51 -0700","public":true,"id":4,"content":"Super Gnarly Dude","channel":"radical","created_at":"2009/05/13 11:36:51 -0700"}]
|
@@ -0,0 +1 @@
|
|
1
|
+
{"receiver_id":2,"name":"radical","updated_at":null,"description":null,"owner_id":1,"transmitter_id":2,"created_at":null}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"owner":"raddude","created_at":"2009/05/13 16:01:01 -0700","receiver_id":1,"schedule":{"end":null,"start":null,"days":null},"id":1,"updated_at":"2009/05/13 16:01:01 -0700","uri":"mailto:\/\/someraddude@mailinator.com"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"owner":"raddude","created_at":"2009/05/13 16:01:01 -0700","receiver_id":1,"schedule":{"end":null,"start":null,"days":null},"id":1,"updated_at":"2009/05/13 16:01:01 -0700","uri":"mailto:\/\/someraddude@mailinator.com"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"name":"Everything ","updated_at":"2009/05/12 14:40:32 -0700","id":1,"owner_id":1,"channel":"cool","last_request":"2009/05/12 14:40:32 -0700","created_at":"2009/05/12 14:40:32 -0700","active":true}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"name":"Everything ","updated_at":"2009/05/12 14:40:32 -0700","id":1,"owner_id":1,"channel":"cool","last_request":"2009/05/12 14:40:32 -0700","created_at":"2009/05/12 14:40:32 -0700","active":true}
|
@@ -0,0 +1 @@
|
|
1
|
+
[{"updated_at":"2009/05/12 14:49:07 -0700","public":true,"author":"radical","id":1,"content":"yay","channel":"cool","created_at":"2009/05/12 14:49:07 -0700"}]
|
@@ -0,0 +1 @@
|
|
1
|
+
{"radius":null,"updated_at":"2009/05/13 17:36:45 -0700","public":null,"tags":"dudes, gnarly, rad","source_url":null,"lng":null,"id":1,"public_transmissions":false,"owner_id":2,"channel":null,"location_string":null,"lat":null,"created_at":"2009/05/13 17:36:45 -0700"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"radius":null,"updated_at":"2009/05/13 17:36:45 -0700","public":null,"tags":"dudes, gnarly, rad","source_url":null,"lng":null,"id":1,"public_transmissions":false,"owner_id":2,"channel":null,"location_string":null,"lat":null,"created_at":"2009/05/13 17:36:45 -0700"}
|
@@ -0,0 +1 @@
|
|
1
|
+
[{"receiver_id":3,"name":"channel1","updated_at":null,"description":null,"owner_id":2,"transmitter_id":3,"created_at":null},{"receiver_id":4,"name":"channel2","updated_at":null,"description":null,"owner_id":2,"transmitter_id":4,"created_at":null},{"receiver_id":5,"name":"channel3","updated_at":null,"description":null,"owner_id":2,"transmitter_id":5,"created_at":null}]
|
@@ -0,0 +1 @@
|
|
1
|
+
{"name":"raddude","created_at":"2009/05/13 12:29:10 -0700","id":2,"updated_at":"2009/05/13 12:29:10 -0700"}
|
@@ -0,0 +1 @@
|
|
1
|
+
[{"owner":"raddude","created_at":"2009/05/13 14:24:53 -0700","receiver_id":1,"schedule":{"end":null,"start":null,"days":null},"id":1,"updated_at":"2009/05/13 14:24:53 -0700","uri":"mailto:\/\/someraddude@mailinator.com"},{"owner":"raddude","created_at":"2009/05/13 14:25:08 -0700","receiver_id":1,"schedule":{"end":null,"start":null,"days":null},"id":2,"updated_at":"2009/05/13 14:25:08 -0700","uri":"mailto:\/\/someotherdude@mailinator.com"},{"owner":"raddude","created_at":"2009/05/13 14:25:22 -0700","receiver_id":1,"schedule":{"end":null,"start":null,"days":null},"id":3,"updated_at":"2009/05/13 14:25:22 -0700","uri":"mailto:\/\/andanotherdude@mailinator.com"}]
|
@@ -0,0 +1 @@
|
|
1
|
+
[{"name":"other things, rad dudes ","updated_at":"2009/05/13 14:29:18 -0700","id":6,"owner_id":2,"last_request":"2009/05/13 14:29:18 -0700","keywords":"other things, rad dudes","created_at":"2009/05/13 14:29:18 -0700","active":true},{"name":"gnarly things, radical things ","updated_at":"2009/05/13 14:29:31 -0700","id":7,"owner_id":2,"last_request":"2009/05/13 14:29:31 -0700","keywords":"gnarly things, radical things","created_at":"2009/05/13 14:29:31 -0700","active":true},{"name":"other sweet things, pretty sweet stuff ","updated_at":"2009/05/13 14:29:49 -0700","id":8,"owner_id":2,"last_request":"2009/05/13 14:29:49 -0700","keywords":"other sweet things, pretty sweet stuff","created_at":"2009/05/13 14:29:49 -0700","active":true}]
|
@@ -0,0 +1 @@
|
|
1
|
+
{"name":"raddude","created_at":"2009/05/13 12:29:10 -0700","id":2,"updated_at":"2009/05/13 12:29:10 -0700"}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
+
|
3
|
+
describe "Listener" do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
@trumpet = Trumpet::Base.new :username => "somedude", :password => "somepassword"
|
7
|
+
|
8
|
+
FakeWeb.register_uri :post, "#{AUTHENTICATED_URI}/receivers/1/listeners", :file => "#{File.dirname(__FILE__)}/fixtures/listeners/create"
|
9
|
+
FakeWeb.register_uri :get, "#{AUTHENTICATED_URI}/listeners/1", :file => "#{File.dirname(__FILE__)}/fixtures/listeners/find"
|
10
|
+
FakeWeb.register_uri :delete, "#{AUTHENTICATED_URI}/listeners/1", :string => ["204", "OK"]
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should let me create a listener" do
|
14
|
+
listener = @trumpet.listeners.create :receiver_id => 1, :uri => 'mailto://someraddude@mailinator.com'
|
15
|
+
listener.uri.should == 'mailto://someraddude@mailinator.com'
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should let me find an existing listener" do
|
19
|
+
listener = @trumpet.listeners.find(1)
|
20
|
+
listener.uri.should == 'mailto://someraddude@mailinator.com'
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should let me delete an existing listener" do
|
24
|
+
listener = @trumpet.listeners.find(1)
|
25
|
+
listener.delete.should == true
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
+
|
3
|
+
describe "Channel" do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
@trumpet = Trumpet::Base.new :username => 'somedude', :password => 'somepassword'
|
7
|
+
|
8
|
+
FakeWeb.register_uri :post, "somedude:somepassword@api.trumpet.io/messages", :file => "#{File.dirname(__FILE__)}/fixtures/messages/create"
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should instantiate a message through the trumpet object with the proper attributes" do
|
12
|
+
message = @trumpet.messages.new(
|
13
|
+
:url => 'http://gnarly.com',
|
14
|
+
:author => 'gnarlydude073',
|
15
|
+
:avatar_url => 'http://gnarly.com',
|
16
|
+
:title => 'Radical Dude',
|
17
|
+
:tags => 'gnarly, dudes, radical',
|
18
|
+
:content => 'Bla bla bla, some short message.',
|
19
|
+
:author_name => 'Gnarly Dude',
|
20
|
+
:authored_at => 'Sep 1, 2008',
|
21
|
+
:description => 'Some sort of description.',
|
22
|
+
:location_string => 'San Francisco, CA'
|
23
|
+
)
|
24
|
+
|
25
|
+
message.url.should == 'http://gnarly.com'
|
26
|
+
message.author.should == 'gnarlydude073'
|
27
|
+
message.avatar_url.should == 'http://gnarly.com'
|
28
|
+
message.title.should == 'Radical Dude'
|
29
|
+
message.tags.should == 'gnarly, dudes, radical'
|
30
|
+
message.content.should == 'Bla bla bla, some short message.'
|
31
|
+
message.author_name.should == 'Gnarly Dude'
|
32
|
+
message.description.should == 'Some sort of description.'
|
33
|
+
message.location_string.should == 'San Francisco, CA'
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should instantiate a message directly with the proper attributes" do
|
37
|
+
message = Trumpet::Message.new(
|
38
|
+
:url => 'http://gnarly.com',
|
39
|
+
:author => 'gnarlydude073',
|
40
|
+
:avatar_url => 'http://gnarly.com',
|
41
|
+
:title => 'Radical Dude',
|
42
|
+
:tags => 'gnarly, dudes, radical',
|
43
|
+
:content => 'Bla bla bla, some short message.',
|
44
|
+
:author_name => 'Gnarly Dude',
|
45
|
+
:authored_at => 'Sep 1, 2008',
|
46
|
+
:description => 'Some sort of description.',
|
47
|
+
:location_string => 'San Francisco, CA'
|
48
|
+
)
|
49
|
+
|
50
|
+
message.url.should == 'http://gnarly.com'
|
51
|
+
message.author.should == 'gnarlydude073'
|
52
|
+
message.avatar_url.should == 'http://gnarly.com'
|
53
|
+
message.title.should == 'Radical Dude'
|
54
|
+
message.tags.should == 'gnarly, dudes, radical'
|
55
|
+
message.content.should == 'Bla bla bla, some short message.'
|
56
|
+
message.author_name.should == 'Gnarly Dude'
|
57
|
+
message.description.should == 'Some sort of description.'
|
58
|
+
message.location_string.should == 'San Francisco, CA'
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
+
|
3
|
+
describe "Receiver" do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
@trumpet = Trumpet::Base.new :username => "somedude", :password => "somepassword"
|
7
|
+
|
8
|
+
FakeWeb.register_uri :post, "#{AUTHENTICATED_URI}/receivers", :file => "#{File.dirname(__FILE__)}/fixtures/receivers/create"
|
9
|
+
FakeWeb.register_uri :get, "#{AUTHENTICATED_URI}/receivers/1", :file => "#{File.dirname(__FILE__)}/fixtures/receivers/find"
|
10
|
+
FakeWeb.register_uri :delete, "#{AUTHENTICATED_URI}/receivers/1", :string => ["204", "OK"]
|
11
|
+
FakeWeb.register_uri :get, "#{AUTHENTICATED_URI}/receivers/1/messages", :file => "#{File.dirname(__FILE__)}/fixtures/receivers/messages"
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should let me create a receiver" do
|
15
|
+
receiver = @trumpet.receivers.create
|
16
|
+
receiver.name.should == "Everything "
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should let me find an existing receiver" do
|
20
|
+
receiver = @trumpet.receivers.find(1)
|
21
|
+
receiver.name.should == "Everything "
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should let me delete an existing receiver" do
|
25
|
+
receiver = @trumpet.receivers.find(1)
|
26
|
+
receiver.delete.should == true
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should let me fetch all of the messages for a given receiver" do
|
30
|
+
receiver = @trumpet.receivers.find(1)
|
31
|
+
messages = receiver.messages
|
32
|
+
messages.length.should == 1
|
33
|
+
messages.first.content.should == 'yay'
|
34
|
+
end
|
35
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -7,5 +7,9 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
7
7
|
require 'trumpet'
|
8
8
|
|
9
9
|
Spec::Runner.configure do |config|
|
10
|
+
FakeWeb.allow_net_connect = false
|
10
11
|
|
12
|
+
# URI's for the app
|
13
|
+
AUTHENTICATED_URI = 'somedude:somepassword@api.trumpet.io'
|
14
|
+
UNAUTHENTICATED_URI = 'api.trumpet.io'
|
11
15
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
+
|
3
|
+
describe "Transmitter" do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
@trumpet = Trumpet::Base.new :username => "somedude", :password => "somepassword"
|
7
|
+
|
8
|
+
FakeWeb.register_uri :post, "#{AUTHENTICATED_URI}/transmitters", :file => "#{File.dirname(__FILE__)}/fixtures/transmitters/create"
|
9
|
+
FakeWeb.register_uri :get, "#{AUTHENTICATED_URI}/transmitters/1", :file => "#{File.dirname(__FILE__)}/fixtures/transmitters/find"
|
10
|
+
FakeWeb.register_uri :delete, "#{AUTHENTICATED_URI}/transmitters/1", :string => ["204", "OK"]
|
11
|
+
FakeWeb.register_uri :post, "#{AUTHENTICATED_URI}/transmitters/1/messages", :string => ["204", "OK"]
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should let me create a transmitter" do
|
15
|
+
transmitter = @trumpet.transmitters.create :tags => 'dudes, gnarly, rad'
|
16
|
+
transmitter.tags.should == 'dudes, gnarly, rad'
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should let me delete a transmitter" do
|
20
|
+
transmitter = @trumpet.transmitters.find(1)
|
21
|
+
transmitter.tags.should == 'dudes, gnarly, rad'
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should let me broadcast a message into a receiver" do
|
25
|
+
transmitter = @trumpet.transmitters.find(1)
|
26
|
+
transmitter.broadcast(Trumpet::Message.new(:content => 'dude, awesome')).should == true
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
data/spec/user_spec.rb
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
+
|
3
|
+
describe "User" do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
@trumpet = Trumpet::Base.new :username => "somedude", :password => "somepassword"
|
7
|
+
|
8
|
+
FakeWeb.register_uri :post, "#{AUTHENTICATED_URI}/users", :file => "#{File.dirname(__FILE__)}/fixtures/users/create"
|
9
|
+
FakeWeb.register_uri :get, "#{AUTHENTICATED_URI}/users/raddude", :file => "#{File.dirname(__FILE__)}/fixtures/users/show"
|
10
|
+
FakeWeb.register_uri :delete, "#{AUTHENTICATED_URI}/users/raddude", :string => ["204", "OK"]
|
11
|
+
FakeWeb.register_uri :get, "#{AUTHENTICATED_URI}/users/raddude/channels", :file => "#{File.dirname(__FILE__)}/fixtures/users/channels"
|
12
|
+
FakeWeb.register_uri :get, "#{AUTHENTICATED_URI}/users/raddude/listeners", :file => "#{File.dirname(__FILE__)}/fixtures/users/listeners"
|
13
|
+
FakeWeb.register_uri :get, "#{AUTHENTICATED_URI}/users/raddude/receivers", :file => "#{File.dirname(__FILE__)}/fixtures/users/receivers"
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should let me create a new user" do
|
17
|
+
user = @trumpet.users.create :name => 'raddude', :password => 'raddude'
|
18
|
+
user.name.should == 'raddude'
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should let me find an existing user by name" do
|
22
|
+
user = @trumpet.users.find 'raddude'
|
23
|
+
user.name.should == 'raddude'
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should let me delete an existing user" do
|
27
|
+
user = @trumpet.users.find 'raddude'
|
28
|
+
user.delete.should == true
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should let me find all of an existing user's channels" do
|
32
|
+
user = @trumpet.users.find 'raddude'
|
33
|
+
channels = user.channels
|
34
|
+
channels.length.should == 3
|
35
|
+
channels[0].name.should == 'channel1'
|
36
|
+
channels[1].name.should == 'channel2'
|
37
|
+
channels[2].name.should == 'channel3'
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should let me find all of an existing user's listeners" do
|
41
|
+
user = @trumpet.users.find 'raddude'
|
42
|
+
listeners = user.listeners
|
43
|
+
listeners.length.should == 3
|
44
|
+
listeners[0].uri.should == 'mailto://someraddude@mailinator.com'
|
45
|
+
listeners[1].uri.should == 'mailto://someotherdude@mailinator.com'
|
46
|
+
listeners[2].uri.should == 'mailto://andanotherdude@mailinator.com'
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should let me find all of an existing user's receivers" do
|
50
|
+
user = @trumpet.users.find 'raddude'
|
51
|
+
receivers = user.receivers
|
52
|
+
receivers.length.should == 3
|
53
|
+
receivers[0].keywords.should == 'other things, rad dudes'
|
54
|
+
receivers[1].keywords.should == 'gnarly things, radical things'
|
55
|
+
receivers[2].keywords.should == 'other sweet things, pretty sweet stuff'
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
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
|
4
|
+
version: 0.1.0
|
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-05-
|
12
|
+
date: 2009-05-14 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -22,6 +22,16 @@ dependencies:
|
|
22
22
|
- !ruby/object:Gem::Version
|
23
23
|
version: "0"
|
24
24
|
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: fakeweb
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: "0"
|
34
|
+
version:
|
25
35
|
description:
|
26
36
|
email: wtf@trumpet.io
|
27
37
|
executables: []
|
@@ -38,18 +48,43 @@ files:
|
|
38
48
|
- VERSION.yml
|
39
49
|
- lib/core_extensions.rb
|
40
50
|
- lib/trumpet.rb
|
51
|
+
- lib/trumpet/base.rb
|
41
52
|
- lib/trumpet/channel.rb
|
53
|
+
- lib/trumpet/delegator.rb
|
42
54
|
- lib/trumpet/exceptions.rb
|
43
55
|
- lib/trumpet/helpers.rb
|
44
56
|
- lib/trumpet/listener.rb
|
45
57
|
- lib/trumpet/message.rb
|
46
58
|
- lib/trumpet/receiver.rb
|
47
59
|
- lib/trumpet/request.rb
|
60
|
+
- lib/trumpet/resource.rb
|
48
61
|
- lib/trumpet/transmitter.rb
|
49
62
|
- lib/trumpet/user.rb
|
50
63
|
- spec/channel_spec.rb
|
64
|
+
- spec/fixtures/channels/all
|
65
|
+
- spec/fixtures/channels/create
|
66
|
+
- spec/fixtures/channels/messages
|
67
|
+
- spec/fixtures/channels/show
|
68
|
+
- spec/fixtures/listeners/create
|
69
|
+
- spec/fixtures/listeners/find
|
70
|
+
- spec/fixtures/receivers/create
|
71
|
+
- spec/fixtures/receivers/find
|
72
|
+
- spec/fixtures/receivers/messages
|
73
|
+
- spec/fixtures/transmitters/create
|
74
|
+
- spec/fixtures/transmitters/find
|
75
|
+
- spec/fixtures/users/channels
|
76
|
+
- spec/fixtures/users/create
|
77
|
+
- spec/fixtures/users/listeners
|
78
|
+
- spec/fixtures/users/receivers
|
79
|
+
- spec/fixtures/users/show
|
80
|
+
- spec/listener_spec.rb
|
81
|
+
- spec/message_spec.rb
|
82
|
+
- spec/receiver_spec.rb
|
83
|
+
- spec/resource_spec.rb
|
51
84
|
- spec/spec_helper.rb
|
52
|
-
|
85
|
+
- spec/transmitter_spec.rb
|
86
|
+
- spec/user_spec.rb
|
87
|
+
has_rdoc: false
|
53
88
|
homepage: http://github.com/trumpet/trumpet
|
54
89
|
post_install_message:
|
55
90
|
rdoc_options:
|
@@ -73,8 +108,14 @@ requirements: []
|
|
73
108
|
rubyforge_project:
|
74
109
|
rubygems_version: 1.2.0
|
75
110
|
signing_key:
|
76
|
-
specification_version:
|
111
|
+
specification_version: 3
|
77
112
|
summary: The official trumpet gem
|
78
113
|
test_files:
|
79
114
|
- spec/channel_spec.rb
|
115
|
+
- spec/listener_spec.rb
|
116
|
+
- spec/message_spec.rb
|
117
|
+
- spec/receiver_spec.rb
|
118
|
+
- spec/resource_spec.rb
|
80
119
|
- spec/spec_helper.rb
|
120
|
+
- spec/transmitter_spec.rb
|
121
|
+
- spec/user_spec.rb
|