capgun 0.0.3 → 0.1.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.lock +7 -7
- data/HISTORY.md +7 -3
- data/lib/capgun/client.rb +16 -2
- data/lib/capgun/config.rb +2 -0
- data/lib/capgun/version.rb +2 -2
- data/spec/capgun/client_spec.rb +42 -0
- data/spec/fixtures/estimate-with-options.json +68 -0
- data/spec/fixtures/order-with-options.json +74 -0
- metadata +8 -4
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
capgun (0.0
|
4
|
+
capgun (0.1.0)
|
5
5
|
activesupport (>= 2.3.9, < 4)
|
6
6
|
faraday (~> 0.8)
|
7
7
|
json (~> 1.6.6)
|
@@ -10,18 +10,18 @@ PATH
|
|
10
10
|
GEM
|
11
11
|
remote: https://rubygems.org/
|
12
12
|
specs:
|
13
|
-
activesupport (3.2.
|
14
|
-
i18n (
|
13
|
+
activesupport (3.2.13)
|
14
|
+
i18n (= 0.6.1)
|
15
15
|
multi_json (~> 1.0)
|
16
16
|
addressable (2.2.8)
|
17
17
|
crack (0.3.1)
|
18
18
|
diff-lcs (1.1.3)
|
19
|
-
faraday (0.8.
|
19
|
+
faraday (0.8.7)
|
20
20
|
multipart-post (~> 1.1)
|
21
|
-
i18n (0.6.
|
22
|
-
json (1.6.
|
21
|
+
i18n (0.6.1)
|
22
|
+
json (1.6.8)
|
23
23
|
multi_json (1.3.5)
|
24
|
-
multipart-post (1.
|
24
|
+
multipart-post (1.2.0)
|
25
25
|
rake (0.9.2.2)
|
26
26
|
rspec (2.9.0)
|
27
27
|
rspec-core (~> 2.9.0)
|
data/HISTORY.md
CHANGED
@@ -1,14 +1,18 @@
|
|
1
1
|
HISTORY
|
2
2
|
=======
|
3
3
|
|
4
|
+
0.1.0 - May 5, 2013
|
5
|
+
--------------------------------------------------------------------------------
|
6
|
+
* options for capture and estimate can be given in a block
|
7
|
+
|
4
8
|
0.0.3 - April 17, 2013
|
5
|
-
|
9
|
+
--------------------------------------------------------------------------------
|
6
10
|
* Update docs
|
7
11
|
|
8
12
|
0.0.2 - May 14, 2012
|
9
|
-
|
13
|
+
--------------------------------------------------------------------------------
|
10
14
|
* Basic implementation
|
11
15
|
|
12
16
|
0.0.1 - April 4, 2012
|
13
|
-
|
17
|
+
--------------------------------------------------------------------------------
|
14
18
|
* Initial commit
|
data/lib/capgun/client.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'json'
|
2
2
|
require 'json/pure'
|
3
|
+
require 'ostruct'
|
3
4
|
require 'capgun/base'
|
4
5
|
require 'capgun/account'
|
5
6
|
require 'capgun/estimate'
|
@@ -36,7 +37,8 @@ module Capgun
|
|
36
37
|
# @param [String] url A url that will be captured.
|
37
38
|
# @param [Hash] options Additional options to the capture request.
|
38
39
|
# @return [Capgun::Estimate] The estimate for the capture request.
|
39
|
-
def estimate(url, options = {})
|
40
|
+
def estimate(url, options = {}, &block)
|
41
|
+
options = with_options(options, &block)
|
40
42
|
estimate = post("/v1/orders/estimate.json", options.merge(:url => url))
|
41
43
|
Capgun::Estimate.new(estimate['order'])
|
42
44
|
end
|
@@ -46,7 +48,8 @@ module Capgun
|
|
46
48
|
# @param [String] url A url that will be captured.
|
47
49
|
# @param [Hash] options Additional options to the capture request.
|
48
50
|
# @return [Capgun::Order] The capture request order.
|
49
|
-
def capture(url, options = {})
|
51
|
+
def capture(url, options = {}, &block)
|
52
|
+
options = with_options(options, &block)
|
50
53
|
order = post("/v1/orders.json", options.merge(:url => url))
|
51
54
|
Capgun::Order.new(order['order'])
|
52
55
|
end
|
@@ -77,6 +80,17 @@ module Capgun
|
|
77
80
|
Capgun::Account.new(account['account'])
|
78
81
|
end
|
79
82
|
|
83
|
+
private
|
84
|
+
|
85
|
+
def with_options(options, &block)
|
86
|
+
if block_given?
|
87
|
+
options = OpenStruct.new(options)
|
88
|
+
yield(options)
|
89
|
+
options = options.marshal_dump
|
90
|
+
end
|
91
|
+
options
|
92
|
+
end
|
93
|
+
|
80
94
|
end
|
81
95
|
|
82
96
|
end
|
data/lib/capgun/config.rb
CHANGED
@@ -37,6 +37,8 @@ module Capgun
|
|
37
37
|
:proxy,
|
38
38
|
]
|
39
39
|
|
40
|
+
#ORDER_OPTIONS = Struct.new(:id, :url, :notify, :cost, :viewport, :packages, :images, :asset_urls, :options, :job)
|
41
|
+
|
40
42
|
attr_accessor *VALID_OPTIONS_KEYS
|
41
43
|
|
42
44
|
# When this module is extended, set all configuration options to their default values
|
data/lib/capgun/version.rb
CHANGED
data/spec/capgun/client_spec.rb
CHANGED
@@ -74,6 +74,19 @@ describe Capgun::Client do
|
|
74
74
|
estimate.cost.should == 1
|
75
75
|
end
|
76
76
|
|
77
|
+
specify "estimate with options in a block" do
|
78
|
+
stub_request(:post, "https://api.capgun.io/v1/orders/estimate.json").
|
79
|
+
with(:body => '{"viewport":"1024x2048","packages":["images","viewport"],"url":"http://example.com/test"}',
|
80
|
+
:headers => {'Accept'=>'application/json', 'Authorization'=>'test', 'User-Agent'=>'Capgun.io Ruby Gem 0.0.3'}).
|
81
|
+
to_return(:status => 200, :body => fixture("estimate-with-options.json"), :headers => {})
|
82
|
+
|
83
|
+
estimate = Capgun.estimate("http://example.com/test", :viewport => "200x100") do |options|
|
84
|
+
options.packages = ['images', 'viewport']
|
85
|
+
options.viewport = '1024x2048'
|
86
|
+
end
|
87
|
+
estimate.cost.should == 3
|
88
|
+
end
|
89
|
+
|
77
90
|
specify "urls are submitted for capture" do
|
78
91
|
stub_request(:post, "https://api.capgun.io/v1/orders.json").
|
79
92
|
with(:body => "{\"url\":\"http://example.com/test\"}",
|
@@ -85,6 +98,35 @@ describe Capgun::Client do
|
|
85
98
|
order.cost.should == 1
|
86
99
|
end
|
87
100
|
|
101
|
+
specify "capture with options can be in a block" do
|
102
|
+
stub_request(:post, "https://api.capgun.io/v1/orders.json").
|
103
|
+
with(:body => '{"packages":["images","viewport"],"viewport":"1024x2048","url":"http://example.com/test"}',
|
104
|
+
:headers => {'Accept'=>'application/json', 'Authorization'=>'test', 'User-Agent'=>'Capgun.io Ruby Gem 0.0.3'}).
|
105
|
+
to_return(:status => 200, :body => fixture("order-with-options.json"), :headers => {})
|
106
|
+
|
107
|
+
order = Capgun.capture("http://example.com/test", :packages => [ :images, :viewport ], :viewport => "1024x2048")
|
108
|
+
order.id.should == '4fd20a1288f560177600000a'
|
109
|
+
order.cost.should == 1
|
110
|
+
order.viewport.should == '1024x2048+0+0'
|
111
|
+
order.packages.should == ['base', 'images', 'viewport']
|
112
|
+
end
|
113
|
+
|
114
|
+
specify "capture with options can be in a block" do
|
115
|
+
stub_request(:post, "https://api.capgun.io/v1/orders.json").
|
116
|
+
with(:body => '{"viewport":"1024x2048","packages":["images","viewport"],"url":"http://example.com/test"}',
|
117
|
+
:headers => {'Accept'=>'application/json', 'Authorization'=>'test', 'User-Agent'=>'Capgun.io Ruby Gem 0.0.3'}).
|
118
|
+
to_return(:status => 200, :body => fixture("order-with-options.json"), :headers => {})
|
119
|
+
|
120
|
+
order = Capgun.capture("http://example.com/test", :viewport => "200x100") do |options|
|
121
|
+
options.packages = ['images', 'viewport']
|
122
|
+
options.viewport = '1024x2048'
|
123
|
+
end
|
124
|
+
order.id.should == '4fd20a1288f560177600000a'
|
125
|
+
order.cost.should == 1
|
126
|
+
order.viewport.should == '1024x2048+0+0'
|
127
|
+
order.packages.should == ['base', 'images', 'viewport']
|
128
|
+
end
|
129
|
+
|
88
130
|
specify "showing a capture order" do
|
89
131
|
stub_request(:get, "https://api.capgun.io/v1/orders/4fd20a1288f560177600000a.json").
|
90
132
|
with(:headers => {'Accept'=>'application/json', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'test', 'User-Agent'=>'Capgun.io Ruby Gem 0.0.3'}).
|
@@ -0,0 +1,68 @@
|
|
1
|
+
{
|
2
|
+
"order": {
|
3
|
+
"url": "http://example.com/",
|
4
|
+
"notify": null,
|
5
|
+
"cost": 3,
|
6
|
+
"viewport": "1024x2048",
|
7
|
+
"images": {
|
8
|
+
"xlarge": "640x1280",
|
9
|
+
"small": "80x160",
|
10
|
+
"medium": "160x320",
|
11
|
+
"large": "320x640",
|
12
|
+
"excerpt": "400x150+0+0"
|
13
|
+
},
|
14
|
+
"packages": [
|
15
|
+
"base",
|
16
|
+
"images",
|
17
|
+
"viewport"
|
18
|
+
],
|
19
|
+
"options": [
|
20
|
+
{
|
21
|
+
"package": "base"
|
22
|
+
},
|
23
|
+
{
|
24
|
+
"package": "images"
|
25
|
+
},
|
26
|
+
{
|
27
|
+
"package": "viewport"
|
28
|
+
},
|
29
|
+
{
|
30
|
+
"url": "http://example.com/"
|
31
|
+
},
|
32
|
+
{
|
33
|
+
"notify": null
|
34
|
+
},
|
35
|
+
{
|
36
|
+
"timeout": 5000
|
37
|
+
},
|
38
|
+
{
|
39
|
+
"image": {
|
40
|
+
"xlarge": "640x480"
|
41
|
+
}
|
42
|
+
},
|
43
|
+
{
|
44
|
+
"image": {
|
45
|
+
"small": "80x60"
|
46
|
+
}
|
47
|
+
},
|
48
|
+
{
|
49
|
+
"image": {
|
50
|
+
"medium": "160x120"
|
51
|
+
}
|
52
|
+
},
|
53
|
+
{
|
54
|
+
"image": {
|
55
|
+
"large": "320x240"
|
56
|
+
}
|
57
|
+
},
|
58
|
+
{
|
59
|
+
"image": {
|
60
|
+
"excerpt": "400x150+0+0"
|
61
|
+
}
|
62
|
+
},
|
63
|
+
{
|
64
|
+
"viewport": "1024x2048"
|
65
|
+
}
|
66
|
+
]
|
67
|
+
}
|
68
|
+
}
|
@@ -0,0 +1,74 @@
|
|
1
|
+
|
2
|
+
{
|
3
|
+
"order": {
|
4
|
+
"id": "4fd20a1288f560177600000a",
|
5
|
+
"created_at": "2012-06-08T14:20:02+00:00",
|
6
|
+
"updated_at": "2012-06-08T14:20:02+00:00",
|
7
|
+
"url": "http://example.com:4567/",
|
8
|
+
"notify": null,
|
9
|
+
"cost": 1,
|
10
|
+
"viewport": "1024x2048+0+0",
|
11
|
+
"images": [
|
12
|
+
"640x480"
|
13
|
+
],
|
14
|
+
"packages": [
|
15
|
+
"base",
|
16
|
+
"images",
|
17
|
+
"viewport"
|
18
|
+
],
|
19
|
+
"options": [
|
20
|
+
{
|
21
|
+
"package": "base"
|
22
|
+
},
|
23
|
+
{
|
24
|
+
"package": "images"
|
25
|
+
},
|
26
|
+
{
|
27
|
+
"package": "viewport"
|
28
|
+
},
|
29
|
+
{
|
30
|
+
"url": "http://example.com:4567/"
|
31
|
+
},
|
32
|
+
{
|
33
|
+
"timeout": "5000"
|
34
|
+
},
|
35
|
+
{
|
36
|
+
"delay": "0"
|
37
|
+
},
|
38
|
+
{
|
39
|
+
"viewport": "1024x2048"
|
40
|
+
},
|
41
|
+
{
|
42
|
+
"image": {
|
43
|
+
"xlarge": "640x480"
|
44
|
+
}
|
45
|
+
},
|
46
|
+
{
|
47
|
+
"image": {
|
48
|
+
"small": "80x60"
|
49
|
+
}
|
50
|
+
},
|
51
|
+
{
|
52
|
+
"image": {
|
53
|
+
"medium": "160x120"
|
54
|
+
}
|
55
|
+
},
|
56
|
+
{
|
57
|
+
"image": {
|
58
|
+
"large": "320x240"
|
59
|
+
}
|
60
|
+
},
|
61
|
+
{
|
62
|
+
"image": {
|
63
|
+
"excerpt": "400x150+0+0"
|
64
|
+
}
|
65
|
+
}
|
66
|
+
],
|
67
|
+
"job": {
|
68
|
+
"id": "4fd20a1288f5601776000012",
|
69
|
+
"state": "initialized",
|
70
|
+
"created_at": "2012-06-08T14:20:02+00:00",
|
71
|
+
"updated_at": "2012-06-08T14:20:08+00:00"
|
72
|
+
}
|
73
|
+
}
|
74
|
+
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capgun
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-05-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -218,9 +218,11 @@ files:
|
|
218
218
|
- spec/faraday/response_spec.rb
|
219
219
|
- spec/fixtures/account.json
|
220
220
|
- spec/fixtures/completed-order.json
|
221
|
+
- spec/fixtures/estimate-with-options.json
|
221
222
|
- spec/fixtures/estimate.json
|
222
223
|
- spec/fixtures/job.json
|
223
224
|
- spec/fixtures/notfound.json
|
225
|
+
- spec/fixtures/order-with-options.json
|
224
226
|
- spec/fixtures/order.json
|
225
227
|
- spec/fixtures/unauthorized.json
|
226
228
|
- spec/spec_helper.rb
|
@@ -238,7 +240,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
238
240
|
version: '0'
|
239
241
|
segments:
|
240
242
|
- 0
|
241
|
-
hash:
|
243
|
+
hash: 2142080540201523708
|
242
244
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
243
245
|
none: false
|
244
246
|
requirements:
|
@@ -247,7 +249,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
247
249
|
version: '0'
|
248
250
|
segments:
|
249
251
|
- 0
|
250
|
-
hash:
|
252
|
+
hash: 2142080540201523708
|
251
253
|
requirements: []
|
252
254
|
rubyforge_project: capgun
|
253
255
|
rubygems_version: 1.8.23
|
@@ -267,9 +269,11 @@ test_files:
|
|
267
269
|
- spec/faraday/response_spec.rb
|
268
270
|
- spec/fixtures/account.json
|
269
271
|
- spec/fixtures/completed-order.json
|
272
|
+
- spec/fixtures/estimate-with-options.json
|
270
273
|
- spec/fixtures/estimate.json
|
271
274
|
- spec/fixtures/job.json
|
272
275
|
- spec/fixtures/notfound.json
|
276
|
+
- spec/fixtures/order-with-options.json
|
273
277
|
- spec/fixtures/order.json
|
274
278
|
- spec/fixtures/unauthorized.json
|
275
279
|
- spec/spec_helper.rb
|