cloudhdr 0.0.1
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.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/.rspec +2 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +1 -0
- data/cloudhdr.gemspec +30 -0
- data/lib/cloudhdr.rb +22 -0
- data/lib/cloudhdr/base.rb +85 -0
- data/lib/cloudhdr/cloudhdr.rb +17 -0
- data/lib/cloudhdr/errors.rb +43 -0
- data/lib/cloudhdr/extensions.rb +39 -0
- data/lib/cloudhdr/http.rb +90 -0
- data/lib/cloudhdr/http/net_http.rb +142 -0
- data/lib/cloudhdr/http/typhoeus.rb +31 -0
- data/lib/cloudhdr/job.rb +46 -0
- data/lib/cloudhdr/response.rb +33 -0
- data/lib/cloudhdr/version.rb +3 -0
- data/spec/cloudhdr/cloudhdr_spec.rb +66 -0
- data/spec/cloudhdr/http/net_http_spec.rb +100 -0
- data/spec/cloudhdr/http/typhoeus_spec.rb +43 -0
- data/spec/cloudhdr/http_spec.rb +117 -0
- data/spec/cloudhdr/job_spec.rb +128 -0
- data/spec/cloudhdr/response_spec.rb +49 -0
- data/spec/spec_helper.rb +22 -0
- metadata +174 -0
@@ -0,0 +1,128 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe "Cloudhdr::Job" do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@api_key = 'abc123'
|
7
|
+
end
|
8
|
+
|
9
|
+
describe ".create" do
|
10
|
+
before(:each) do
|
11
|
+
@url = "#{Cloudhdr.base_url}/api/v1/jobs"
|
12
|
+
@params = {:api_key => @api_key,:input => "s3://bucket-name/file-name.jpg" }
|
13
|
+
@params_as_json = Cloudhdr::Base.encode(@params, :json)
|
14
|
+
@params_as_xml = Cloudhdr::Base.encode(@params, :xml)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should POST to the correct url and return a response" do
|
18
|
+
Cloudhdr::HTTP.should_receive(:post).with(@url + ".json", @params_as_json, {}).and_return(Cloudhdr::Response.new)
|
19
|
+
r = Cloudhdr::Job.create(@params)
|
20
|
+
r.class.should == Cloudhdr::Response
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should apply the global API key when JSON and no api_key is passed" do
|
24
|
+
pending "Need to fix"
|
25
|
+
Cloudhdr.api_key = 'asdfasdf'
|
26
|
+
Cloudhdr::HTTP.should_receive(:post).with(@url + ".json",@params_as_json,{}) do |url, params, options|
|
27
|
+
Cloudhdr::Base.decode(params)['api_key'].should == Cloudhdr.api_key
|
28
|
+
end.and_return(Cloudhdr::Response.new)
|
29
|
+
Cloudhdr::Job.create(:input => @params[:input])
|
30
|
+
Cloudhdr.api_key = nil
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should apply the global API key when XML and no api_key is passed" do
|
34
|
+
pending "Need to fix"
|
35
|
+
Cloudhdr.api_key = 'asdfasdf'
|
36
|
+
Cloudhdr::HTTP.should_receive(:post).with(@url + ".xml",@params_as_xml,{}) do |url, params, options|
|
37
|
+
Cloudhdr::Base.decode(params, :xml)['api_request']['api_key'].should == Cloudhdr.api_key
|
38
|
+
end.and_return(Cloudhdr::Response.new)
|
39
|
+
Cloudhdr::Job.create({:api_request => {:input => @params[:input]}}, {:format => :xml})
|
40
|
+
Cloudhdr.api_key = nil
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should apply the global API key when an XML string is passed and no api_key is passed" do
|
44
|
+
pending "Need to fix"
|
45
|
+
Cloudhdr.api_key = 'asdfasdf'
|
46
|
+
Cloudhdr::HTTP.should_receive(:post).with(@url + ".json",@params_as_xml,{}) do |url, params, options|
|
47
|
+
Cloudhdr::Base.decode(params, :xml)['api_request']['api_key'] == Cloudhdr.api_key
|
48
|
+
end.and_return(Cloudhdr::Response.new)
|
49
|
+
Cloudhdr::Job.create({:input => @params[:input]}.to_xml(:root => :api_request), {:format => :xml})
|
50
|
+
Cloudhdr.api_key = nil
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
describe ".list" do
|
57
|
+
before(:each) do
|
58
|
+
@url = "#{Cloudhdr.base_url}/api/v1/jobs"
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should GET the correct url and return a response" do
|
62
|
+
Cloudhdr::HTTP.stub(:get).with(@url + ".json", {:params => {:api_key => @api_key,
|
63
|
+
:page => 1,
|
64
|
+
:per_page => 50,
|
65
|
+
:state => nil}}).and_return(Cloudhdr::Response.new)
|
66
|
+
Cloudhdr::Response.should == Cloudhdr::Job.list(:api_key => @api_key).class
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should merge params well" do
|
70
|
+
Cloudhdr::HTTP.stub(:get).with(@url + ".json", {:params => {:api_key => @api_key,
|
71
|
+
:page => 1,
|
72
|
+
:per_page => 50,
|
73
|
+
:some => 'param',
|
74
|
+
:state => nil}}).and_return(Cloudhdr::Response.new)
|
75
|
+
Cloudhdr::Response.should == Cloudhdr::Job.list(:api_key => @api_key, :params => {:some => 'param'}).class
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe ".details" do
|
80
|
+
before(:each) do
|
81
|
+
@job_id = 1
|
82
|
+
@url = "#{Cloudhdr.base_url}/api/v1/jobs/#{@job_id}"
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should GET the correct url and return a response" do
|
86
|
+
Cloudhdr::HTTP.stub(:get).with(@url + ".json", {:params => {:api_key => @api_key}}).and_return(Cloudhdr::Response.new)
|
87
|
+
Cloudhdr::Response.should == Cloudhdr::Job.details(1, :api_key => @api_key).class
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
describe ".resubmit" do
|
92
|
+
before(:each) do
|
93
|
+
@job_id = 1
|
94
|
+
@url = "#{Cloudhdr.base_url}/api/v1/jobs/#{@job_id}/resubmit"
|
95
|
+
end
|
96
|
+
|
97
|
+
it "should GET the correct url and return a response" do
|
98
|
+
Cloudhdr::HTTP.stub(:get).with(@url + ".json", {:params => {:api_key => @api_key}}).and_return(Cloudhdr::Response.new)
|
99
|
+
Cloudhdr::Response.should == Cloudhdr::Job.resubmit(1, :api_key => @api_key).class
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
describe ".cancel" do
|
104
|
+
before(:each) do
|
105
|
+
@job_id = 1
|
106
|
+
@url = "#{Cloudhdr.base_url}/api/v1/jobs/#{@job_id}/cancel"
|
107
|
+
end
|
108
|
+
|
109
|
+
it "should GET the correct url and return a response" do
|
110
|
+
Cloudhdr::HTTP.stub(:get).with(@url + ".json", {:params => {:api_key => @api_key}}).and_return(Cloudhdr::Response.new)
|
111
|
+
Cloudhdr::Response.should == Cloudhdr::Job.cancel(1, :api_key => @api_key).class
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
describe ".delete" do
|
116
|
+
before(:each) do
|
117
|
+
@job_id = 1
|
118
|
+
@url = "#{Cloudhdr.base_url}/api/v1/jobs/#{@job_id}"
|
119
|
+
end
|
120
|
+
|
121
|
+
it "should DELETE the correct url and return a response" do
|
122
|
+
Cloudhdr::HTTP.stub(:delete).with(@url + ".json", {:params => {:api_key => @api_key}}).and_return(Cloudhdr::Response.new)
|
123
|
+
Cloudhdr::Response.should == Cloudhdr::Job.delete(1, :api_key => @api_key).class
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
|
128
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe "Cloudhdr::Response" do
|
4
|
+
|
5
|
+
|
6
|
+
describe "#success?" do
|
7
|
+
it "should return true when code is between 200 and 299" do
|
8
|
+
Cloudhdr::Response.new(:code => 200).success?.should be_true
|
9
|
+
Cloudhdr::Response.new(:code => 299).success?.should be_true
|
10
|
+
Cloudhdr::Response.new(:code => 250).success?.should be_true
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should return false when code it less than 200 or greater than 299" do
|
14
|
+
Cloudhdr::Response.new(:code => 300).success?.should_not be_true
|
15
|
+
Cloudhdr::Response.new(:code => 199).success?.should_not be_true
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "#errors" do
|
20
|
+
it "should return an empty array when body is not a Hash" do
|
21
|
+
Cloudhdr::Response.new(:body => 1).errors.should == []
|
22
|
+
Cloudhdr::Response.new(:body => "something").errors.should == []
|
23
|
+
Cloudhdr::Response.new(:body => [1]).errors.should == []
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should return the value of the key 'errors' as a compacted array when body is a Hash" do
|
27
|
+
Cloudhdr::Response.new(:body => {'errors' => ['must be awesome']}).errors.should == ['must be awesome']
|
28
|
+
Cloudhdr::Response.new(:body => {'errors' => 'must be awesome'}).errors.should == ['must be awesome']
|
29
|
+
Cloudhdr::Response.new(:body => {'errors' => ['must be awesome', nil]}).errors.should == ['must be awesome']
|
30
|
+
Cloudhdr::Response.new(:body => {}).errors.should == []
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "#body_without_wrapper" do
|
35
|
+
it "should return the body when the body is a string" do
|
36
|
+
Cloudhdr::Response.new(:body => "some text").body_without_wrapper.should == "some text"
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should return the body when the body is not wrapped in api_response and is a hash" do
|
40
|
+
Cloudhdr::Response.new(:body => {'some' => 'hash'}).body_without_wrapper.should == {'some' => 'hash'}
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should return body['api_response'] when body is a hash and body['api_response'] exists" do
|
44
|
+
Cloudhdr::Response.new(:body => {'api_response' => {'some' => 'hash'}}).body_without_wrapper.should == {'some' => 'hash'}
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
|
49
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# This file was generated by the `rspec --init` command. Conventionally, all
|
2
|
+
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
3
|
+
# Require this file using `require "spec_helper"` to ensure that it is only
|
4
|
+
# loaded once.
|
5
|
+
#
|
6
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
7
|
+
|
8
|
+
require 'webmock/rspec'
|
9
|
+
#require 'mocha/api'
|
10
|
+
|
11
|
+
require File.expand_path("../../lib/cloudhdr", __FILE__)
|
12
|
+
RSpec.configure do |config|
|
13
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
14
|
+
config.run_all_when_everything_filtered = true
|
15
|
+
config.filter_run :focus
|
16
|
+
|
17
|
+
# Run specs in random order to surface order dependencies. If you find an
|
18
|
+
# order dependency and want to debug it, you can fix the order by providing
|
19
|
+
# the seed, which is printed after each run.
|
20
|
+
# --seed 1234
|
21
|
+
config.order = 'random'
|
22
|
+
end
|
metadata
ADDED
@@ -0,0 +1,174 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cloudhdr
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jeremy Green
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-06-08 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activesupport
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>'
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 3.0.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>'
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 3.0.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: json
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.8.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.8.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.3'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.3'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 2.13.0
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 2.13.0
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: webmock
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 1.11.0
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 1.11.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: builder
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ~>
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 3.2.0
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 3.2.0
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rake
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
description: Ruby wrapper for the CloudHdr Processing API
|
112
|
+
email:
|
113
|
+
- jeremy@octolabs.com
|
114
|
+
executables: []
|
115
|
+
extensions: []
|
116
|
+
extra_rdoc_files: []
|
117
|
+
files:
|
118
|
+
- .gitignore
|
119
|
+
- .rspec
|
120
|
+
- Gemfile
|
121
|
+
- LICENSE.txt
|
122
|
+
- README.md
|
123
|
+
- Rakefile
|
124
|
+
- cloudhdr.gemspec
|
125
|
+
- lib/cloudhdr.rb
|
126
|
+
- lib/cloudhdr/base.rb
|
127
|
+
- lib/cloudhdr/cloudhdr.rb
|
128
|
+
- lib/cloudhdr/errors.rb
|
129
|
+
- lib/cloudhdr/extensions.rb
|
130
|
+
- lib/cloudhdr/http.rb
|
131
|
+
- lib/cloudhdr/http/net_http.rb
|
132
|
+
- lib/cloudhdr/http/typhoeus.rb
|
133
|
+
- lib/cloudhdr/job.rb
|
134
|
+
- lib/cloudhdr/response.rb
|
135
|
+
- lib/cloudhdr/version.rb
|
136
|
+
- spec/cloudhdr/cloudhdr_spec.rb
|
137
|
+
- spec/cloudhdr/http/net_http_spec.rb
|
138
|
+
- spec/cloudhdr/http/typhoeus_spec.rb
|
139
|
+
- spec/cloudhdr/http_spec.rb
|
140
|
+
- spec/cloudhdr/job_spec.rb
|
141
|
+
- spec/cloudhdr/response_spec.rb
|
142
|
+
- spec/spec_helper.rb
|
143
|
+
homepage: ''
|
144
|
+
licenses:
|
145
|
+
- MIT
|
146
|
+
metadata: {}
|
147
|
+
post_install_message:
|
148
|
+
rdoc_options: []
|
149
|
+
require_paths:
|
150
|
+
- lib
|
151
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
152
|
+
requirements:
|
153
|
+
- - '>='
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
version: '0'
|
156
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
157
|
+
requirements:
|
158
|
+
- - '>='
|
159
|
+
- !ruby/object:Gem::Version
|
160
|
+
version: '0'
|
161
|
+
requirements: []
|
162
|
+
rubyforge_project:
|
163
|
+
rubygems_version: 2.0.3
|
164
|
+
signing_key:
|
165
|
+
specification_version: 4
|
166
|
+
summary: Ruby wrapper for the CloudHdr Processing API
|
167
|
+
test_files:
|
168
|
+
- spec/cloudhdr/cloudhdr_spec.rb
|
169
|
+
- spec/cloudhdr/http/net_http_spec.rb
|
170
|
+
- spec/cloudhdr/http/typhoeus_spec.rb
|
171
|
+
- spec/cloudhdr/http_spec.rb
|
172
|
+
- spec/cloudhdr/job_spec.rb
|
173
|
+
- spec/cloudhdr/response_spec.rb
|
174
|
+
- spec/spec_helper.rb
|