authentise 0.0.1 → 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.
@@ -0,0 +1,37 @@
1
+ require "authentise/api/print"
2
+
3
+ module Authentise
4
+ # Represents a streaming print iframe request
5
+ class Print
6
+ attr_accessor :model_url,
7
+ :receiver_email,
8
+ :print_value,
9
+ :print_value_currency,
10
+ :partner_job_id
11
+
12
+ def initialize(model_url: nil,
13
+ receiver_email: nil,
14
+ print_value: nil,
15
+ print_value_currency: nil,
16
+ partner_job_id: nil)
17
+ @model_url = model_url
18
+ @receiver_email = receiver_email
19
+ @print_value = print_value
20
+ @print_value_currency = print_value_currency
21
+ @partner_job_id = partner_job_id
22
+ end
23
+
24
+ def url
25
+ @url ||= begin
26
+ response = API::Print.create_token(
27
+ model_url: model_url,
28
+ receiver_email: receiver_email,
29
+ print_value: print_value,
30
+ print_value_currency: print_value_currency,
31
+ partner_job_id: partner_job_id,
32
+ )
33
+ response[:url]
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,25 @@
1
+ require "authentise/api/users"
2
+
3
+ module Authentise
4
+ # Represents a user's session to use the API with a session cookie
5
+ class Session
6
+ attr_reader :username,
7
+ :password,
8
+ :token
9
+
10
+ def initialize(username: nil,
11
+ password: nil)
12
+ @username = username
13
+ @password = password
14
+ end
15
+
16
+ def create
17
+ response = API::Users.create_session(
18
+ username: username,
19
+ password: password,
20
+ )
21
+ @token = response[:token]
22
+ true
23
+ end
24
+ end
25
+ end
@@ -1,6 +1,7 @@
1
1
  require "authentise/api"
2
2
 
3
3
  module Authentise
4
+ # DEPRECATED
4
5
  class Upload
5
6
  attr_reader :stl_file, :email, :cents, :currency
6
7
 
@@ -0,0 +1,35 @@
1
+ require "authentise/api"
2
+
3
+ module Authentise
4
+ # Represents a user that can use the API
5
+ class User
6
+ attr_reader :email,
7
+ :name,
8
+ :username,
9
+ :password,
10
+ :url,
11
+ :uuid
12
+
13
+ def initialize(email: nil,
14
+ name: nil,
15
+ username: nil,
16
+ password: nil)
17
+ @email = email
18
+ @name = name
19
+ @username = username
20
+ @password = password
21
+ end
22
+
23
+ def create
24
+ response = API::Users.create_user(
25
+ email: email,
26
+ name: name,
27
+ username: username,
28
+ password: password,
29
+ )
30
+ @url = response[:url]
31
+ @uuid = response[:uuid]
32
+ true
33
+ end
34
+ end
35
+ end
@@ -1,3 +1,3 @@
1
1
  module Authentise
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
data/lib/authentise.rb CHANGED
@@ -1 +1,5 @@
1
1
  require "authentise/upload"
2
+ require "authentise/model"
3
+ require "authentise/user"
4
+ require "authentise/session"
5
+ require "authentise/print"
@@ -0,0 +1,53 @@
1
+ require "spec_helper"
2
+ require "authentise/api/print"
3
+
4
+ describe Authentise::API::Print do
5
+
6
+ describe "create_token" do
7
+ it "returns a token_url" do
8
+ request_headers = {
9
+ "Accept" => "application/json",
10
+ "Content-Type" => "application/json",
11
+ }
12
+ request_body = {
13
+ api_key: "test",
14
+ model: "http://example.com/model/42",
15
+ receiver_email: "example@example.com",
16
+ print_value: 42,
17
+ print_value_currency: "EUR",
18
+ partner_job_id: 43,
19
+ }.to_json
20
+
21
+ response_headers = {
22
+ "X-Token-Location" => "http://example.com/token",
23
+ }
24
+
25
+ stub_request(:post, "https://print.authentise.com/token/")
26
+ .with(body: request_body, headers: request_headers)
27
+ .to_return(status: 201, headers: response_headers)
28
+
29
+ returned = Authentise::API::Print.create_token(
30
+ model_url: "http://example.com/model/42",
31
+ receiver_email: "example@example.com",
32
+ print_value: 42,
33
+ print_value_currency: "EUR",
34
+ partner_job_id: 43,
35
+ )
36
+
37
+ returned.must_equal(
38
+ url: "http://example.com/token",
39
+ )
40
+ end
41
+
42
+ it "raises errors" do
43
+ stub_request(:post, "https://print.authentise.com/token/")
44
+ .to_return(status: 400, body: "Some test error")
45
+
46
+ assert_raises Authentise::API::Error do
47
+ Authentise::API::Print.create_token(
48
+ model_url: "http://example.com/model/42",
49
+ )
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,108 @@
1
+ require "spec_helper"
2
+ require "authentise/api/users"
3
+
4
+ describe Authentise::API::Users do
5
+ before do
6
+ @response_error_body = {
7
+ message: "Some test error",
8
+ }.to_json
9
+ end
10
+
11
+ describe "create_user" do
12
+ before do
13
+ @request_body = {
14
+ email: "test@example.com",
15
+ name: "Test User",
16
+ username: "testuser",
17
+ password: "password",
18
+ }
19
+ @request_headers = {
20
+ "Accept" => "application/json",
21
+ "Content-Type" => "application/x-www-form-urlencoded",
22
+ }
23
+ @response_body = {
24
+ name: "Test User",
25
+ username: "testuser",
26
+ uri: "https://example.com/user/1111",
27
+ uuid: "1111",
28
+ }.to_json
29
+ end
30
+
31
+ it "returns url and uuid" do
32
+ stub_request(:post, "https://users.authentise.com/users/")
33
+ .with(body: @request_body, headers: @request_headers)
34
+ .to_return(status: 201, body: @response_body)
35
+
36
+ returned = Authentise::API::Users.create_user(
37
+ email: "test@example.com",
38
+ name: "Test User",
39
+ username: "testuser",
40
+ password: "password",
41
+ )
42
+ returned.must_equal(
43
+ url: "https://example.com/user/1111",
44
+ uuid: "1111",
45
+ )
46
+ end
47
+
48
+ it "raises errors" do
49
+ stub_request(:post, "https://users.authentise.com/users/")
50
+ .with(body: @request_body, headers: @request_headers)
51
+ .to_return(status: 400, body: @response_error_body)
52
+
53
+ assert_raises Authentise::API::Error do
54
+ Authentise::API::Users.create_user(
55
+ email: "test@example.com",
56
+ name: "Test User",
57
+ username: "testuser",
58
+ password: "password",
59
+ )
60
+ end
61
+ end
62
+ end
63
+
64
+ describe "create_session" do
65
+ before do
66
+ @request_body = {
67
+ username: "testuser",
68
+ password: "password",
69
+ }
70
+ @request_headers = {
71
+ "Accept" => "application/json",
72
+ "Content-Type" => "application/x-www-form-urlencoded",
73
+ }
74
+ @response_headers = {
75
+ "Set-Cookie" => "session=f4242aef; " \
76
+ "expires=Thu, 27-Apr-2017 08:49:20 GMT; " \
77
+ "path=/; " \
78
+ "domain=authentise.com",
79
+ }
80
+ end
81
+
82
+ it "returns a token" do
83
+ stub_request(:post, "https://users.authentise.com/sessions/")
84
+ .with(body: @request_body, headers: @request_headers)
85
+ .to_return(status: 201, body: "", headers: @response_headers)
86
+
87
+ returned = Authentise::API::Users.create_session(
88
+ username: "testuser",
89
+ password: "password",
90
+ )
91
+ returned.must_equal(
92
+ token: "f4242aef",
93
+ )
94
+ end
95
+
96
+ it "raises errors" do
97
+ stub_request(:post, "https://users.authentise.com/sessions/")
98
+ .to_return(status: 400, body: @response_error_body)
99
+
100
+ assert_raises Authentise::API::Error do
101
+ Authentise::API::Users.create_session(
102
+ username: "testuser",
103
+ password: "password",
104
+ )
105
+ end
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,330 @@
1
+ require "spec_helper"
2
+ require "authentise/api/warehouse"
3
+
4
+ describe Authentise::API::Warehouse do
5
+ before do
6
+ @response_error_body = {
7
+ message: "Some test error",
8
+ }.to_json
9
+ end
10
+
11
+ describe "post_model" do
12
+ before do
13
+ @request_body = {
14
+ "name" => "Test",
15
+ }
16
+ @request_headers = {
17
+ "Accept" => "application/json",
18
+ "Content-Type" => "application/json",
19
+ "Cookie" => "session=f45k",
20
+ }
21
+ @response_headers = {
22
+ "Location" => "http://example.com/1",
23
+ "X-Upload-Location" => "http://example.com/2",
24
+ }
25
+ end
26
+
27
+ it "returns locations" do
28
+ stub_request(:post, "https://models.authentise.com/model/")
29
+ .with(body: @request_body.to_json, headers: @request_headers)
30
+ .to_return(status: 201, headers: @response_headers)
31
+
32
+ returned = Authentise::API::Warehouse.create_model(
33
+ name: "Test",
34
+ session_token: "f45k",
35
+ )
36
+ returned.must_equal(
37
+ model_url: "http://example.com/1",
38
+ upload_url: "http://example.com/2",
39
+ )
40
+ end
41
+
42
+ it "raises errors" do
43
+ stub_request(:post, "https://models.authentise.com/model/")
44
+ .with(body: @request_body.to_json, headers: @request_headers)
45
+ .to_return(status: 400, body: @response_error_body)
46
+
47
+ assert_raises Authentise::API::Error do
48
+ Authentise::API::Warehouse.create_model(
49
+ name: "Test",
50
+ session_token: "f45k",
51
+ )
52
+ end
53
+ end
54
+ end
55
+
56
+ describe "put_file" do
57
+ before do
58
+ @request_body = "contents of example.stl\n"
59
+ end
60
+
61
+ it "returns true" do
62
+ request_headers = {
63
+ 'Content-Type' => 'application/octet-stream',
64
+ }
65
+ stub_request(:put, "https://example.com/")
66
+ .with(body: @request_body, headers: request_headers)
67
+ .to_return(status: 200)
68
+
69
+ response = Authentise::API::Warehouse.put_file(
70
+ url: "https://example.com/",
71
+ path: "spec/fixtures/example.stl",
72
+ )
73
+
74
+ response.must_equal(true)
75
+ end
76
+
77
+ it "raises errors" do
78
+ stub_request(:put, "https://example.com/")
79
+ .to_return(status: 400, body: @response_error_body)
80
+
81
+ assert_raises Authentise::API::Error do
82
+ Authentise::API::Warehouse.put_file(
83
+ url: "https://example.com/",
84
+ path: "spec/fixtures/example.stl",
85
+ )
86
+ end
87
+ end
88
+ end
89
+
90
+ describe "get_model" do
91
+ before do
92
+ @url = "https://models.authentise.com/model/424242/"
93
+ @request_headers = {
94
+ "Accept" => "application/json",
95
+ "Content-Type" => "application/json",
96
+ "Cookie" => "session=f56",
97
+ }
98
+ @response_body = {
99
+ name: "Test",
100
+ status: "processing",
101
+ snapshot: "http://example.com/snapshot",
102
+ content: "http://example.com/content",
103
+ "analyses.manifold" => true,
104
+ created: "2015-05-29 16:12:12.991340",
105
+ updated: "2015-05-29 16:12:13.991340",
106
+ parents: ["http://example.com/model/1", "http://example.com/model/2"],
107
+ children: ["http://example.com/model/1"],
108
+ }.to_json
109
+ end
110
+
111
+ it "returns a model" do
112
+ stub_request(:get, @url)
113
+ .with(headers: @request_headers)
114
+ .to_return(body: @response_body, status: 200)
115
+
116
+ response = Authentise::API::Warehouse.get_model(url: @url,
117
+ session_token: "f56")
118
+ response.must_equal(
119
+ url: @url,
120
+ uuid: "424242",
121
+ name: "Test",
122
+ status: "processing",
123
+ snapshot_url: "http://example.com/snapshot",
124
+ content_url: "http://example.com/content",
125
+ manifold: true,
126
+ created_at: Time.local(2015, 5, 29, 16, 12, 12, 991_340),
127
+ updated_at: Time.local(2015, 5, 29, 16, 12, 13, 991_340),
128
+ parents_urls: ["http://example.com/model/1",
129
+ "http://example.com/model/2"],
130
+ children_urls: ["http://example.com/model/1"],
131
+ )
132
+ end
133
+
134
+ it "accepts a uuid instead of a url" do
135
+ stub_request(:get, @url)
136
+ .with(headers: @request_headers)
137
+ .to_return(body: @response_body, status: 200)
138
+
139
+ response = Authentise::API::Warehouse.get_model(uuid: "424242",
140
+ session_token: "f56")
141
+ response.must_equal(
142
+ url: @url,
143
+ uuid: "424242",
144
+ name: "Test",
145
+ status: "processing",
146
+ snapshot_url: "http://example.com/snapshot",
147
+ content_url: "http://example.com/content",
148
+ manifold: true,
149
+ created_at: Time.local(2015, 5, 29, 16, 12, 12, 991_340),
150
+ updated_at: Time.local(2015, 5, 29, 16, 12, 13, 991_340),
151
+ parents_urls: ["http://example.com/model/1",
152
+ "http://example.com/model/2"],
153
+ children_urls: ["http://example.com/model/1"],
154
+ )
155
+ end
156
+
157
+ it "raises errors" do
158
+ stub_request(:get, @url)
159
+ .to_return(body: "", status: 404)
160
+
161
+ assert_raises Authentise::API::NotFoundError do
162
+ Authentise::API::Warehouse.get_model(url: @url,
163
+ session_token: "f56")
164
+ end
165
+ end
166
+ end
167
+
168
+ # describe "get_models" do
169
+ # before do
170
+ # @request_headers = {
171
+ # "Accept" => "application/json",
172
+ # "Content-Type" => "application/json",
173
+ # "Cookie" => "session=e56",
174
+ # }
175
+ # @response_body = [{
176
+ # name: "Test",
177
+ # status: "processing",
178
+ # snapshot: "http://example.com/snapshot",
179
+ # content: "http://example.com/content",
180
+ # "analyses.manifold" => true,
181
+ # created: "2015-05-29 16:12:12.991340",
182
+ # updated: "2015-05-29 16:12:13.991340",
183
+ # parents: ["http://example.com/model/1", "http://example.com/model/2"],
184
+ # children: ["http://example.com/model/1"],
185
+ # }].to_json
186
+ # end
187
+
188
+ # it "returns models" do
189
+ # stub_request(:get, "https://models.authentise.com/model/").
190
+ # with(headers: @request_headers)
191
+ # .to_return(body: @response_body, status: 200)
192
+
193
+ # response = Authentise::API::Warehouse.get_models(session_token: "e56")
194
+ # response.must_equal [
195
+ # {
196
+ # name: "Test",
197
+ # status: "processing",
198
+ # snapshot_url: "http://example.com/snapshot",
199
+ # content_url: "http://example.com/content",
200
+ # manifold: true,
201
+ # created_at: Time.local(2015, 5, 29, 16, 12, 12, 991340),
202
+ # updated_at: Time.local(2015, 5, 29, 16, 12, 13, 991340),
203
+ # parents_urls: ["http://example.com/model/1",
204
+ # "http://example.com/model/2"],
205
+ # children_urls: ["http://example.com/model/1"]
206
+ # }
207
+ # ]
208
+ # end
209
+
210
+ # it "adds query parameters" do
211
+ # skip
212
+ # end
213
+
214
+ # it "raises errors" do
215
+ # skip
216
+ # end
217
+ # end
218
+
219
+ describe "create_snapshot" do
220
+ before do
221
+ @request_body = {
222
+ samples: 1,
223
+ layer: 10,
224
+ color: "#ff7f00",
225
+ height: 480,
226
+ width: 640,
227
+ x: 0,
228
+ y: 1,
229
+ z: 2,
230
+ u: 3,
231
+ v: 4,
232
+ w: 5,
233
+ callback: { url: "http://my.example.com/processing/done",
234
+ method: "POST" },
235
+ }
236
+ @request_headers = {
237
+ "Accept" => "application/json",
238
+ "Content-Type" => "application/json",
239
+ "Cookie" => "session=f00",
240
+ }
241
+ end
242
+
243
+ it "returns snapshot data" do
244
+ response_headers = {
245
+ "Location" => "http://example.com/model/4242/snapshot/1212/",
246
+ }
247
+
248
+ stub_request(:post, "https://models.authentise.com/model/4242/snapshot/")
249
+ .with(body: @request_body, headers: @request_headers)
250
+ .to_return(status: 201, headers: response_headers)
251
+
252
+ response = Authentise::API::Warehouse.create_snapshot(
253
+ session_token: "f00",
254
+ model_uuid: "4242",
255
+ samples: 1,
256
+ layer: 10,
257
+ color: "#ff7f00",
258
+ height: 480,
259
+ width: 640,
260
+ x: 0,
261
+ y: 1,
262
+ z: 2,
263
+ u: 3,
264
+ v: 4,
265
+ w: 5,
266
+ callback: { url: "http://my.example.com/processing/done",
267
+ method: "POST" },
268
+ )
269
+
270
+ response.must_equal(
271
+ url: "http://example.com/model/4242/snapshot/1212/",
272
+ )
273
+ end
274
+ end
275
+
276
+ describe "get_snapshot" do
277
+ before do
278
+ @request_headers = {
279
+ "Accept" => "application/json",
280
+ "Content-Type" => "application/json",
281
+ "Cookie" => "session=z90",
282
+ }
283
+ @response_body = {
284
+ status: "snapshot_rendering",
285
+ samples: 1,
286
+ layer: 1,
287
+ color: "#ff7f00",
288
+ height: 480,
289
+ width: 640,
290
+ x: 0,
291
+ y: 1,
292
+ z: 2,
293
+ u: 3,
294
+ v: 4,
295
+ w: 5,
296
+ slice_height: nil,
297
+ created: "2015-05-13 22:18:22.658536",
298
+ content: "https://example.com/content_url",
299
+ }.to_json
300
+ end
301
+
302
+ it "returns snapshot data" do
303
+ stub_request(:get, "https://models.authentise.com/model/42/snapshot/43/")
304
+ .with(headers: @request_headers)
305
+ .to_return(status: 200, body: @response_body)
306
+
307
+ response = Authentise::API::Warehouse.get_snapshot(
308
+ url: "https://models.authentise.com/model/42/snapshot/43/",
309
+ session_token: "z90",
310
+ )
311
+ response.must_equal(
312
+ status: "snapshot_rendering",
313
+ samples: 1,
314
+ layer: 1,
315
+ color: "#ff7f00",
316
+ height: 480,
317
+ width: 640,
318
+ x: 0,
319
+ y: 1,
320
+ z: 2,
321
+ u: 3,
322
+ v: 4,
323
+ w: 5,
324
+ slice_height: nil,
325
+ created_at: Time.local(2015, 05, 13, 22, 18, 22, 658_536),
326
+ content_url: "https://example.com/content_url",
327
+ )
328
+ end
329
+ end
330
+ end
data/spec/api_spec.rb CHANGED
@@ -3,7 +3,9 @@ require "spec_helper"
3
3
  describe Authentise::API do
4
4
  describe ".create_token" do
5
5
  it "returns a token from the API" do
6
- stub_request(:get, "https://widget.sendshapes.com:3443/api3/api_create_partner_token?api_key=test")
6
+ api_url = "https://widget.sendshapes.com:3443/api3/" \
7
+ "api_create_partner_token?api_key=test"
8
+ stub_request(:get, api_url)
7
9
  .to_return(status: 200, body: '{"data":{"token":"meh"}}')
8
10
 
9
11
  Authentise::API.create_token.must_equal "meh"
@@ -18,12 +20,8 @@ describe Authentise::API do
18
20
  "print_value_currency" => "EUR",
19
21
  "receiver_email" => "example@example.com",
20
22
  "stl_file" => "",
21
- "token"=>"meh"}
22
- request_headers = { "Accept" => "application/json",
23
- "Accept-Encoding" => "gzip, deflate",
24
- "Content-Length" => "110",
25
- "Content-Type" => "application/x-www-form-urlencoded",
26
- "User-Agent" => "Ruby"}
23
+ "token" => "meh" }
24
+ request_headers = { "Accept" => "application/json" }
27
25
 
28
26
  response_body = '{"data":{"ssl_token_link":"https://bah"}}'
29
27
 
@@ -57,13 +55,9 @@ describe Authentise::API do
57
55
 
58
56
  describe ".get_status" do
59
57
  it "returns a status hash" do
60
- api_url = "https://widget.sendshapes.com:3443/api3/api_get_partner_print_status?api_key=test&token=meh"
61
- request_body = { "api_key" => "test",
62
- "print_value" => "100",
63
- "print_value_currency" => "EUR",
64
- "receiver_email" => "example@example.com",
65
- "stl_file" => "",
66
- "token"=>"meh"}
58
+ api_url = "https://widget.sendshapes.com:3443/api3/" \
59
+ "api_get_partner_print_status?api_key=test&token=meh"
60
+
67
61
  response_body = {
68
62
  status: { code: "ok" },
69
63
  data: {
@@ -71,7 +65,7 @@ describe Authentise::API do
71
65
  printing_percentage: 20,
72
66
  minutes_left: nil,
73
67
  message: nil,
74
- }
68
+ },
75
69
  }
76
70
 
77
71
  stub_request(:get, api_url)
@@ -82,7 +76,7 @@ describe Authentise::API do
82
76
  printing_job_status_name: "warming_up",
83
77
  printing_percentage: 20,
84
78
  minutes_left: nil,
85
- message: nil
79
+ message: nil,
86
80
  )
87
81
  end
88
82
  end
@@ -0,0 +1 @@
1
+ contents of example.stl