plate_api 1.2.0 → 1.2.6
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/.travis.yml +1 -1
- data/Dockerfile +6 -0
- data/Gemfile.lock +5 -3
- data/README.md +6 -0
- data/lib/plate_api/object_handler.rb +52 -23
- data/lib/plate_api/plate_object/base.rb +74 -52
- data/lib/plate_api/post_multipart_request.rb +16 -6
- data/lib/plate_api/request.rb +14 -14
- data/lib/plate_api/response_error.rb +5 -0
- data/lib/plate_api/version.rb +1 -1
- data/lib/plate_api.rb +1 -1
- data/plate_api.gemspec +14 -15
- metadata +6 -5
- data/lib/plate_api/error.rb +0 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4d7353c1eddabde505f9f31f8f0f3939b439a0988d7e758357370a7b49c43e7b
|
|
4
|
+
data.tar.gz: 5e21a75f33de4346ec8da239d568ec3434b370d1515b1d5bd8b5b3922695937e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b530d2fa2aff8acf661d333dd6559dc3d8974af6bcc50d19f770ebf603af12b7e193e74e575693d48d0ccf56f046ecc3730b48e99609dd17e06d300a34b1c5c9
|
|
7
|
+
data.tar.gz: 98c2873014f3aedfb12aeb889e7647a931449aef26a81a07eebb8a2c75c6c14fe63e0686cdc80f21a8e4a9102d0c6286b0d7ec72509dd45c0474e51b2632803d
|
data/.travis.yml
CHANGED
|
@@ -6,7 +6,7 @@ sudo: false
|
|
|
6
6
|
language: ruby
|
|
7
7
|
rvm:
|
|
8
8
|
- 2.5.1
|
|
9
|
-
before_install: gem install bundler -v 1.
|
|
9
|
+
before_install: gem install bundler -v 2.1.4
|
|
10
10
|
before_script:
|
|
11
11
|
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
|
12
12
|
- chmod +x ./cc-test-reporter
|
data/Dockerfile
ADDED
data/Gemfile.lock
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
plate_api (1.2.
|
|
4
|
+
plate_api (1.2.5)
|
|
5
5
|
faraday (~> 1.0.1)
|
|
6
|
-
|
|
6
|
+
mime-types (~> 3.3.1)
|
|
7
7
|
|
|
8
8
|
GEM
|
|
9
9
|
remote: https://rubygems.org/
|
|
@@ -30,7 +30,9 @@ GEM
|
|
|
30
30
|
hashdiff (1.0.1)
|
|
31
31
|
i18n (1.8.2)
|
|
32
32
|
concurrent-ruby (~> 1.0)
|
|
33
|
-
|
|
33
|
+
mime-types (3.3.1)
|
|
34
|
+
mime-types-data (~> 3.2015)
|
|
35
|
+
mime-types-data (3.2021.1115)
|
|
34
36
|
minitest (5.14.1)
|
|
35
37
|
multipart-post (2.1.1)
|
|
36
38
|
public_suffix (4.0.5)
|
data/README.md
CHANGED
|
@@ -145,6 +145,12 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
|
|
|
145
145
|
|
|
146
146
|
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
|
147
147
|
|
|
148
|
+
## Run Specs with Docker
|
|
149
|
+
```bash
|
|
150
|
+
docker build -t plate_api_gem .
|
|
151
|
+
docker run --rm -v $(pwd):/plate_api -it plate_api_gem rspec
|
|
152
|
+
```
|
|
153
|
+
|
|
148
154
|
## License
|
|
149
155
|
|
|
150
156
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
|
@@ -7,38 +7,42 @@ module PlateApi
|
|
|
7
7
|
def initialize(handling_class, api_connector)
|
|
8
8
|
raise ArgumentError, "`handling_class` given for #new is not valid" unless handling_class
|
|
9
9
|
raise ArgumentError, "`api_connector` given for #new is not valid" unless api_connector
|
|
10
|
+
|
|
10
11
|
@handling_class = handling_class
|
|
11
12
|
@api_connector = api_connector
|
|
12
13
|
end
|
|
13
14
|
|
|
14
15
|
def find(id)
|
|
15
16
|
raise ArgumentError, "`id` given for #find is not valid" unless id
|
|
17
|
+
|
|
16
18
|
result = @api_connector.get(resource_path(id))
|
|
17
19
|
if result["data"]
|
|
18
|
-
|
|
20
|
+
new_object(result["data"])
|
|
19
21
|
else
|
|
20
|
-
raise
|
|
22
|
+
raise ResponseError, result
|
|
21
23
|
end
|
|
22
24
|
end
|
|
23
25
|
|
|
24
26
|
def update(id, attributes)
|
|
25
27
|
raise ArgumentError, "`id` given for #update is not valid" unless id
|
|
26
|
-
raise ArgumentError, "`attributes` given for #update is not valid" unless attributes.is_a?
|
|
27
|
-
|
|
28
|
+
raise ArgumentError, "`attributes` given for #update is not valid" unless attributes.is_a?(Hash)
|
|
29
|
+
|
|
30
|
+
result = @api_connector.put(resource_path(id), { "data" => attributes })
|
|
28
31
|
|
|
29
32
|
if result["data"]
|
|
30
|
-
|
|
33
|
+
new_object(result["data"])
|
|
31
34
|
else
|
|
32
|
-
raise
|
|
35
|
+
raise ResponseError, result
|
|
33
36
|
end
|
|
34
37
|
end
|
|
35
38
|
|
|
36
|
-
def create(parent, attributes, create_method
|
|
39
|
+
def create(parent, attributes, create_method = :post)
|
|
37
40
|
raise ArgumentError, "`parent` given for #create is not valid" unless parent
|
|
38
|
-
raise ArgumentError, "`attributes` given for #create is not valid" unless attributes.is_a?
|
|
41
|
+
raise ArgumentError, "`attributes` given for #create is not valid" unless attributes.is_a?(Hash)
|
|
42
|
+
|
|
39
43
|
parameters = case create_method
|
|
40
44
|
when :post
|
|
41
|
-
{"data" => attributes}
|
|
45
|
+
{ "data" => attributes }
|
|
42
46
|
when :post_multipart
|
|
43
47
|
attributes
|
|
44
48
|
end
|
|
@@ -46,45 +50,70 @@ module PlateApi
|
|
|
46
50
|
result = @api_connector.send(create_method, collection_path(parent.class, parent.id), parameters)
|
|
47
51
|
|
|
48
52
|
if result["data"]
|
|
49
|
-
|
|
53
|
+
new_object(result["data"])
|
|
50
54
|
else
|
|
51
|
-
raise
|
|
55
|
+
raise ResponseError, result
|
|
52
56
|
end
|
|
53
57
|
end
|
|
54
58
|
|
|
55
59
|
def delete(id)
|
|
56
60
|
raise ArgumentError, "`id` given for #find is not valid" unless id
|
|
61
|
+
|
|
57
62
|
result = @api_connector.delete(resource_path(id))
|
|
58
63
|
if result["data"]
|
|
59
|
-
|
|
64
|
+
new_object(result["data"])
|
|
60
65
|
else
|
|
61
|
-
raise
|
|
66
|
+
raise ResponseError, result
|
|
62
67
|
end
|
|
63
68
|
end
|
|
64
69
|
|
|
65
|
-
def index(parent_class, parent_id, extra_params={})
|
|
70
|
+
def index(parent_class, parent_id, extra_params = {}, return_raw = false)
|
|
66
71
|
raise ArgumentError, "`parent_id` given for #index is not valid" unless parent_id
|
|
67
72
|
raise ArgumentError, "`parent_class` given for #index is not valid" unless parent_class
|
|
68
73
|
|
|
69
74
|
result = @api_connector.get(collection_path(parent_class, parent_id), extra_params)
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
75
|
+
raise ResponseError, result unless result["data"]
|
|
76
|
+
return result if return_raw
|
|
77
|
+
|
|
78
|
+
result["data"].map { |x| new_object(x) }
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def index_block(parent_class, parent_id, extra_params = {}, &block)
|
|
82
|
+
extra_params[:page] = extra_params.delete("page") if extra_params["page"]
|
|
83
|
+
extra_params[:page] = 1 unless extra_params[:page]
|
|
84
|
+
|
|
85
|
+
pagination = index_block_iteration(parent_class, parent_id, extra_params, &block)
|
|
86
|
+
return unless pagination
|
|
87
|
+
|
|
88
|
+
while pagination["page"] < pagination["total_pages"]
|
|
89
|
+
extra_params.merge!(page: (pagination["page"] + 1))
|
|
90
|
+
pagination = index_block_iteration(parent_class, parent_id, extra_params, &block)
|
|
91
|
+
break unless pagination
|
|
74
92
|
end
|
|
75
93
|
end
|
|
76
94
|
|
|
77
95
|
def index_total_count(parent)
|
|
78
96
|
result = @api_connector.get(collection_path(parent.class, parent.id), per_page: 1)
|
|
79
97
|
if result["meta"]
|
|
80
|
-
|
|
98
|
+
result["meta"]["pagination"]["total_records"]
|
|
81
99
|
else
|
|
82
|
-
raise
|
|
100
|
+
raise ResponseError, result
|
|
83
101
|
end
|
|
84
102
|
end
|
|
85
103
|
|
|
86
104
|
private
|
|
87
105
|
|
|
106
|
+
def index_block_iteration(parent_class, parent_id, params)
|
|
107
|
+
result = index(parent_class, parent_id, params, true)
|
|
108
|
+
objects = result["data"].map { |x| new_object(x) }
|
|
109
|
+
meta = result["meta"]
|
|
110
|
+
yield(objects, meta)
|
|
111
|
+
|
|
112
|
+
# Returns pagination metadata so it can be used to
|
|
113
|
+
# iterate through the pages.
|
|
114
|
+
meta["pagination"] if meta
|
|
115
|
+
end
|
|
116
|
+
|
|
88
117
|
# Construct a new object of @handling_class, given a succesful api_response
|
|
89
118
|
def new_object(api_response)
|
|
90
119
|
@handling_class.new(
|
|
@@ -99,15 +128,15 @@ module PlateApi
|
|
|
99
128
|
"#{@handling_class.api_name}/#{id}"
|
|
100
129
|
end
|
|
101
130
|
|
|
102
|
-
def collection_path(parent_class=nil, parent_id=nil)
|
|
103
|
-
if (parent_class
|
|
131
|
+
def collection_path(parent_class = nil, parent_id = nil)
|
|
132
|
+
if (!parent_class.nil?) ^ (!parent_id.nil?)
|
|
104
133
|
raise ArgumentError, "An invalid combination `parent_class` and `parent_id` is given. Provide both or none."
|
|
105
134
|
end
|
|
106
135
|
|
|
107
136
|
if parent_class
|
|
108
137
|
"#{parent_class.api_name}/#{parent_id}/#{@handling_class.api_name}"
|
|
109
138
|
else
|
|
110
|
-
|
|
139
|
+
@handling_class.api_name.to_s
|
|
111
140
|
end
|
|
112
141
|
end
|
|
113
142
|
end
|
|
@@ -6,7 +6,7 @@ module PlateApi::PlateObject
|
|
|
6
6
|
HasOneRelations = {}
|
|
7
7
|
HasManyRelations = {}
|
|
8
8
|
|
|
9
|
-
def initialize(id, attributes, relations, object_handler=nil)
|
|
9
|
+
def initialize(id, attributes, relations, object_handler = nil)
|
|
10
10
|
@id = id
|
|
11
11
|
@object_handler = object_handler
|
|
12
12
|
initialize_state(attributes, relations)
|
|
@@ -17,24 +17,27 @@ module PlateApi::PlateObject
|
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
def reload
|
|
20
|
-
raise ArgumentError
|
|
20
|
+
raise ArgumentError, "No object_handler is set." unless @object_handler
|
|
21
|
+
|
|
21
22
|
reinitialize(@object_handler.find(@id))
|
|
22
|
-
|
|
23
|
+
self
|
|
23
24
|
end
|
|
24
25
|
|
|
25
26
|
def update(attributes)
|
|
26
|
-
raise ArgumentError
|
|
27
|
-
raise ArgumentError
|
|
27
|
+
raise ArgumentError, "Input `attributes` is not a Hash" unless attributes.is_a?(Hash)
|
|
28
|
+
raise ArgumentError, "No object_handler is attached to this object" unless @object_handler
|
|
29
|
+
|
|
28
30
|
if new_object = @object_handler.update(@id, attributes)
|
|
29
31
|
reinitialize(new_object)
|
|
30
32
|
else
|
|
31
|
-
raise ArgumentError
|
|
33
|
+
raise ArgumentError, "The update was unsuccesful."
|
|
32
34
|
end
|
|
33
|
-
|
|
35
|
+
self
|
|
34
36
|
end
|
|
35
37
|
|
|
36
38
|
def delete
|
|
37
|
-
raise ArgumentError
|
|
39
|
+
raise ArgumentError, "No object_handler is attached to this object" unless @object_handler
|
|
40
|
+
|
|
38
41
|
@object_handler.delete(@id)
|
|
39
42
|
end
|
|
40
43
|
|
|
@@ -46,18 +49,25 @@ module PlateApi::PlateObject
|
|
|
46
49
|
to_s
|
|
47
50
|
end
|
|
48
51
|
|
|
49
|
-
def method_missing(
|
|
50
|
-
if attributes[
|
|
51
|
-
|
|
52
|
-
elsif attributes["content"] && attributes["content"][
|
|
53
|
-
|
|
52
|
+
def method_missing(method_name, *args, &block)
|
|
53
|
+
if attributes[method_name.to_s]
|
|
54
|
+
attributes[method_name.to_s]
|
|
55
|
+
elsif attributes["content"] && attributes["content"][method_name.to_s]
|
|
56
|
+
attributes["content"][method_name.to_s]["value"]
|
|
54
57
|
else
|
|
55
58
|
super
|
|
56
59
|
end
|
|
57
60
|
end
|
|
58
61
|
|
|
62
|
+
def respond_to_missing?(method_name, include_private = false)
|
|
63
|
+
return true if attributes[method_name.to_s]
|
|
64
|
+
return true if attributes["content"] && attributes["content"][method_name.to_s]
|
|
65
|
+
|
|
66
|
+
super
|
|
67
|
+
end
|
|
68
|
+
|
|
59
69
|
def ==(other)
|
|
60
|
-
|
|
70
|
+
other.id == @id && other.class == self.class
|
|
61
71
|
end
|
|
62
72
|
|
|
63
73
|
private
|
|
@@ -72,56 +82,68 @@ module PlateApi::PlateObject
|
|
|
72
82
|
@relations = relations
|
|
73
83
|
end
|
|
74
84
|
|
|
75
|
-
def
|
|
76
|
-
HasOneRelations[self.name] ||= {}
|
|
77
|
-
self.attr_accessor "#{name}_id"
|
|
78
|
-
HasOneRelations[self.name][name.to_s] = klass
|
|
79
|
-
define_has_one_method(name, klass)
|
|
80
|
-
end
|
|
85
|
+
def set_relation_ids(relations_attributes)
|
|
86
|
+
HasOneRelations[self.class.name] ||= {}
|
|
81
87
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
88
|
+
return unless relations_attributes
|
|
89
|
+
|
|
90
|
+
self.class::HasOneRelations[self.class.name].keys.each do |relation_name|
|
|
91
|
+
val = relations_attributes["#{relation_name}_id"]
|
|
92
|
+
if val
|
|
93
|
+
send("#{relation_name}_id=", val)
|
|
94
|
+
end
|
|
87
95
|
end
|
|
88
96
|
end
|
|
89
97
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
HasManyRelations[self.name][plural_name.to_s] = klass
|
|
93
|
-
define_has_many_methods(plural_name, klass)
|
|
94
|
-
define_create_method(singular_name, klass) if define_create_method
|
|
95
|
-
end
|
|
98
|
+
class << self
|
|
99
|
+
private
|
|
96
100
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
101
|
+
def has_one(name, klass)
|
|
102
|
+
HasOneRelations[self.name] ||= {}
|
|
103
|
+
attr_accessor("#{name}_id")
|
|
104
|
+
HasOneRelations[self.name][name.to_s] = klass
|
|
105
|
+
define_has_one_method(name, klass)
|
|
102
106
|
end
|
|
103
107
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
+
def define_has_one_method(name, klass)
|
|
109
|
+
define_method(name.to_s) do
|
|
110
|
+
id = send("#{name}_id")
|
|
111
|
+
return nil unless id
|
|
112
|
+
|
|
113
|
+
@object_handler.api_connector.handler(Object.const_get(klass)).find(id)
|
|
114
|
+
end
|
|
108
115
|
end
|
|
109
|
-
end
|
|
110
116
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
117
|
+
def has_many(plural_name, singular_name, klass, define_create_method = false)
|
|
118
|
+
HasManyRelations[name] ||= {}
|
|
119
|
+
HasManyRelations[name][plural_name.to_s] = klass
|
|
120
|
+
define_has_many_methods(plural_name, klass)
|
|
121
|
+
define_create_method(singular_name, klass) if define_create_method
|
|
114
122
|
end
|
|
115
|
-
end
|
|
116
123
|
|
|
117
|
-
|
|
118
|
-
|
|
124
|
+
def define_has_many_methods(plural_name, klass)
|
|
125
|
+
define_method(plural_name.to_s) do |params = {}|
|
|
126
|
+
@object_handler.api_connector.handler(
|
|
127
|
+
Object.const_get(klass)
|
|
128
|
+
).index(self.class, @id, params)
|
|
129
|
+
end
|
|
119
130
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
131
|
+
define_method("#{plural_name}_total_count") do
|
|
132
|
+
@object_handler.api_connector.handler(
|
|
133
|
+
Object.const_get(klass)
|
|
134
|
+
).index_total_count(self)
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
define_method("all_#{plural_name}") do |params = {}, &block|
|
|
138
|
+
@object_handler.api_connector.handler(
|
|
139
|
+
Object.const_get(klass)
|
|
140
|
+
).index_block(self.class, @id, params, &block)
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def define_create_method(singular_name, klass)
|
|
145
|
+
define_method("create_#{singular_name}") do |create_attributes|
|
|
146
|
+
@object_handler.api_connector.handler(Object.const_get(klass)).create(self, create_attributes)
|
|
125
147
|
end
|
|
126
148
|
end
|
|
127
149
|
end
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
require 'mimemagic'
|
|
2
|
-
|
|
3
1
|
module PlateApi
|
|
4
2
|
class PostMultipartRequest < Request
|
|
5
3
|
HttpAdapter = :net_http
|
|
6
|
-
MimeMagic.add('image/jpeg', extensions: "jfif")
|
|
7
4
|
|
|
8
|
-
def initialize(public_key, secret, path, parameters={}, custom_server=nil)
|
|
5
|
+
def initialize(public_key, secret, path, parameters = {}, custom_server = nil)
|
|
9
6
|
super(public_key, secret, "POST", path, custom_server)
|
|
10
7
|
|
|
11
8
|
@post_parameters = map_parameters(parameters)
|
|
@@ -13,19 +10,32 @@ module PlateApi
|
|
|
13
10
|
|
|
14
11
|
def extra_builder_options(builder)
|
|
15
12
|
builder.request :multipart
|
|
16
|
-
|
|
13
|
+
builder.request :url_encoded
|
|
17
14
|
end
|
|
18
15
|
|
|
19
16
|
def extra_request_options(request)
|
|
20
17
|
request.body = @post_parameters
|
|
21
18
|
end
|
|
22
19
|
|
|
20
|
+
def mime_type(full_path)
|
|
21
|
+
begin
|
|
22
|
+
IO.popen(["file", "--brief", "--mime-type", full_path], in: :close, err: :close) { |io| io.read.chomp }
|
|
23
|
+
rescue SystemCallError
|
|
24
|
+
# determine mime_type based on extension as a fallback, in case `file` is not installed on the client machine
|
|
25
|
+
mime_type_fallback(full_path)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def mime_type_fallback(full_path)
|
|
30
|
+
MIME::Types.type_for(full_path).first.content_type
|
|
31
|
+
end
|
|
32
|
+
|
|
23
33
|
def map_parameters(parameters)
|
|
24
34
|
parameters.keys.each do |key|
|
|
25
35
|
val = parameters[key]
|
|
26
36
|
if val.is_a? File
|
|
27
37
|
full_path = File.expand_path(val)
|
|
28
|
-
mime_type =
|
|
38
|
+
mime_type = mime_type(full_path)
|
|
29
39
|
parameters[key] = Faraday::UploadIO.new(full_path, mime_type)
|
|
30
40
|
end
|
|
31
41
|
end
|
data/lib/plate_api/request.rb
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
require "faraday"
|
|
2
2
|
# require 'faraday_middleware'
|
|
3
|
-
require
|
|
3
|
+
require "time"
|
|
4
4
|
require "base64"
|
|
5
5
|
require "openssl"
|
|
6
6
|
require "json"
|
|
7
|
-
|
|
7
|
+
require "mime-types"
|
|
8
8
|
|
|
9
9
|
module PlateApi
|
|
10
10
|
class Request
|
|
11
11
|
DefaultApiBaseEndpoint = "https://www.startwithplate.com/api/v2"
|
|
12
12
|
HttpAdapter = Faraday.default_adapter
|
|
13
13
|
|
|
14
|
-
def initialize(public_key, secret, method, path, custom_server=nil)
|
|
14
|
+
def initialize(public_key, secret, method, path, custom_server = nil)
|
|
15
15
|
base_api_endpoint = custom_server ? custom_server : DefaultApiBaseEndpoint
|
|
16
16
|
|
|
17
|
-
@connection = ::Faraday.new(url: base_api_endpoint) do |faraday|
|
|
17
|
+
@connection = ::Faraday.new(url: base_api_endpoint, request: { timeout: 600 }) do |faraday|
|
|
18
18
|
extra_builder_options(faraday)
|
|
19
|
-
faraday.adapter
|
|
19
|
+
faraday.adapter HttpAdapter
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
@public_key = public_key
|
|
@@ -25,20 +25,20 @@ module PlateApi
|
|
|
25
25
|
@path = strip_path(path)
|
|
26
26
|
end
|
|
27
27
|
|
|
28
|
-
def execute(response_type
|
|
28
|
+
def execute(response_type = :raw)
|
|
29
29
|
response = @connection.send(@method.downcase) do |request|
|
|
30
30
|
request.url url_path
|
|
31
|
-
request.headers[
|
|
32
|
-
request.headers[
|
|
31
|
+
request.headers["Date"] = request_date
|
|
32
|
+
request.headers["Authorization"] = calculate_signature
|
|
33
33
|
extra_request_options(request)
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
return case response_type
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
when :raw
|
|
38
|
+
return response.body
|
|
39
|
+
when :json
|
|
40
|
+
return JSON.parse(response.body)
|
|
41
|
+
end
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
def request_date
|
|
@@ -72,7 +72,7 @@ module PlateApi
|
|
|
72
72
|
end
|
|
73
73
|
|
|
74
74
|
def strip_path(path)
|
|
75
|
-
path.gsub(/^\/|\/$/,
|
|
75
|
+
path.gsub(/^\/|\/$/, "")
|
|
76
76
|
end
|
|
77
77
|
end
|
|
78
78
|
end
|
data/lib/plate_api/version.rb
CHANGED
data/lib/plate_api.rb
CHANGED
data/plate_api.gemspec
CHANGED
|
@@ -1,20 +1,19 @@
|
|
|
1
|
-
|
|
2
1
|
lib = File.expand_path("../lib", __FILE__)
|
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
3
|
require "plate_api/version"
|
|
5
4
|
|
|
6
5
|
Gem::Specification.new do |spec|
|
|
7
|
-
spec.name
|
|
8
|
-
spec.version
|
|
9
|
-
spec.date
|
|
10
|
-
spec.summary
|
|
6
|
+
spec.name = "plate_api"
|
|
7
|
+
spec.version = PlateApi::VERSION
|
|
8
|
+
spec.date = "2019-01-05"
|
|
9
|
+
spec.summary = "Connector for the Plate API"
|
|
11
10
|
spec.description = "This gem can be used to connect to the Plate API. It takes care
|
|
12
11
|
of the authentication procedure. It also provides a basic wrapper around the Plate API,
|
|
13
12
|
so objects in Plate can be manipulated as local objects."
|
|
14
|
-
spec.authors
|
|
15
|
-
spec.email
|
|
16
|
-
spec.files
|
|
17
|
-
spec.license
|
|
13
|
+
spec.authors = ["David Kortleven", "Harmen Fuite"]
|
|
14
|
+
spec.email = ["david@getplate.com", "harmen@getplate.com"]
|
|
15
|
+
spec.files = ["lib/plate_api.rb"]
|
|
16
|
+
spec.license = "MIT"
|
|
18
17
|
|
|
19
18
|
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
|
20
19
|
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
|
@@ -22,19 +21,20 @@ Gem::Specification.new do |spec|
|
|
|
22
21
|
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
|
23
22
|
else
|
|
24
23
|
raise "RubyGems 2.0 or newer is required to protect against " \
|
|
25
|
-
|
|
24
|
+
"public gem pushes."
|
|
26
25
|
end
|
|
27
26
|
|
|
28
|
-
spec.files
|
|
27
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
|
29
28
|
f.match(%r{^(test|spec|features)/})
|
|
30
29
|
end
|
|
31
|
-
spec.bindir
|
|
32
|
-
spec.executables
|
|
30
|
+
spec.bindir = "exe"
|
|
31
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
33
32
|
spec.require_paths = ["lib"]
|
|
34
33
|
|
|
35
34
|
spec.add_dependency "faraday", "~> 1.0.1"
|
|
35
|
+
spec.add_dependency "mime-types", "~> 3.3.1"
|
|
36
36
|
# spec.add_dependency "faraday_middleware", "~> 0.13.1"
|
|
37
|
-
spec.add_dependency "mimemagic", "~> 0.3.
|
|
37
|
+
# spec.add_dependency "mimemagic", "~> 0.3.10"
|
|
38
38
|
|
|
39
39
|
spec.add_development_dependency "bundler", "~> 2.1.4"
|
|
40
40
|
spec.add_development_dependency "rake", "~> 13.0"
|
|
@@ -44,5 +44,4 @@ Gem::Specification.new do |spec|
|
|
|
44
44
|
spec.add_development_dependency "simplecov"
|
|
45
45
|
spec.add_development_dependency "simplecov-console"
|
|
46
46
|
spec.add_development_dependency "byebug"
|
|
47
|
-
|
|
48
47
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: plate_api
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.2.
|
|
4
|
+
version: 1.2.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- David Kortleven
|
|
@@ -26,19 +26,19 @@ dependencies:
|
|
|
26
26
|
- !ruby/object:Gem::Version
|
|
27
27
|
version: 1.0.1
|
|
28
28
|
- !ruby/object:Gem::Dependency
|
|
29
|
-
name:
|
|
29
|
+
name: mime-types
|
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
|
31
31
|
requirements:
|
|
32
32
|
- - "~>"
|
|
33
33
|
- !ruby/object:Gem::Version
|
|
34
|
-
version:
|
|
34
|
+
version: 3.3.1
|
|
35
35
|
type: :runtime
|
|
36
36
|
prerelease: false
|
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
|
38
38
|
requirements:
|
|
39
39
|
- - "~>"
|
|
40
40
|
- !ruby/object:Gem::Version
|
|
41
|
-
version:
|
|
41
|
+
version: 3.3.1
|
|
42
42
|
- !ruby/object:Gem::Dependency
|
|
43
43
|
name: bundler
|
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -165,6 +165,7 @@ files:
|
|
|
165
165
|
- ".gitignore"
|
|
166
166
|
- ".rspec"
|
|
167
167
|
- ".travis.yml"
|
|
168
|
+
- Dockerfile
|
|
168
169
|
- Gemfile
|
|
169
170
|
- Gemfile.lock
|
|
170
171
|
- LICENSE.txt
|
|
@@ -175,7 +176,6 @@ files:
|
|
|
175
176
|
- lib/plate_api.rb
|
|
176
177
|
- lib/plate_api/connector.rb
|
|
177
178
|
- lib/plate_api/delete_request.rb
|
|
178
|
-
- lib/plate_api/error.rb
|
|
179
179
|
- lib/plate_api/get_request.rb
|
|
180
180
|
- lib/plate_api/object_handler.rb
|
|
181
181
|
- lib/plate_api/plate_object/attachment.rb
|
|
@@ -196,6 +196,7 @@ files:
|
|
|
196
196
|
- lib/plate_api/post_request.rb
|
|
197
197
|
- lib/plate_api/put_request.rb
|
|
198
198
|
- lib/plate_api/request.rb
|
|
199
|
+
- lib/plate_api/response_error.rb
|
|
199
200
|
- lib/plate_api/version.rb
|
|
200
201
|
- plate_api.gemspec
|
|
201
202
|
homepage:
|