live_paper 0.0.10 → 0.0.11
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 +4 -4
- data/lib/live_paper.rb +11 -3
- data/lib/live_paper/base_object.rb +29 -2
- data/lib/live_paper/http_client.rb +9 -6
- data/lib/live_paper/version.rb +1 -1
- data/spec/live_paper/base_object_spec.rb +60 -11
- data/spec/live_paper/http_client_spec.rb +23 -9
- data/spec/spec_helpers/lpp_client.rb +1 -1
- metadata +15 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 150824532bc144af1c7efd5005578e51d843a966
|
4
|
+
data.tar.gz: 68b48ce5fdc74376878078de4c9c16c3fc221023
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 65f7056b9a7d6d9490051fb4e12d39808e6806948783224b05fec4888a7c439933545e1630cd9588a2edfb4421d94563da8bd6c7f1c3296ced411c383fe6a947
|
7
|
+
data.tar.gz: 3f53715224edf9e668d23d3988f7678e45fcd22a982a052e1557399be7c8ab4d2a505ba7baaa653e0112fab52d5bf60308b05463ff166c401a980fe942f1dd74
|
data/lib/live_paper.rb
CHANGED
@@ -23,6 +23,11 @@ module LivePaper
|
|
23
23
|
def initialize(auth)
|
24
24
|
#todo: tdd, verify hash
|
25
25
|
$lpp_basic_auth = Base64.strict_encode64("#{auth[:id]}:#{auth[:secret]}")
|
26
|
+
@remote_resources={}
|
27
|
+
end
|
28
|
+
|
29
|
+
def resources
|
30
|
+
@remote_resources
|
26
31
|
end
|
27
32
|
|
28
33
|
def smart_link(dest, image=nil)
|
@@ -44,14 +49,16 @@ module LivePaper
|
|
44
49
|
def shorten(dest)
|
45
50
|
t=ShortTrigger.create(name: 'short trigger')
|
46
51
|
p=Payoff.create(name: 'name', type: Payoff::TYPE[:WEB], url: dest)
|
47
|
-
Link.create(payoff_id: p.id, trigger_id: t.id, name: "link")
|
52
|
+
l=Link.create(payoff_id: p.id, trigger_id: t.id, name: "link")
|
53
|
+
@remote_resources={link: l, payoff: p, trigger: t}
|
48
54
|
t.short_url
|
49
55
|
end
|
50
56
|
|
51
57
|
def qr_bytes(dest)
|
52
58
|
t=QrTrigger.create(name: 'QR code trigger')
|
53
59
|
p=Payoff.create(name: 'name', type: Payoff::TYPE[:WEB], url: dest)
|
54
|
-
Link.create(payoff_id: p.id, trigger_id: t.id, name: "link")
|
60
|
+
l=Link.create(payoff_id: p.id, trigger_id: t.id, name: "link")
|
61
|
+
@remote_resources={link: l, payoff: p, trigger: t}
|
55
62
|
t.download_qrcode
|
56
63
|
end
|
57
64
|
|
@@ -60,7 +67,8 @@ module LivePaper
|
|
60
67
|
|
61
68
|
t=WmTrigger.create(name: 'watermark', watermark: {strength: 10, resolution: 75, imageURL: image})
|
62
69
|
p=Payoff.create(name: 'name', type: Payoff::TYPE[:WEB], url: dest)
|
63
|
-
Link.create(payoff_id: p.id, trigger_id: t.id, name: "link")
|
70
|
+
l=Link.create(payoff_id: p.id, trigger_id: t.id, name: "link")
|
71
|
+
@remote_resources={link: l, payoff: p, trigger: t}
|
64
72
|
t.download_watermark
|
65
73
|
rescue Exception => e
|
66
74
|
puts "Exception!"
|
@@ -24,7 +24,7 @@ module LivePaper
|
|
24
24
|
def save
|
25
25
|
validate_attributes!
|
26
26
|
BaseObject.request_handling_auth(self.class.api_url, 'POST') do |request|
|
27
|
-
response = BaseObject.send_request(request, 'application/json', create_body.to_json)
|
27
|
+
response = BaseObject.send_request(request, content_type: 'application/json', body: create_body.to_json)
|
28
28
|
parse(response.body)
|
29
29
|
end unless present? @id
|
30
30
|
self
|
@@ -32,11 +32,38 @@ module LivePaper
|
|
32
32
|
|
33
33
|
def self.get(id)
|
34
34
|
request_handling_auth("#{api_url}/#{id}", 'GET') do |request|
|
35
|
-
response = send_request(request, 'application/json')
|
35
|
+
response = send_request(request, content_type: 'application/json')
|
36
36
|
parse response.body
|
37
37
|
end rescue nil
|
38
38
|
end
|
39
39
|
|
40
|
+
def delete
|
41
|
+
response_code = nil
|
42
|
+
if self.id
|
43
|
+
BaseObject.request_handling_auth("#{self.class.api_url}/#{id}", 'DELETE') do |request|
|
44
|
+
response = BaseObject.send_request(request, content_type: 'application/json', allow_codes: [200, 409])
|
45
|
+
response_code = case response.code.to_i
|
46
|
+
when 200
|
47
|
+
'OK'
|
48
|
+
when 409
|
49
|
+
@errors=response.body
|
50
|
+
'Conflict'
|
51
|
+
end
|
52
|
+
end
|
53
|
+
else
|
54
|
+
response_code = "Object Invalid"
|
55
|
+
end
|
56
|
+
response_code
|
57
|
+
end
|
58
|
+
|
59
|
+
def errors
|
60
|
+
begin
|
61
|
+
JSON.parse(@errors)
|
62
|
+
rescue
|
63
|
+
@errors
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
40
67
|
def self.parse(data)
|
41
68
|
self.new().parse(data)
|
42
69
|
end
|
@@ -9,18 +9,19 @@ module LivePaper
|
|
9
9
|
LP_API_HOST="https://www.livepaperapi.com"
|
10
10
|
AUTH_URL = "#{LP_API_HOST}/auth/token"
|
11
11
|
|
12
|
-
def send_request(request,
|
13
|
-
request['Content-type'] = content_type if content_type
|
14
|
-
request.body = body if body
|
12
|
+
def send_request(request, options={})
|
13
|
+
request['Content-type'] = options[:content_type] if options[:content_type]
|
14
|
+
request.body = options[:body] if options[:body]
|
15
|
+
options[:allow_codes] ||= [200,201]
|
15
16
|
response = @http.request(request)
|
16
|
-
check_response(response)
|
17
|
+
check_response(response, options[:allow_codes])
|
17
18
|
response
|
18
19
|
end
|
19
20
|
|
20
|
-
def check_response(response)
|
21
|
+
def check_response(response, allow_codes)
|
21
22
|
status = response.code.to_i
|
22
23
|
raise NotAuthenticatedError.new("Unauthorized") if status == 401
|
23
|
-
unless
|
24
|
+
unless allow_codes.include?(status)
|
24
25
|
raise "Request failed with code #{status}"
|
25
26
|
end
|
26
27
|
end
|
@@ -62,6 +63,8 @@ module LivePaper
|
|
62
63
|
Net::HTTP::Post.new(uri.request_uri)
|
63
64
|
when 'GET'
|
64
65
|
Net::HTTP::Get.new(uri.request_uri)
|
66
|
+
when 'DELETE'
|
67
|
+
Net::HTTP::Delete.new(uri.request_uri)
|
65
68
|
else
|
66
69
|
raise "Method '#{method}' not supported."
|
67
70
|
end
|
data/lib/live_paper/version.rb
CHANGED
@@ -9,7 +9,7 @@ end
|
|
9
9
|
|
10
10
|
describe LivePaper::BaseObject do
|
11
11
|
before do
|
12
|
-
@api_url = "#{LivePaper::LP_API_HOST}/objects"
|
12
|
+
@api_url = "#{LivePaper::LP_API_HOST}/v99/objects"
|
13
13
|
stub_request(:post, /.*livepaperapi.com\/auth\/token.*/).to_return(:body => lpp_auth_response_json, :status => 200)
|
14
14
|
stub_request(:post, @api_url).to_return(:body => lpp_richpayoff_response_json, :status => 200)
|
15
15
|
|
@@ -127,19 +127,68 @@ describe LivePaper::BaseObject do
|
|
127
127
|
end
|
128
128
|
end
|
129
129
|
|
130
|
+
describe '.delete' do
|
131
|
+
before do
|
132
|
+
stub_unimplemented_methods
|
133
|
+
@data = {
|
134
|
+
name: 'name',
|
135
|
+
id: 'obj_id',
|
136
|
+
date_created: 'date_created',
|
137
|
+
date_modified: 'date_modified',
|
138
|
+
link: [
|
139
|
+
{ :rel => "self", :href => "/api/v1/objects/obj_id" },
|
140
|
+
{ :rel => "analytics", :href => "/analytics/v1/objects/obj_id" }
|
141
|
+
]
|
142
|
+
}
|
143
|
+
@obj = LivePaper::BaseObject.create @data
|
144
|
+
@self_link = "#{@api_url}/#{@obj.id}"
|
145
|
+
end
|
146
|
+
|
147
|
+
it 'should not DELETE if the object does not have an id.' do
|
148
|
+
@obj.id = nil
|
149
|
+
ret_val = @obj.delete
|
150
|
+
assert_not_requested :delete, @self_link
|
151
|
+
expect(ret_val).to eq 'Object Invalid'
|
152
|
+
end
|
153
|
+
|
154
|
+
context 'successful delete' do
|
155
|
+
before do
|
156
|
+
stub_request(:delete, @self_link).to_return(:status => 200, :body => "")
|
157
|
+
end
|
158
|
+
it 'should DELETE when there is an ID' do
|
159
|
+
result=@obj.delete
|
160
|
+
assert_requested :delete, "#{@api_url}/#{@obj.id}"
|
161
|
+
expect(result).to eq 'OK'
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
context 'when link points to object' do
|
166
|
+
before do
|
167
|
+
@bodee = lpp_delete_error_response
|
168
|
+
stub_request(:delete, @self_link).to_return(:status => 409, :body => @bodee)
|
169
|
+
end
|
170
|
+
it 'should fail' do
|
171
|
+
result=@obj.delete
|
172
|
+
assert_requested :delete, "#{@api_url}/#{@obj.id}"
|
173
|
+
expect(result).to eq 'Conflict'
|
174
|
+
expect(@obj.errors).to eq JSON.parse @bodee
|
175
|
+
end
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
130
179
|
describe '#rel' do
|
131
180
|
before do
|
132
181
|
stub_unimplemented_methods
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
182
|
+
@data = {
|
183
|
+
name: 'name',
|
184
|
+
date_created: 'date_created',
|
185
|
+
date_modified: 'date_modified',
|
186
|
+
link: [
|
187
|
+
{ :rel => "self", :href => "/api/v1/payoffs/payoff_id" },
|
188
|
+
{ :rel => "analytics", :href => "/analytics/v1/payoffs/payoff_id" }
|
189
|
+
]
|
190
|
+
}
|
191
|
+
@obj = LivePaper::BaseObject.create @data
|
143
192
|
end
|
144
193
|
|
145
194
|
it 'should return href for rel link' do
|
@@ -26,27 +26,35 @@ describe LivePaper::HttpClient do
|
|
26
26
|
it 'should add the content type to the request' do
|
27
27
|
expect(@request).to receive(:[]=).with('Content-type', 'image/jpg')
|
28
28
|
allow(@request).to receive(:body=)
|
29
|
-
@http_client.send_request @request, 'image/jpg', 'body'
|
29
|
+
@http_client.send_request @request, content_type: 'image/jpg', body: 'body'
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'should add the body to the request' do
|
33
33
|
expect(@request).to receive(:body=).with('body')
|
34
34
|
allow(@request).to receive(:[]=)
|
35
|
-
@http_client.send(:send_request, @request, 'image/jpg', 'body')
|
35
|
+
@http_client.send(:send_request, @request, content_type: 'image/jpg', body: 'body')
|
36
36
|
end
|
37
37
|
|
38
38
|
it 'should call the request method from the http instance' do
|
39
39
|
allow(@request).to receive(:body=)
|
40
40
|
allow(@request).to receive(:[]=)
|
41
41
|
expect(@http).to receive(:request)
|
42
|
-
@http_client.send(:send_request, @request, 'image/jpg', 'body')
|
42
|
+
@http_client.send(:send_request, @request, content_type: 'image/jpg', body: 'body')
|
43
43
|
end
|
44
44
|
|
45
|
-
it 'should check the response' do
|
45
|
+
it 'should check the response with default allow_codes' do
|
46
46
|
allow(@request).to receive(:body=)
|
47
47
|
allow(@request).to receive(:[]=)
|
48
|
-
expect(@http_client).to receive(:check_response)
|
49
|
-
@http_client.send(:send_request, @request, 'image/jpg', 'body')
|
48
|
+
expect(@http_client).to receive(:check_response).with(anything, [200, 201])
|
49
|
+
@http_client.send(:send_request, @request, content_type: 'image/jpg', body: 'body')
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'should call check_response with the provided allow_codes' do
|
53
|
+
allow(@request).to receive(:body=)
|
54
|
+
allow(@request).to receive(:[]=)
|
55
|
+
allow_codes = [200, 201, 409]
|
56
|
+
expect(@http_client).to receive(:check_response).with(anything, allow_codes)
|
57
|
+
@http_client.send(:send_request, @request, content_type: 'image/jpg', body: 'body', allow_codes: allow_codes)
|
50
58
|
end
|
51
59
|
end
|
52
60
|
|
@@ -55,21 +63,22 @@ describe LivePaper::HttpClient do
|
|
55
63
|
before(:each) do
|
56
64
|
@response = double('A mock for a response')
|
57
65
|
allow(@response).to receive(:body)
|
66
|
+
@allow=[200, 201]
|
58
67
|
end
|
59
68
|
|
60
69
|
it 'should raise NotAuthenticatedError if the response code is 401' do
|
61
70
|
allow(@response).to receive(:code).and_return('401')
|
62
|
-
expect { @http_client.send(:check_response, @response) }.to raise_error NotAuthenticatedError
|
71
|
+
expect { @http_client.send(:check_response, @response, @allow) }.to raise_error NotAuthenticatedError
|
63
72
|
end
|
64
73
|
|
65
74
|
it 'should not raise any exception if the response code is 200..201' do
|
66
75
|
allow(@response).to receive(:code).and_return('201')
|
67
|
-
expect { @http_client.send(:check_response, @response) }.to_not raise_error
|
76
|
+
expect { @http_client.send(:check_response, @response, @allow) }.to_not raise_error
|
68
77
|
end
|
69
78
|
|
70
79
|
it 'should raise exception if the response code is other than 200..201|401' do
|
71
80
|
allow(@response).to receive(:code).and_return('500')
|
72
|
-
expect { @http_client.send(:check_response, @response) }.to raise_error
|
81
|
+
expect { @http_client.send(:check_response, @response, @allow) }.to raise_error
|
73
82
|
end
|
74
83
|
end
|
75
84
|
|
@@ -161,6 +170,11 @@ describe LivePaper::HttpClient do
|
|
161
170
|
@http_client.send(:http_request, @host, 'GET')
|
162
171
|
end
|
163
172
|
|
173
|
+
it 'should create and return a Net::HTTP::Delete instance if DELETE method is chosen.' do
|
174
|
+
expect(Net::HTTP::Delete).to receive(:new).and_call_original
|
175
|
+
@http_client.send(:http_request, @host, 'DELETE')
|
176
|
+
end
|
177
|
+
|
164
178
|
it 'should use ssl' do
|
165
179
|
allow(Net::HTTP).to receive(:new).and_return(@http)
|
166
180
|
expect(@http).to receive(:use_ssl=)
|
@@ -108,7 +108,7 @@ def lpp_delete_error_response
|
|
108
108
|
{ "associatedLinks": "1",
|
109
109
|
"link": [{
|
110
110
|
"rel": "associatedLinks",
|
111
|
-
"href": "https://dev.livepaperapi.com/api/v1/links?trigger=
|
111
|
+
"href": "https://dev.livepaperapi.com/api/v1/links?trigger=my_trigger_id"
|
112
112
|
}],
|
113
113
|
"error": {
|
114
114
|
"title": "409 Conflict",
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: live_paper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Whitmarsh
|
@@ -9,76 +9,76 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-11-
|
12
|
+
date: 2014-11-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rest-client
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- -
|
18
|
+
- - '>='
|
19
19
|
- !ruby/object:Gem::Version
|
20
20
|
version: '0'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- -
|
25
|
+
- - '>='
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: '0'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: bundler
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- -
|
32
|
+
- - ~>
|
33
33
|
- !ruby/object:Gem::Version
|
34
34
|
version: '1.6'
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- -
|
39
|
+
- - ~>
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '1.6'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: rake
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- -
|
46
|
+
- - '>='
|
47
47
|
- !ruby/object:Gem::Version
|
48
48
|
version: '0'
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
|
-
- -
|
53
|
+
- - '>='
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '0'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: rspec
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
|
-
- -
|
60
|
+
- - '>='
|
61
61
|
- !ruby/object:Gem::Version
|
62
62
|
version: '0'
|
63
63
|
type: :development
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
|
-
- -
|
67
|
+
- - '>='
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '0'
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: webmock
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
|
-
- -
|
74
|
+
- - '>='
|
75
75
|
- !ruby/object:Gem::Version
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
|
-
- -
|
81
|
+
- - '>='
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '0'
|
84
84
|
description: Ruby interface to use the Live Paper service by HP for creating watermarked
|
@@ -88,7 +88,7 @@ executables: []
|
|
88
88
|
extensions: []
|
89
89
|
extra_rdoc_files: []
|
90
90
|
files:
|
91
|
-
-
|
91
|
+
- .gitignore
|
92
92
|
- Gemfile
|
93
93
|
- LICENSE.txt
|
94
94
|
- README.md
|
@@ -122,12 +122,12 @@ require_paths:
|
|
122
122
|
- lib
|
123
123
|
required_ruby_version: !ruby/object:Gem::Requirement
|
124
124
|
requirements:
|
125
|
-
- -
|
125
|
+
- - '>='
|
126
126
|
- !ruby/object:Gem::Version
|
127
127
|
version: '0'
|
128
128
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
129
129
|
requirements:
|
130
|
-
- -
|
130
|
+
- - '>='
|
131
131
|
- !ruby/object:Gem::Version
|
132
132
|
version: '0'
|
133
133
|
requirements: []
|