plate_api 1.1.8 → 1.2.5
Sign up to get free protection for your applications and to get access to all the features.
- 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 +61 -38
- 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 +13 -13
- data/lib/plate_api/response_error.rb +5 -0
- data/lib/plate_api/version.rb +1 -1
- data/lib/plate_api.rb +1 -0
- data/plate_api.gemspec +14 -15
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 503eedbe972dc1af57701afbafd35a6ad76e106d86b94ad32093a40d5c63d1da
|
4
|
+
data.tar.gz: 4df9c933309cfe2217882548fa88f525e45852a7356229b3488b7ea8f6759dee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 775b16afb1ea5c15e5203a241bb74509e04a1a573539f498c3a612c91b90b094dfbe8304d2d2158b5fd10d18d0949acbcf1f1cddcffe82edea5cc75aba73bfc8
|
7
|
+
data.tar.gz: 464e4c82997c7d0177f19bc39b351ff77fbb2584aada96aab67e6e5ec4a39ee482130c150f3322f3054309f343c9b80e2e7f169388aede15e6084dada4b6d4fc
|
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.
|
4
|
+
plate_api (1.2.4)
|
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.0225)
|
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 -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).
|
@@ -5,42 +5,44 @@ module PlateApi
|
|
5
5
|
attr_reader :handling_class
|
6
6
|
|
7
7
|
def initialize(handling_class, api_connector)
|
8
|
-
raise ArgumentError
|
9
|
-
raise ArgumentError
|
8
|
+
raise ArgumentError, "`handling_class` given for #new is not valid" unless handling_class
|
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
|
-
raise ArgumentError
|
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
|
-
|
21
|
-
return nil
|
22
|
+
raise ResponseError, result
|
22
23
|
end
|
23
24
|
end
|
24
25
|
|
25
26
|
def update(id, attributes)
|
26
|
-
raise ArgumentError
|
27
|
-
raise ArgumentError
|
28
|
-
|
27
|
+
raise ArgumentError, "`id` given for #update is not valid" unless id
|
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 })
|
29
31
|
|
30
32
|
if result["data"]
|
31
|
-
|
33
|
+
new_object(result["data"])
|
32
34
|
else
|
33
|
-
|
34
|
-
return nil
|
35
|
+
raise ResponseError, result
|
35
36
|
end
|
36
37
|
end
|
37
38
|
|
38
|
-
def create(parent, attributes, create_method
|
39
|
-
raise ArgumentError
|
40
|
-
raise ArgumentError
|
39
|
+
def create(parent, attributes, create_method = :post)
|
40
|
+
raise ArgumentError, "`parent` given for #create is not valid" unless parent
|
41
|
+
raise ArgumentError, "`attributes` given for #create is not valid" unless attributes.is_a?(Hash)
|
42
|
+
|
41
43
|
parameters = case create_method
|
42
44
|
when :post
|
43
|
-
{"data" => attributes}
|
45
|
+
{ "data" => attributes }
|
44
46
|
when :post_multipart
|
45
47
|
attributes
|
46
48
|
end
|
@@ -48,49 +50,70 @@ module PlateApi
|
|
48
50
|
result = @api_connector.send(create_method, collection_path(parent.class, parent.id), parameters)
|
49
51
|
|
50
52
|
if result["data"]
|
51
|
-
|
53
|
+
new_object(result["data"])
|
52
54
|
else
|
53
|
-
|
54
|
-
return nil
|
55
|
+
raise ResponseError, result
|
55
56
|
end
|
56
57
|
end
|
57
58
|
|
58
59
|
def delete(id)
|
59
|
-
raise ArgumentError
|
60
|
+
raise ArgumentError, "`id` given for #find is not valid" unless id
|
61
|
+
|
60
62
|
result = @api_connector.delete(resource_path(id))
|
61
63
|
if result["data"]
|
62
|
-
|
64
|
+
new_object(result["data"])
|
63
65
|
else
|
64
|
-
|
65
|
-
return nil
|
66
|
+
raise ResponseError, result
|
66
67
|
end
|
67
68
|
end
|
68
69
|
|
69
|
-
def index(parent_class, parent_id, extra_params={})
|
70
|
-
raise ArgumentError
|
71
|
-
raise ArgumentError
|
70
|
+
def index(parent_class, parent_id, extra_params = {}, return_raw = false)
|
71
|
+
raise ArgumentError, "`parent_id` given for #index is not valid" unless parent_id
|
72
|
+
raise ArgumentError, "`parent_class` given for #index is not valid" unless parent_class
|
72
73
|
|
73
74
|
result = @api_connector.get(collection_path(parent_class, parent_id), extra_params)
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
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
|
79
92
|
end
|
80
93
|
end
|
81
94
|
|
82
95
|
def index_total_count(parent)
|
83
96
|
result = @api_connector.get(collection_path(parent.class, parent.id), per_page: 1)
|
84
97
|
if result["meta"]
|
85
|
-
|
98
|
+
result["meta"]["pagination"]["total_records"]
|
86
99
|
else
|
87
|
-
|
88
|
-
return nil
|
100
|
+
raise ResponseError, result
|
89
101
|
end
|
90
102
|
end
|
91
103
|
|
92
104
|
private
|
93
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
|
+
|
94
117
|
# Construct a new object of @handling_class, given a succesful api_response
|
95
118
|
def new_object(api_response)
|
96
119
|
@handling_class.new(
|
@@ -105,15 +128,15 @@ module PlateApi
|
|
105
128
|
"#{@handling_class.api_name}/#{id}"
|
106
129
|
end
|
107
130
|
|
108
|
-
def collection_path(parent_class=nil, parent_id=nil)
|
109
|
-
if (parent_class
|
110
|
-
raise ArgumentError
|
131
|
+
def collection_path(parent_class = nil, parent_id = nil)
|
132
|
+
if (!parent_class.nil?) ^ (!parent_id.nil?)
|
133
|
+
raise ArgumentError, "An invalid combination `parent_class` and `parent_id` is given. Provide both or none."
|
111
134
|
end
|
112
135
|
|
113
136
|
if parent_class
|
114
137
|
"#{parent_class.api_name}/#{parent_id}/#{@handling_class.api_name}"
|
115
138
|
else
|
116
|
-
|
139
|
+
@handling_class.api_name.to_s
|
117
140
|
end
|
118
141
|
end
|
119
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
17
|
@connection = ::Faraday.new(url: base_api_endpoint) 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.
|
4
|
+
version: 1.2.5
|
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
|
@@ -195,6 +196,7 @@ files:
|
|
195
196
|
- lib/plate_api/post_request.rb
|
196
197
|
- lib/plate_api/put_request.rb
|
197
198
|
- lib/plate_api/request.rb
|
199
|
+
- lib/plate_api/response_error.rb
|
198
200
|
- lib/plate_api/version.rb
|
199
201
|
- plate_api.gemspec
|
200
202
|
homepage:
|