rmb 3.0.0
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/Gemfile +17 -0
- data/History.rdoc +32 -0
- data/LICENSE.txt +20 -0
- data/Manifest +25 -0
- data/Rakefile +71 -0
- data/Readme.rdoc +23 -0
- data/lib/rmb/api.rb +272 -0
- data/lib/rmb/asset.rb +65 -0
- data/lib/rmb/client.rb +205 -0
- data/lib/rmb/drop.rb +89 -0
- data/lib/rmb/job.rb +22 -0
- data/lib/rmb/resource.rb +13 -0
- data/lib/rmb/subscription.rb +10 -0
- data/lib/rmb/version.rb +3 -0
- data/lib/rmb.rb +33 -0
- data/rmb.gemspec +53 -0
- data/spec/rmb/api_spec.rb +0 -0
- data/spec/rmb/asset_spec.rb +93 -0
- data/spec/rmb/client_spec.rb +0 -0
- data/spec/rmb/drop_spec.rb +159 -0
- data/spec/rmb/subscription_spec.rb +0 -0
- data/spec/rmb_spec.rb +30 -0
- data/spec/spec.opts +2 -0
- data/spec/spec_helper.rb +48 -0
- metadata +221 -0
@@ -0,0 +1,159 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
2
|
+
|
3
|
+
describe Drop do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@client = Rmb::Client.new
|
7
|
+
@api = stub(Rmb::Api)
|
8
|
+
@client.service = @api
|
9
|
+
|
10
|
+
Rmb::Resource.stub!(:client).and_return(@client)
|
11
|
+
Rmb::Resource.client.should == @client
|
12
|
+
Rmb::Resource.client.service.should == @api
|
13
|
+
|
14
|
+
@mydrop = Rmb::Drop.new(:name => "test_drop")
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should have the attributes of a Drop" do
|
18
|
+
Drop.new.should respond_to(:name, :email, :description, :expires_at,
|
19
|
+
:expiration_length, :max_bytes, :current_bytes, :asset_count, :chat_password,
|
20
|
+
:password, :admin_password, :admin_email, :email_key)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should find drops by api account" do
|
24
|
+
@client.should_receive(:handle).with(:drops,[@mydrop]).and_return([@mydrop])
|
25
|
+
@api.should_receive(:all_drops).with(1).and_return([@mydrop])
|
26
|
+
Drop.find_all.should == [@mydrop]
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should find drops by name" do
|
30
|
+
@client.should_receive(:handle).with(:drop,{}).and_return(@mydrop)
|
31
|
+
@api.should_receive(:drop).and_return({})
|
32
|
+
Drop.find("mydrop").should == @mydrop
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should find drops by name" do
|
36
|
+
@client.should_receive(:handle).with(:drop,{}).and_return(@mydrop)
|
37
|
+
@api.should_receive(:drop).with("mydrop").and_return({})
|
38
|
+
Drop.find("mydrop").should == @mydrop
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should find a set of related assets" do
|
42
|
+
@asset = stub(Asset)
|
43
|
+
@asset.should_receive(:drop=).once
|
44
|
+
@client.should_receive(:handle).with(:assets,{}).and_return([@asset])
|
45
|
+
@api.stub!(:assets).with(@mydrop.name,1,:oldest).and_return({})
|
46
|
+
@mydrop.assets.should == [@asset]
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should be able to create a new Drop" do
|
50
|
+
@client.should_receive(:handle).with(:drop,{}).and_return(@mydrop)
|
51
|
+
@api.should_receive(:create_drop).with({:name => "tester"}).and_return({})
|
52
|
+
Drop.create({:name => "tester"}).should == @mydrop
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should be able to empty itself" do
|
56
|
+
@client.should_receive(:handle).with(:response,{}).and_return({})
|
57
|
+
@api.should_receive(:empty_drop).with(@mydrop.name).and_return({})
|
58
|
+
@mydrop.empty
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should be able to promote a nick" do
|
62
|
+
@client.should_receive(:handle).with(:response,{}).and_return({"result" => "Success"})
|
63
|
+
@api.should_receive(:promote_nick).with(@mydrop.name,"jake").and_return({})
|
64
|
+
@mydrop.promote("jake")
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should save itself" do
|
68
|
+
@client.should_receive(:handle).with(:drop,{}).and_return(@mydrop)
|
69
|
+
expected_hash = {:password=>"test_password", :expiration_length=>nil, :admin_password=>nil,
|
70
|
+
:chat_password=>nil, :admin_email=>nil, :email_key=>nil, :description=>nil}
|
71
|
+
@api.should_receive(:update_drop).with(@mydrop.name,expected_hash).and_return({})
|
72
|
+
@mydrop.password = "test_password"
|
73
|
+
@mydrop.save
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should destroy itself" do
|
77
|
+
@client.should_receive(:handle).with(:response,{}).and_return({"result" => "Success"})
|
78
|
+
@api.should_receive(:delete_drop).with(@mydrop.name).and_return({})
|
79
|
+
@mydrop.destroy!
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should add files from a url" do
|
83
|
+
@asset = stub(Asset)
|
84
|
+
@asset.should_receive(:drop=).once
|
85
|
+
@client.should_receive(:handle).with(:asset,{}).and_return(@asset)
|
86
|
+
@api.should_receive(:add_file_from_url).with(@mydrop.name,"http://myurl.com/myfile.txt", "description", nil, nil).and_return({})
|
87
|
+
@mydrop.add_file_from_url("http://myurl.com/myfile.txt","description").should == @asset
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should add files from a url with conversion and pingback url" do
|
91
|
+
@asset = stub(Asset)
|
92
|
+
@asset.should_receive(:drop=).once
|
93
|
+
@client.should_receive(:handle).with(:asset,{}).and_return(@asset)
|
94
|
+
@api.should_receive(:add_file_from_url).with(@mydrop.name,"http://myurl.com/myfile.txt", "description", 'H264_HIGH_RES', 'http://rmb.io/test/pinged').and_return({})
|
95
|
+
@mydrop.add_file_from_url("http://myurl.com/myfile.txt", "description", 'H264_HIGH_RES', 'http://rmb.io/test/pinged').should == @asset
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should add files from a path" do
|
99
|
+
@asset = stub(Asset)
|
100
|
+
@asset.should_receive(:drop=).once
|
101
|
+
@client.should_receive(:handle).with(:asset,{}).and_return(@asset)
|
102
|
+
@api.should_receive(:add_file).with(@mydrop.name,"/mypath/myfile.txt", "description", nil, nil, nil).and_return({})
|
103
|
+
@mydrop.add_file("/mypath/myfile.txt", "description").should == @asset
|
104
|
+
end
|
105
|
+
|
106
|
+
it "should add files from a path with pingback url and conversion target" do
|
107
|
+
@asset = stub(Asset)
|
108
|
+
@asset.should_receive(:drop=).once
|
109
|
+
@client.should_receive(:handle).with(:asset,{}).and_return(@asset)
|
110
|
+
@api.should_receive(:add_file).with(@mydrop.name,"/mypath/myfile.txt","description", 'H264_HIGH_RES', 'http://rmb.io/test/pinged', nil).and_return({})
|
111
|
+
@mydrop.add_file("/mypath/myfile.txt","description",'H264_HIGH_RES', 'http://rmb.io/test/pinged').should == @asset
|
112
|
+
end
|
113
|
+
|
114
|
+
it "should add files from a path with pingback url, conversion target, and output location" do
|
115
|
+
@asset = stub(Asset)
|
116
|
+
@asset.should_receive(:drop=).once
|
117
|
+
@client.should_receive(:handle).with(:asset,{}).and_return(@asset)
|
118
|
+
@api.should_receive(:add_file).with(@mydrop.name,"/mypath/myfile.txt","description", 'H264_HIGH_RES', 'http://rmb.io/test/pinged','RmbS3').and_return({})
|
119
|
+
@mydrop.add_file("/mypath/myfile.txt","description",'H264_HIGH_RES', 'http://rmb.io/test/pinged', 'RmbS3').should == @asset
|
120
|
+
end
|
121
|
+
|
122
|
+
it "should create notes from title and contents and description" do
|
123
|
+
@asset = stub(Asset)
|
124
|
+
@asset.should_receive(:drop=).once
|
125
|
+
@client.should_receive(:handle).with(:asset,{}).and_return(@asset)
|
126
|
+
@api.should_receive(:create_note).with(@mydrop.name,"contents", "title","description").and_return({})
|
127
|
+
@mydrop.create_note("contents","title", "description").should == @asset
|
128
|
+
end
|
129
|
+
|
130
|
+
it "should create links from a url, title, and description" do
|
131
|
+
@asset = stub(Asset)
|
132
|
+
@asset.should_receive(:drop=).once
|
133
|
+
@client.should_receive(:handle).with(:asset,{}).and_return(@asset)
|
134
|
+
@api.should_receive(:create_link).with(@mydrop.name,"http://rmb.io","rmb.io","The best!").and_return({})
|
135
|
+
@mydrop.create_link("http://rmb.io","rmb.io","The best!").should == @asset
|
136
|
+
end
|
137
|
+
|
138
|
+
it "should be able to create pingback subscriptions" do
|
139
|
+
@sub = stub(Subscription)
|
140
|
+
@sub.should_receive(:drop=).once
|
141
|
+
@client.should_receive(:handle).with(:subscription,{}).and_return(@sub)
|
142
|
+
@api.should_receive(:create_pingback_subscription).with(@mydrop.name,"http://rmb.io",{}).and_return({})
|
143
|
+
@mydrop.create_pingback_subscription("http://rmb.io")
|
144
|
+
end
|
145
|
+
|
146
|
+
it "should be able to get a list of subscriptions back" do
|
147
|
+
@sub = stub(Subscription)
|
148
|
+
@sub.should_receive(:drop=).once
|
149
|
+
@client.should_receive(:handle).with(:subscriptions,{}).and_return([@sub])
|
150
|
+
@api.stub!(:subscriptions).with(@mydrop.name, 1).and_return({})
|
151
|
+
@mydrop.subscriptions.should == [@sub]
|
152
|
+
end
|
153
|
+
|
154
|
+
it "should generate a signed url" do
|
155
|
+
@api.should_receive(:generate_drop_url).with(@mydrop.name)
|
156
|
+
@mydrop.generate_url
|
157
|
+
end
|
158
|
+
|
159
|
+
end
|
File without changes
|
data/spec/rmb_spec.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
+
|
3
|
+
describe Rmb do
|
4
|
+
it "should store the API key" do
|
5
|
+
Rmb::Config.api_key = "83a05513ddddb73e75c9d8146c115f7fd8e90de6"
|
6
|
+
Rmb::Config.api_key.should == "83a05513ddddb73e75c9d8146c115f7fd8e90de6"
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should define exceptions which inherit from StandardError" do
|
10
|
+
exception_names = [
|
11
|
+
:MissingResourceError,
|
12
|
+
:AuthorizationError,
|
13
|
+
:RequestError,
|
14
|
+
:ServerError
|
15
|
+
]
|
16
|
+
|
17
|
+
exceptions = exception_names.map do |n|
|
18
|
+
Rmb.const_get n
|
19
|
+
end
|
20
|
+
|
21
|
+
exceptions.each do |e|
|
22
|
+
assert_nothing_raised do
|
23
|
+
begin
|
24
|
+
raise e
|
25
|
+
rescue StandardError
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/spec/spec.opts
ADDED
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
Bundler.setup :default, :test
|
4
|
+
|
5
|
+
require 'spec'
|
6
|
+
require 'spec/test/unit'
|
7
|
+
require 'fakeweb'
|
8
|
+
|
9
|
+
FakeWeb.allow_net_connect = false
|
10
|
+
|
11
|
+
$: << File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
|
12
|
+
|
13
|
+
require 'rmb'
|
14
|
+
include Rmb
|
15
|
+
|
16
|
+
module Enumerable
|
17
|
+
# Apply an expectation to each object in the collection.
|
18
|
+
def each_should(*args)
|
19
|
+
each {|item| item.should(*args)}
|
20
|
+
end
|
21
|
+
|
22
|
+
# Apply a negative expectation to each object in the collection.
|
23
|
+
def each_should_not(*args)
|
24
|
+
each {|item| item.should_not(*args)}
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# Make class mocks and stubs pretend to belong to their given class.
|
29
|
+
module Spec::Mocks
|
30
|
+
class Mock
|
31
|
+
def kind_of?(klass)
|
32
|
+
if @name.kind_of?(Class) and @name <= klass
|
33
|
+
true
|
34
|
+
else
|
35
|
+
super
|
36
|
+
end
|
37
|
+
end
|
38
|
+
alias is_a? kind_of?
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
# Reimplement Module#=== in Ruby. Without this, === bypasses message
|
43
|
+
# dispatch, so the trick above doesn't wouldn't apply to case statements.
|
44
|
+
class Module
|
45
|
+
def ===(arg)
|
46
|
+
arg.kind_of?(self)
|
47
|
+
end
|
48
|
+
end
|
metadata
ADDED
@@ -0,0 +1,221 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rmb
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 7
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 3
|
8
|
+
- 0
|
9
|
+
- 0
|
10
|
+
version: 3.0.0
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Jake Good, Eric Skiff, Kunal Shah, Seth Thomas Rasmussen, Matthew Rathbone
|
14
|
+
- Bryan Woods
|
15
|
+
autorequire:
|
16
|
+
bindir: bin
|
17
|
+
cert_chain: []
|
18
|
+
|
19
|
+
date: 2010-09-21 00:00:00 -04:00
|
20
|
+
default_executable:
|
21
|
+
dependencies:
|
22
|
+
- !ruby/object:Gem::Dependency
|
23
|
+
name: mime-types
|
24
|
+
prerelease: false
|
25
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ">="
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
hash: 3
|
31
|
+
segments:
|
32
|
+
- 0
|
33
|
+
version: "0"
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: json
|
38
|
+
prerelease: false
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
hash: 3
|
45
|
+
segments:
|
46
|
+
- 0
|
47
|
+
version: "0"
|
48
|
+
type: :runtime
|
49
|
+
version_requirements: *id002
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: httparty
|
52
|
+
prerelease: false
|
53
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - "="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
hash: 5
|
59
|
+
segments:
|
60
|
+
- 0
|
61
|
+
- 6
|
62
|
+
- 1
|
63
|
+
version: 0.6.1
|
64
|
+
type: :runtime
|
65
|
+
version_requirements: *id003
|
66
|
+
- !ruby/object:Gem::Dependency
|
67
|
+
name: multipart-post
|
68
|
+
prerelease: false
|
69
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
70
|
+
none: false
|
71
|
+
requirements:
|
72
|
+
- - "="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
hash: 21
|
75
|
+
segments:
|
76
|
+
- 1
|
77
|
+
- 0
|
78
|
+
- 1
|
79
|
+
version: 1.0.1
|
80
|
+
type: :runtime
|
81
|
+
version_requirements: *id004
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
name: activesupport
|
84
|
+
prerelease: false
|
85
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
86
|
+
none: false
|
87
|
+
requirements:
|
88
|
+
- - "="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
hash: 17
|
91
|
+
segments:
|
92
|
+
- 2
|
93
|
+
- 3
|
94
|
+
- 9
|
95
|
+
version: 2.3.9
|
96
|
+
type: :runtime
|
97
|
+
version_requirements: *id005
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: rspec
|
100
|
+
prerelease: false
|
101
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
102
|
+
none: false
|
103
|
+
requirements:
|
104
|
+
- - ">="
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
hash: 3
|
107
|
+
segments:
|
108
|
+
- 0
|
109
|
+
version: "0"
|
110
|
+
type: :development
|
111
|
+
version_requirements: *id006
|
112
|
+
- !ruby/object:Gem::Dependency
|
113
|
+
name: diff-lcs
|
114
|
+
prerelease: false
|
115
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
116
|
+
none: false
|
117
|
+
requirements:
|
118
|
+
- - ">="
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
hash: 3
|
121
|
+
segments:
|
122
|
+
- 0
|
123
|
+
version: "0"
|
124
|
+
type: :development
|
125
|
+
version_requirements: *id007
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: fakeweb
|
128
|
+
prerelease: false
|
129
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
130
|
+
none: false
|
131
|
+
requirements:
|
132
|
+
- - ">="
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
hash: 3
|
135
|
+
segments:
|
136
|
+
- 0
|
137
|
+
version: "0"
|
138
|
+
type: :development
|
139
|
+
version_requirements: *id008
|
140
|
+
description: A Ruby client library for the Rich Media Backbone (RMB) API (http://rmb.io). Please send all feedback to backbone@dropio.com
|
141
|
+
email:
|
142
|
+
- jake@dropio.com
|
143
|
+
- eric@dropio.com
|
144
|
+
- kunal@dropio.com
|
145
|
+
- seth@dropio.com
|
146
|
+
- matthew@dropio.com
|
147
|
+
- bryan@dropio.com
|
148
|
+
executables: []
|
149
|
+
|
150
|
+
extensions: []
|
151
|
+
|
152
|
+
extra_rdoc_files:
|
153
|
+
- History.rdoc
|
154
|
+
- Readme.rdoc
|
155
|
+
files:
|
156
|
+
- Gemfile
|
157
|
+
- History.rdoc
|
158
|
+
- LICENSE.txt
|
159
|
+
- Manifest
|
160
|
+
- Rakefile
|
161
|
+
- Readme.rdoc
|
162
|
+
- rmb.gemspec
|
163
|
+
- lib/rmb.rb
|
164
|
+
- lib/rmb/api.rb
|
165
|
+
- lib/rmb/asset.rb
|
166
|
+
- lib/rmb/client.rb
|
167
|
+
- lib/rmb/drop.rb
|
168
|
+
- lib/rmb/job.rb
|
169
|
+
- lib/rmb/resource.rb
|
170
|
+
- lib/rmb/subscription.rb
|
171
|
+
- lib/rmb/version.rb
|
172
|
+
- spec/rmb/api_spec.rb
|
173
|
+
- spec/rmb/asset_spec.rb
|
174
|
+
- spec/rmb/client_spec.rb
|
175
|
+
- spec/rmb/drop_spec.rb
|
176
|
+
- spec/rmb/subscription_spec.rb
|
177
|
+
- spec/rmb_spec.rb
|
178
|
+
- spec/spec.opts
|
179
|
+
- spec/spec_helper.rb
|
180
|
+
has_rdoc: true
|
181
|
+
homepage: http://github.com/dropio/rmb
|
182
|
+
licenses: []
|
183
|
+
|
184
|
+
post_install_message:
|
185
|
+
rdoc_options:
|
186
|
+
- --line-numbers
|
187
|
+
- --inline-source
|
188
|
+
- --title
|
189
|
+
- Dropio
|
190
|
+
- --main
|
191
|
+
- Readme.rdoc
|
192
|
+
require_paths:
|
193
|
+
- lib
|
194
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
195
|
+
none: false
|
196
|
+
requirements:
|
197
|
+
- - ">="
|
198
|
+
- !ruby/object:Gem::Version
|
199
|
+
hash: 3
|
200
|
+
segments:
|
201
|
+
- 0
|
202
|
+
version: "0"
|
203
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
204
|
+
none: false
|
205
|
+
requirements:
|
206
|
+
- - ">="
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
hash: 11
|
209
|
+
segments:
|
210
|
+
- 1
|
211
|
+
- 2
|
212
|
+
version: "1.2"
|
213
|
+
requirements: []
|
214
|
+
|
215
|
+
rubyforge_project: rmb
|
216
|
+
rubygems_version: 1.3.7
|
217
|
+
signing_key:
|
218
|
+
specification_version: 3
|
219
|
+
summary: A Ruby client library for the Drop.io Rich Media Backbone (RMB) API (http://rmb.io)
|
220
|
+
test_files: []
|
221
|
+
|