authentise 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +65 -25
- data/lib/authentise/api/print.rb +38 -0
- data/lib/authentise/api/users.rb +64 -0
- data/lib/authentise/api/warehouse.rb +258 -0
- data/lib/authentise/api.rb +23 -13
- data/lib/authentise/configuration.rb +10 -0
- data/lib/authentise/model.rb +88 -0
- data/lib/authentise/print.rb +37 -0
- data/lib/authentise/session.rb +25 -0
- data/lib/authentise/upload.rb +1 -0
- data/lib/authentise/user.rb +35 -0
- data/lib/authentise/version.rb +1 -1
- data/lib/authentise.rb +4 -0
- data/spec/api/print_spec.rb +53 -0
- data/spec/api/users_spec.rb +108 -0
- data/spec/api/warehouse_spec.rb +330 -0
- data/spec/api_spec.rb +10 -16
- data/spec/fixtures/example.stl +1 -0
- data/spec/model_spec.rb +135 -0
- data/spec/print_spec.rb +46 -0
- data/spec/session_spec.rb +30 -0
- data/spec/upload_spec.rb +26 -22
- data/spec/user_spec.rb +44 -0
- metadata +25 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8f1e56dbfbd3c62ea57126745ef129b508795a75
|
4
|
+
data.tar.gz: a67c2a69f9ee8dad71424f044af0946a720eb839
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 499c0b034752c6177b9ca3ab58fdc7f65408ab543171dc26f4df3866ffe0fb170713280b2d5fda6a0018d1d440bfca48bfbcb29ba73853342e938b53e2118029
|
7
|
+
data.tar.gz: 3c3fe5cf2b1dc67db778e6e076e81d775107d96cb946adceebb582825901b5c258bc6f0bf4798aa7a59a8e6c69cd5598c785aa1ebf77267f8e8bfb34e81d1f9f
|
data/README.md
CHANGED
@@ -1,48 +1,83 @@
|
|
1
1
|
Ruby gem to access Authentise API v3
|
2
2
|
====================================
|
3
3
|
|
4
|
-
See http://docs.
|
4
|
+
See http://docs.authentise.com/model/reference.html
|
5
5
|
|
6
|
-
|
6
|
+
Install
|
7
|
+
-------
|
8
|
+
|
9
|
+
Add the following line to your Gemfile:
|
10
|
+
|
11
|
+
```rb
|
12
|
+
gem "authentise"
|
13
|
+
```
|
14
|
+
|
15
|
+
|
16
|
+
Configuration
|
7
17
|
-------------
|
8
18
|
|
19
|
+
Set your secret partner key:
|
20
|
+
|
9
21
|
```rb
|
10
22
|
Authentise.configure do |c|
|
11
23
|
c.secret_partner_key = "ZSBzaG9y-dCB2ZWhl-bWVuY2Ug-b2YgYW55-IGNhcm5h-bCB=="
|
12
|
-
c.use_ssl = false
|
13
24
|
end
|
25
|
+
```
|
14
26
|
|
15
|
-
|
16
|
-
|
17
|
-
email: "example@example.com",
|
18
|
-
cents: 2_00,
|
19
|
-
currency: "EUR"
|
20
|
-
)
|
27
|
+
Usage
|
28
|
+
------
|
21
29
|
|
22
|
-
|
23
|
-
# => "33b41d6e80d4918cfff768185d1d31a6"
|
30
|
+
### Authentication
|
24
31
|
|
25
|
-
|
26
|
-
#
|
32
|
+
```rb
|
33
|
+
# Create a user
|
34
|
+
user = Authentise::User.new(
|
35
|
+
email: 'you@example.com',
|
36
|
+
name: 'You',
|
37
|
+
username: 'you',
|
38
|
+
password: 'p4ssw0rd;99'
|
39
|
+
)
|
40
|
+
user.create
|
27
41
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
# }
|
42
|
+
# Create a session
|
43
|
+
session = Authentise::Session.new(
|
44
|
+
username: 'you',
|
45
|
+
password: 'p4ssw0rd;99'
|
46
|
+
)
|
47
|
+
session.create
|
35
48
|
```
|
36
49
|
|
37
|
-
|
38
|
-
-------
|
39
|
-
|
40
|
-
Add the following line to your Gemfile:
|
50
|
+
### Model Warehouse
|
41
51
|
|
42
52
|
```rb
|
43
|
-
|
53
|
+
# Create a model
|
54
|
+
model = Authentise::Model.new(name: "My model")
|
55
|
+
model.create(session_token: session.token)
|
56
|
+
model.send_file(path: 'example.stl')
|
57
|
+
model.url # => "https://models.authentise.com/model/42424…"
|
58
|
+
|
59
|
+
# Get a model
|
60
|
+
model = Authentise::Model.find_by_url(
|
61
|
+
url: "https://models.authentise.com/model/42424…",
|
62
|
+
session_token: session.token
|
63
|
+
)
|
64
|
+
model.name # => "My model"
|
65
|
+
model.status # => "processing"
|
66
|
+
model.content_url # => ""https://prod-hoth-models.s3.amazonaws.com:443/07c74a…"
|
44
67
|
```
|
45
68
|
|
69
|
+
### Streaming iframe
|
70
|
+
|
71
|
+
```rb
|
72
|
+
# Create a print
|
73
|
+
print = Authentise::Print.new(
|
74
|
+
model_url: "https://models.authentise.com/model/42424…"
|
75
|
+
)
|
76
|
+
|
77
|
+
# Show an iframe to this URL to the user
|
78
|
+
print.url
|
79
|
+
# => "https://widget.sendshapes.com/?token=33b41d6e80d4918cfff768185d1d31a6"
|
80
|
+
|
46
81
|
|
47
82
|
Development
|
48
83
|
-----------
|
@@ -59,6 +94,11 @@ To launch specs:
|
|
59
94
|
$ rake
|
60
95
|
```
|
61
96
|
|
97
|
+
List other tasks:
|
98
|
+
|
99
|
+
```sh
|
100
|
+
$ rake -T
|
101
|
+
```
|
62
102
|
|
63
103
|
License
|
64
104
|
-------
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require "authentise/api"
|
2
|
+
|
3
|
+
module Authentise
|
4
|
+
module API
|
5
|
+
# Calls to the print streaming API
|
6
|
+
module Print
|
7
|
+
module_function
|
8
|
+
|
9
|
+
def create_token(receiver_email: nil,
|
10
|
+
model_url: nil,
|
11
|
+
print_value: nil,
|
12
|
+
print_value_currency: nil,
|
13
|
+
partner_job_id: nil)
|
14
|
+
url = "https://print.authentise.com/token/"
|
15
|
+
body = {
|
16
|
+
api_key: Authentise.configuration.secret_partner_key,
|
17
|
+
model: 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
|
+
}.to_json
|
23
|
+
options = {
|
24
|
+
content_type: :json,
|
25
|
+
accept: :json,
|
26
|
+
}
|
27
|
+
RestClient.post(url, body, options) do |response, _request, _result|
|
28
|
+
if response.code == 201
|
29
|
+
{ url: response.headers[:x_token_location] }
|
30
|
+
else
|
31
|
+
fail API::Error, response
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require "authentise/api"
|
2
|
+
|
3
|
+
module Authentise
|
4
|
+
module API
|
5
|
+
# Calls to create a user and authenticate over the API
|
6
|
+
module Users
|
7
|
+
module_function
|
8
|
+
|
9
|
+
# Create a new user to use the API.
|
10
|
+
#
|
11
|
+
# Params:
|
12
|
+
# - email
|
13
|
+
# - name
|
14
|
+
# - username
|
15
|
+
# - password
|
16
|
+
#
|
17
|
+
# Returns a hash with:
|
18
|
+
# - url: URL to the new user
|
19
|
+
# - uuid: unique id for this user
|
20
|
+
def create_user(params)
|
21
|
+
url = "https://users.authentise.com/users/"
|
22
|
+
options = {
|
23
|
+
accept: :json,
|
24
|
+
}
|
25
|
+
RestClient.post(url, params, options) do |response, _request, _result|
|
26
|
+
json = JSON.parse(response)
|
27
|
+
if response.code == 201
|
28
|
+
{
|
29
|
+
url: json["uri"],
|
30
|
+
uuid: json["uuid"],
|
31
|
+
}
|
32
|
+
else
|
33
|
+
fail API::Error, json["message"]
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# Create a new session to use in other API calls.
|
39
|
+
#
|
40
|
+
# Params:
|
41
|
+
# - username
|
42
|
+
# - password
|
43
|
+
#
|
44
|
+
# Returns a hash with:
|
45
|
+
# - token: cookie token to add to the following API cooke calls
|
46
|
+
def create_session(params)
|
47
|
+
url = "https://users.authentise.com/sessions/"
|
48
|
+
options = {
|
49
|
+
accept: :json,
|
50
|
+
}
|
51
|
+
RestClient.post(url, params, options) do |response, _request, _result|
|
52
|
+
if response.code == 201
|
53
|
+
{
|
54
|
+
token: response.cookies["session"],
|
55
|
+
}
|
56
|
+
else
|
57
|
+
json = JSON.parse(response)
|
58
|
+
fail API::Error, json["message"]
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,258 @@
|
|
1
|
+
require "authentise/api"
|
2
|
+
|
3
|
+
module Authentise
|
4
|
+
module API
|
5
|
+
# Upload models and take snapshot pictures
|
6
|
+
module Warehouse
|
7
|
+
module_function
|
8
|
+
|
9
|
+
# Params:
|
10
|
+
# - cookie
|
11
|
+
#
|
12
|
+
# - name (string) – Required. The name of the model. This can be any
|
13
|
+
# string and should be meaningful to the user
|
14
|
+
#
|
15
|
+
# - allowed_transformations (hash) – Optional. The transformations that
|
16
|
+
# are allowed on this model.
|
17
|
+
# * resize (boolean) – Optional. true if this
|
18
|
+
# model is allowed to be resized automatically by other services.
|
19
|
+
# Default: false.
|
20
|
+
# * rotation (boolean) – Optional. true if
|
21
|
+
# this model is allowed to be rotated automatically by other services.
|
22
|
+
# Default: false.
|
23
|
+
#
|
24
|
+
# - callback (hash) – Optional. The URL to call when this model changes
|
25
|
+
# states.
|
26
|
+
# * url (string) – Optional. The URL to request for the
|
27
|
+
# callback
|
28
|
+
# * method (string) – Optional. The method to use for the
|
29
|
+
# request, one of GET, POST or PUT.
|
30
|
+
def create_model(session_token: nil, name: nil)
|
31
|
+
url = "https://models.authentise.com/model/"
|
32
|
+
body = {
|
33
|
+
name: name,
|
34
|
+
}.to_json
|
35
|
+
options = {
|
36
|
+
content_type: :json,
|
37
|
+
accept: :json,
|
38
|
+
cookies: { session: session_token },
|
39
|
+
}
|
40
|
+
RestClient.post(url, body, options) do |response, _request, _result|
|
41
|
+
if response.code == 201
|
42
|
+
{
|
43
|
+
model_url: response.headers[:location],
|
44
|
+
upload_url: response.headers[:x_upload_location],
|
45
|
+
}
|
46
|
+
else
|
47
|
+
fail API::Error, JSON.parse(response)["message"]
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def put_file(url: nil, path: nil)
|
53
|
+
file = File.read(path)
|
54
|
+
options = {
|
55
|
+
content_type: 'application/octet-stream',
|
56
|
+
}
|
57
|
+
RestClient.put(url, file, options) do |response, _request, _result|
|
58
|
+
if response.code == 200
|
59
|
+
true
|
60
|
+
else
|
61
|
+
fail API::Error, response
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
# Get information about a model from its URL or UUID.
|
67
|
+
def get_model(url: nil, uuid: nil, session_token: nil)
|
68
|
+
url ||= "https://models.authentise.com/model/#{uuid}/"
|
69
|
+
headers = {
|
70
|
+
content_type: :json,
|
71
|
+
accept: :json,
|
72
|
+
cookies: { session: session_token },
|
73
|
+
}
|
74
|
+
RestClient.get(url, headers) do |response, _request, _result|
|
75
|
+
if response.code == 200
|
76
|
+
parse_model(response, url)
|
77
|
+
elsif response.code == 404
|
78
|
+
fail Authentise::API::NotFoundError
|
79
|
+
else
|
80
|
+
fail Authentise::API::Error, "Error #{response.code}"
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
|
86
|
+
# # Get a list of all models the requester has access to based on
|
87
|
+
# # query filters.
|
88
|
+
# #
|
89
|
+
# # Params:
|
90
|
+
# # - session_token
|
91
|
+
# # - name: a partial name of models to search for. accepts the
|
92
|
+
# # wildcard character: “*”.
|
93
|
+
# # - status: a status of models to search for.
|
94
|
+
# # - created: a creation date to search for models.
|
95
|
+
# # - updated: a updated date to search for models.
|
96
|
+
# # - sort – one of the other queryable parameters, such as name,
|
97
|
+
# # status, created or updated. accepts + or - to indicate order of
|
98
|
+
# # the sort. parameters may be strung together, separated by commas.
|
99
|
+
# # example: "+status, +created, -name" or "name, created"
|
100
|
+
# def get_models(params = {})
|
101
|
+
# query = params.dup
|
102
|
+
# session_token = query.delete(:session_token)
|
103
|
+
|
104
|
+
# url = "https://models.authentise.com/model/"
|
105
|
+
# options = {
|
106
|
+
# params: query,
|
107
|
+
# content_type: :json,
|
108
|
+
# accept: :json,
|
109
|
+
# cookies: { session: session_token }
|
110
|
+
# }
|
111
|
+
|
112
|
+
# RestClient.get(url, options) do |response, request, result|
|
113
|
+
# if response.code == 200
|
114
|
+
# data = JSON.parse(response)
|
115
|
+
# p data
|
116
|
+
# {
|
117
|
+
# # ?
|
118
|
+
# models: data["models"]
|
119
|
+
# }
|
120
|
+
# else
|
121
|
+
# raise Authentise::API::Error, "Error #{response.code}"
|
122
|
+
# end
|
123
|
+
# end
|
124
|
+
# end
|
125
|
+
|
126
|
+
|
127
|
+
# Create a model snapshot.
|
128
|
+
#
|
129
|
+
# Required arguments:
|
130
|
+
# - session_token: for authentication.
|
131
|
+
# - model_uuid: which model to create a snapshot for.
|
132
|
+
#
|
133
|
+
# Optional arguments:
|
134
|
+
# - samples (int) – The number of samples to use in requesting the
|
135
|
+
# snapshot. Min 0, Max 5000. Higher numbers will take
|
136
|
+
# konger but yield better-looking results
|
137
|
+
# - layer (int) – The number of the layer of the model to show. This
|
138
|
+
# allows you to visualize the model when partially printed
|
139
|
+
# - color (string) – The color, in HTML color codes, to use for the
|
140
|
+
# material the model is made of. Ex: #AFAA75
|
141
|
+
# - height (int) – The height of the image in pixels. Min 0, Max 768
|
142
|
+
# - width (int) – The width oft he image in pixels. Min 0, Max 1024
|
143
|
+
# - x (float) – The position of the camera on the X axis
|
144
|
+
# - y (float) – The position of the camera on the Y axis
|
145
|
+
# - z (float) – The position of the camera on the Z axis
|
146
|
+
# - u (float) – The camera direction vector’s X component
|
147
|
+
# - v (float) – The camera direction vector’s Y component
|
148
|
+
# - w (float) – The camera direction vector’s Z component
|
149
|
+
# - callback (hash):
|
150
|
+
# * url (string) – The url to callback to once model processing is
|
151
|
+
# finished.
|
152
|
+
# * method (string) – The http method for the callback to use when
|
153
|
+
# calling back.
|
154
|
+
def create_snapshot(arguments = {})
|
155
|
+
params = arguments.dup
|
156
|
+
session_token = params.delete(:session_token)
|
157
|
+
model_uuid = params.delete(:model_uuid)
|
158
|
+
|
159
|
+
url = "https://models.authentise.com/model/#{model_uuid}/snapshot/"
|
160
|
+
body = params.to_json
|
161
|
+
headers = {
|
162
|
+
content_type: :json,
|
163
|
+
accept: :json,
|
164
|
+
cookies: { session: session_token },
|
165
|
+
}
|
166
|
+
RestClient.post(url, body, headers) do |response, _request, _result|
|
167
|
+
if response.code == 201
|
168
|
+
{
|
169
|
+
url: response.headers[:location],
|
170
|
+
}
|
171
|
+
else
|
172
|
+
fail API::Error, JSON.parse(response)["message"]
|
173
|
+
end
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
|
178
|
+
# Get information about a snapshot from its URL.
|
179
|
+
def get_snapshot(url: nil, session_token: nil)
|
180
|
+
headers = {
|
181
|
+
content_type: :json,
|
182
|
+
accept: :json,
|
183
|
+
cookies: { session: session_token },
|
184
|
+
}
|
185
|
+
RestClient.get(url, headers) do |response, _request, _result|
|
186
|
+
if response.code == 200
|
187
|
+
parse_snapshot(response)
|
188
|
+
elsif response.code == 404
|
189
|
+
fail Authentise::API::NotFoundError
|
190
|
+
else
|
191
|
+
fail Authentise::API::Error, "Error #{response.code}"
|
192
|
+
end
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
|
197
|
+
def parse_model(response, url)
|
198
|
+
data = JSON.parse(response)
|
199
|
+
{
|
200
|
+
# URL to fetch this model
|
201
|
+
url: url,
|
202
|
+
# Identifier for the model
|
203
|
+
uuid: url.split("/").last,
|
204
|
+
# The name of the model. (string)
|
205
|
+
name: data["name"],
|
206
|
+
# The current status of the model processing. Can be one of
|
207
|
+
# "processing", "processed", or "error".
|
208
|
+
status: data["status"],
|
209
|
+
# Link at which a snapshot of the model can be downloaded.
|
210
|
+
snapshot_url: data["snapshot"],
|
211
|
+
# Link at which a the model can be downloaded.
|
212
|
+
content_url: data["content"],
|
213
|
+
# Boolean represeting if the model is manifold. If the model is
|
214
|
+
# not manifold, there is a higher likelyhood that slicing will
|
215
|
+
# fail.
|
216
|
+
manifold: data["analyses.manifold"],
|
217
|
+
# The date and time the model was created.
|
218
|
+
created_at: parse_time(data["created"]),
|
219
|
+
# The date and time the model was last updated.
|
220
|
+
updated_at: parse_time(data["updated"]),
|
221
|
+
# An array of model uris from which this model is derived.
|
222
|
+
parents_urls: data["parents"],
|
223
|
+
# An array of model uris from which are derived from this model.
|
224
|
+
children_urls: data["children"],
|
225
|
+
}
|
226
|
+
end
|
227
|
+
private_class_method :parse_model
|
228
|
+
|
229
|
+
# rubocop:disable Metrics/AbcSize
|
230
|
+
def parse_snapshot(response)
|
231
|
+
data = JSON.parse(response)
|
232
|
+
{
|
233
|
+
status: "snapshot_rendering",
|
234
|
+
samples: data["samples"],
|
235
|
+
layer: data["layer"],
|
236
|
+
color: data["color"],
|
237
|
+
height: data["height"],
|
238
|
+
width: data["width"],
|
239
|
+
x: data["x"],
|
240
|
+
y: data["y"],
|
241
|
+
z: data["z"],
|
242
|
+
u: data["u"],
|
243
|
+
v: data["v"],
|
244
|
+
w: data["w"],
|
245
|
+
slice_height: data["slice_height"],
|
246
|
+
created_at: parse_time(data["created"]),
|
247
|
+
content_url: data["content"],
|
248
|
+
}
|
249
|
+
end
|
250
|
+
# rubocop:enable Metrics/AbcSize
|
251
|
+
|
252
|
+
def parse_time(string)
|
253
|
+
string && Time.parse(string)
|
254
|
+
end
|
255
|
+
private_class_method :parse_time
|
256
|
+
end
|
257
|
+
end
|
258
|
+
end
|
data/lib/authentise/api.rb
CHANGED
@@ -3,34 +3,41 @@ require "rest-client"
|
|
3
3
|
require "authentise/configuration"
|
4
4
|
|
5
5
|
module Authentise
|
6
|
+
# Module for all API-Related
|
6
7
|
module API
|
8
|
+
# Common Error
|
7
9
|
class Error < RuntimeError; end
|
8
10
|
|
9
|
-
|
10
|
-
|
11
|
-
STATUS_PATH = "api3/api_get_partner_print_status"
|
11
|
+
# 404 Error
|
12
|
+
class NotFoundError < Error; end
|
12
13
|
|
13
14
|
module_function
|
14
15
|
|
16
|
+
# DEPRECATED, use Authentise::API::Print.create_token(…)
|
15
17
|
def create_token
|
16
|
-
url = "#{host}
|
18
|
+
url = "#{host}/api3/api_create_partner_token"
|
17
19
|
params = {
|
18
|
-
api_key: Authentise.configuration.secret_partner_key
|
20
|
+
api_key: Authentise.configuration.secret_partner_key,
|
19
21
|
}
|
20
22
|
response = RestClient.get(url, params: params)
|
21
23
|
data = parse(response)
|
22
24
|
data["token"]
|
23
25
|
end
|
24
26
|
|
25
|
-
|
26
|
-
|
27
|
+
# DEPRECATED, use Authentise::API::Print.create_token(…)
|
28
|
+
def upload_file(token: nil,
|
29
|
+
file: nil,
|
30
|
+
email: nil,
|
31
|
+
cents: nil,
|
32
|
+
currency: "USD")
|
33
|
+
url = "#{host}/api3/api_upload_partner_stl"
|
27
34
|
params = {
|
28
35
|
api_key: Authentise.configuration.secret_partner_key,
|
29
36
|
token: token,
|
30
37
|
receiver_email: email,
|
31
38
|
print_value: cents,
|
32
39
|
print_value_currency: currency,
|
33
|
-
stl_file: file
|
40
|
+
stl_file: file,
|
34
41
|
}
|
35
42
|
response = RestClient.post(url, params, accept: :json)
|
36
43
|
data = parse(response)
|
@@ -42,6 +49,7 @@ module Authentise
|
|
42
49
|
end
|
43
50
|
end
|
44
51
|
|
52
|
+
# DEPRECATED
|
45
53
|
# Returns a status hash for the given token if the print has started.
|
46
54
|
# /!\ Do not call this more than once every 15 seconds.
|
47
55
|
#
|
@@ -53,10 +61,10 @@ module Authentise
|
|
53
61
|
# - `confirmed_success`
|
54
62
|
# - `confirmed_failure`
|
55
63
|
def get_status(token: nil)
|
56
|
-
url = "#{host}
|
64
|
+
url = "#{host}/api3/api_get_partner_print_status"
|
57
65
|
params = {
|
58
66
|
api_key: Authentise.configuration.secret_partner_key,
|
59
|
-
token: token
|
67
|
+
token: token,
|
60
68
|
}
|
61
69
|
response = RestClient.get(url, params: params)
|
62
70
|
data = parse(response)
|
@@ -64,15 +72,15 @@ module Authentise
|
|
64
72
|
printing_job_status_name: data["printing_job_status_name"].downcase,
|
65
73
|
printing_percentage: data["printing_percentage"],
|
66
74
|
minutes_left: data["minutes_left"],
|
67
|
-
message: data["message"]
|
75
|
+
message: data["message"],
|
68
76
|
}
|
69
77
|
end
|
70
78
|
|
71
|
-
|
79
|
+
# private
|
72
80
|
|
73
81
|
def parse(response)
|
74
82
|
json = JSON.parse(response)
|
75
|
-
if json["status"]
|
83
|
+
if json["status"] && json["status"]["code"] != "ok"
|
76
84
|
fail Error, json["status"]["extended_description"]
|
77
85
|
elsif json["data"]
|
78
86
|
json["data"]
|
@@ -80,6 +88,7 @@ module Authentise
|
|
80
88
|
fail Error, "JSON with no data: #{response}"
|
81
89
|
end
|
82
90
|
end
|
91
|
+
private_class_method :parse
|
83
92
|
|
84
93
|
def host
|
85
94
|
if Authentise.configuration.use_ssl
|
@@ -88,5 +97,6 @@ module Authentise
|
|
88
97
|
"http://widget.sendshapes.com:3000"
|
89
98
|
end
|
90
99
|
end
|
100
|
+
private_class_method :host
|
91
101
|
end
|
92
102
|
end
|
@@ -1,6 +1,16 @@
|
|
1
|
+
# Configure your application using this construct:
|
2
|
+
#
|
3
|
+
# Authentise.configure do |c|
|
4
|
+
# c.secret_partner_key = "…"
|
5
|
+
# end
|
1
6
|
module Authentise
|
7
|
+
# Store the config
|
2
8
|
class Configuration
|
9
|
+
# The partner key Authentise gave you
|
3
10
|
attr_accessor :secret_partner_key
|
11
|
+
|
12
|
+
# DEPRECATED
|
13
|
+
# Switch off the use of SSL for the old streaming API
|
4
14
|
attr_accessor :use_ssl
|
5
15
|
|
6
16
|
def initialize
|
@@ -0,0 +1,88 @@
|
|
1
|
+
require "authentise/api/warehouse"
|
2
|
+
|
3
|
+
module Authentise
|
4
|
+
# Represents a model in the Model Warehouse
|
5
|
+
class Model
|
6
|
+
attr_accessor :name, # Required
|
7
|
+
|
8
|
+
# Available only when model is created or fetched
|
9
|
+
:url,
|
10
|
+
|
11
|
+
# Available only when model is created
|
12
|
+
:upload_url,
|
13
|
+
|
14
|
+
# Available only when model is fetched
|
15
|
+
:status,
|
16
|
+
:snapshot_url,
|
17
|
+
:content_url,
|
18
|
+
:manifold,
|
19
|
+
:created_at,
|
20
|
+
:updated_at,
|
21
|
+
:parents_urls,
|
22
|
+
:children_urls,
|
23
|
+
|
24
|
+
# You can initialize a model with it but it is not available
|
25
|
+
# when fetched
|
26
|
+
:uuid
|
27
|
+
|
28
|
+
|
29
|
+
def initialize(name: nil,
|
30
|
+
url: nil,
|
31
|
+
upload_url: nil,
|
32
|
+
uuid: nil)
|
33
|
+
@name = name
|
34
|
+
@upload_url = upload_url
|
35
|
+
@url = url
|
36
|
+
@uuid = uuid
|
37
|
+
end
|
38
|
+
|
39
|
+
def create(session_token: nil)
|
40
|
+
response = API::Warehouse.create_model(
|
41
|
+
session_token: session_token,
|
42
|
+
name: name,
|
43
|
+
)
|
44
|
+
@upload_url = response[:upload_url]
|
45
|
+
@url = response[:model_url]
|
46
|
+
true
|
47
|
+
end
|
48
|
+
|
49
|
+
def send_file(path: nil)
|
50
|
+
API::Warehouse.put_file(
|
51
|
+
url: upload_url,
|
52
|
+
path: path,
|
53
|
+
)
|
54
|
+
end
|
55
|
+
|
56
|
+
# rubocop:disable Metrics/AbcSize
|
57
|
+
def fetch(session_token: nil)
|
58
|
+
response = API::Warehouse.get_model(uuid: uuid,
|
59
|
+
url: url,
|
60
|
+
session_token: session_token)
|
61
|
+
@url = response[:url]
|
62
|
+
@uuid = response[:uuid]
|
63
|
+
@name = response[:name]
|
64
|
+
@status = response[:status]
|
65
|
+
@snapshot_url = response[:snapshot_url]
|
66
|
+
@content_url = response[:content_url]
|
67
|
+
@manifold = response[:manifold]
|
68
|
+
@parents_urls = response[:parents_urls]
|
69
|
+
@children_urls = response[:children_urls]
|
70
|
+
@created_at = response[:created_at]
|
71
|
+
@updated_at = response[:updated_at]
|
72
|
+
true
|
73
|
+
end
|
74
|
+
# rubocop:enable Metrics/AbcSize
|
75
|
+
|
76
|
+
def self.find_by_url(url: nil, session_token: nil)
|
77
|
+
model = new(url: url)
|
78
|
+
model.fetch(session_token: session_token)
|
79
|
+
model
|
80
|
+
end
|
81
|
+
|
82
|
+
def self.find_by_uuid(uuid: nil, session_token: nil)
|
83
|
+
model = new(uuid: uuid)
|
84
|
+
model.fetch(session_token: session_token)
|
85
|
+
model
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|