plate_api 1.1.8 → 1.2.5
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 +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:
|