ecoportal-api 0.7.1 → 0.8.2
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/CHANGELOG.md +81 -0
- data/ecoportal-api.gemspec +9 -7
- data/lib/ecoportal/api/common/base_model.rb +1 -1
- data/lib/ecoportal/api/common/batch_operation.rb +7 -1
- data/lib/ecoportal/api/common/batch_response.rb +2 -2
- data/lib/ecoportal/api/common/client.rb +9 -2
- data/lib/ecoportal/api/common/response.rb +1 -1
- data/lib/ecoportal/api/common/wrapped_response.rb +2 -2
- data/lib/ecoportal/api/internal/account.rb +49 -0
- data/lib/ecoportal/api/v1/people.rb +27 -16
- data/lib/ecoportal/api/v1/person.rb +19 -3
- data/lib/ecoportal/api/version.rb +1 -1
- metadata +55 -43
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ba5ffaf73f0c065f6aa6572b5ac82132af9ee19f61692f80605ee156b29d24ee
|
4
|
+
data.tar.gz: d82d89d09d4ae1edb88a3dc01f613478e7bd5ab38184dadb7c507e53e65bae54
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f3b637bd2bc2970b7f46eb8d92edc6b83a38ef4489d6d185e4cea47d8a5e6cd774d9bf9e8712bd0d76aa9a52c770e89207f0c7af283fcb85bc1cb481d31fca10
|
7
|
+
data.tar.gz: 6a5dd4dd6fd2691971c526e79d2278a84351484a0d9ffdd93e3604392f4b59e21515255001c51016835a37506496d1d292f33c4dc69d4db7042e9c3d521721c3
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,83 @@
|
|
1
1
|
# Change Log
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
|
4
|
+
## [0.8.2] - 2021-02-xx
|
5
|
+
|
6
|
+
### Added
|
7
|
+
|
8
|
+
### Fixed
|
9
|
+
- `Ecoportal::API::V1::Person#filter_tags=` should ignore `nil` values
|
10
|
+
|
11
|
+
### Changed
|
12
|
+
- removed all the namespace under `Ecoportal::API::V2` as that is managed by `ecoportal-api-oozes` gem
|
13
|
+
- url: https://rubygems.org/gems/ecoportal-api-oozes
|
14
|
+
- `Ecoportal::API::V1::People.get` should return a `Person` object
|
15
|
+
- observe that it was returning the `WrappedResponse` (an `Enumerable` helper that works better when getting multiple people).
|
16
|
+
|
17
|
+
## [0.7.5] - 2021-02-12
|
18
|
+
|
19
|
+
### Added
|
20
|
+
|
21
|
+
### Fixed
|
22
|
+
- `pretty_print` method was colliding with `pp` module:
|
23
|
+
- renamed to `Ecoportal::API::Common::BaseModel#print_pretty`
|
24
|
+
- renamed to `Ecoportal::API::Common::BatchReponse#print_pretty`
|
25
|
+
- renamed to `Ecoportal::API::Common::Reponse#print_pretty`
|
26
|
+
- renamed to `Ecoportal::API::Common::WrappedResponse#print_pretty`
|
27
|
+
|
28
|
+
### Changed
|
29
|
+
- forgot to change `Ecoportal::API::VERSION` during last release
|
30
|
+
|
31
|
+
## [0.7.4] - 2021-01-2
|
32
|
+
|
33
|
+
### Added
|
34
|
+
|
35
|
+
### Fixed
|
36
|
+
- changed `compact` to `compact!`:
|
37
|
+
- `Ecoportal::API::V1::Person#filter_tags=`
|
38
|
+
- `Ecoportal::API::Internal::Account#policy_group_ids=`
|
39
|
+
- `Ecoportal::API::Internal::Account#login_provider_ids=`
|
40
|
+
- `Ecoportal::API::Internal::Account#starred_ids=`
|
41
|
+
|
42
|
+
### Changed
|
43
|
+
|
44
|
+
## [0.7.3] - 2020-11-30
|
45
|
+
|
46
|
+
### Added
|
47
|
+
|
48
|
+
### Fixed
|
49
|
+
- `Ecoportal::API::V1::Person#email=`: was not showing the incorrect value in the error message
|
50
|
+
- added `compact` to remove `null` values on:
|
51
|
+
- `Ecoportal::API::V1::Person#filter_tags=`
|
52
|
+
- `Ecoportal::API::Internal::Account#policy_group_ids=`
|
53
|
+
- `Ecoportal::API::Internal::Account#login_provider_ids=`
|
54
|
+
- `Ecoportal::API::Internal::Account#starred_ids=`
|
55
|
+
|
56
|
+
### Changed
|
57
|
+
|
58
|
+
|
59
|
+
## [0.7.2] - 2020-10-19
|
60
|
+
|
61
|
+
### Added
|
62
|
+
- `Ecoportal::API::V1::Person#email=`:
|
63
|
+
- do a minimum validation (no blanks in the email)
|
64
|
+
- set in lower case (as this is how it's in the server)
|
65
|
+
### Fixed
|
66
|
+
- `Ecoportal::API::V1::People#each`: when `silent` it shouldn't print a blank line
|
67
|
+
- fixed so they return empty array `[]` when `nil`:
|
68
|
+
- `Ecoportal::API::V1::Person#filter_tags`
|
69
|
+
- `Ecoportal::API::Internal::Account#policy_group_ids`
|
70
|
+
- `Ecoportal::API::Internal::Account#login_provider_ids`
|
71
|
+
- `Ecoportal::API::Internal::Account#starred_ids`
|
72
|
+
### Changed
|
73
|
+
- made it so some methods the `Array` with `uniq` values:
|
74
|
+
- `Ecoportal::API::V1::Person#filter_tags=`
|
75
|
+
- `Ecoportal::API::Internal::Account#policy_group_ids=`
|
76
|
+
- made it so it only updates the keys defined in the `Hash` passed to the setter:
|
77
|
+
- `Ecoportal::API::Internal::Account#permissions_custom=`
|
78
|
+
- `Ecoportal::API::Internal::Account#preferences=`
|
79
|
+
|
80
|
+
|
4
81
|
## [0.7.1] - 2020-09-30
|
5
82
|
|
6
83
|
### Added
|
@@ -12,6 +89,10 @@ All notable changes to this project will be documented in this file.
|
|
12
89
|
## [0.7.0] - 2020-09-11
|
13
90
|
|
14
91
|
### Added
|
92
|
+
- added hook, **private** method `body_data` for child classes to define behaviour on `response.body` to
|
93
|
+
- `Ecoportal::API::V1::People`
|
94
|
+
- `Ecoportal::API::Common::BatchOperation`
|
95
|
+
|
15
96
|
### Changed
|
16
97
|
- `Ecoportal::API::Internal::Permissions`: **update for new abilities of ecoPortal release `1.5.2`**
|
17
98
|
- decoupled abilities: `person_core` into `person_core_create`, `person_core_edit`
|
data/ecoportal-api.gemspec
CHANGED
@@ -13,6 +13,8 @@ Gem::Specification.new do |spec|
|
|
13
13
|
spec.homepage = "https://www.ecoportal.com"
|
14
14
|
spec.licenses = %w[MIT]
|
15
15
|
|
16
|
+
spec.required_ruby_version = '>= 2.4.4'
|
17
|
+
|
16
18
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
17
19
|
f.match(%r{^(test|spec|features)/})
|
18
20
|
end
|
@@ -20,13 +22,13 @@ Gem::Specification.new do |spec|
|
|
20
22
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
23
|
spec.require_paths = ["lib"]
|
22
24
|
|
23
|
-
spec.add_development_dependency "bundler", "
|
24
|
-
spec.add_development_dependency "
|
25
|
-
spec.add_development_dependency "
|
26
|
-
spec.add_development_dependency "yard", "
|
27
|
-
spec.add_development_dependency "redcarpet", "
|
28
|
-
spec.add_development_dependency "pry" , "~> 0.
|
25
|
+
spec.add_development_dependency "bundler", ">= 2.2.11", "< 2.3"
|
26
|
+
spec.add_development_dependency "rspec", ">= 3.10.0", "< 3.11"
|
27
|
+
spec.add_development_dependency "rake", ">= 13.0.3", "< 13.1"
|
28
|
+
spec.add_development_dependency "yard", ">= 0.9.26", "< 0.10"
|
29
|
+
spec.add_development_dependency "redcarpet", ">= 3.5.1", "< 3.6"
|
30
|
+
spec.add_development_dependency "pry" , "~> 0.14"
|
29
31
|
|
30
|
-
spec.add_dependency 'http', '~>
|
32
|
+
spec.add_dependency 'http', '~> 4.4.1', "< 5"
|
31
33
|
spec.add_dependency 'hash-polyfill', '~> 0'
|
32
34
|
end
|
@@ -27,7 +27,7 @@ module Ecoportal
|
|
27
27
|
|
28
28
|
log(:info) { "Processing batch responses" }
|
29
29
|
|
30
|
-
response.body.each.with_index do |subresponse, idx|
|
30
|
+
body_data(response.body).each.with_index do |subresponse, idx|
|
31
31
|
callback = @operations[idx][:callback]
|
32
32
|
status = subresponse["status"]
|
33
33
|
body = subresponse["response"]
|
@@ -97,6 +97,12 @@ module Ecoportal
|
|
97
97
|
|
98
98
|
private
|
99
99
|
|
100
|
+
# Hook for other api versions to obtain the raw data of a response
|
101
|
+
# @note this was introduced to allow `v2` to reuse this class
|
102
|
+
def body_data(body)
|
103
|
+
body
|
104
|
+
end
|
105
|
+
|
100
106
|
def log_batch_response(operation, response)
|
101
107
|
level = response.success?? :debug : :warn
|
102
108
|
log(:info) { "BATCH #{operation[:method]} #{operation[:path]}" }
|
@@ -119,11 +119,18 @@ module Ecoportal
|
|
119
119
|
Ecoportal::API::Common::Response.new(response)
|
120
120
|
end
|
121
121
|
|
122
|
-
# Creates a HTTP object adding the `X-ApiKey` param to the header.
|
122
|
+
# Creates a HTTP object adding the `X-ApiKey` or `X-ECOPORTAL-API-KEY` param to the header, depending on the API version.
|
123
123
|
# @note It configures HTTP so it only allows body data in json format.
|
124
124
|
# @return [HTTP] HTTP object.
|
125
125
|
def base_request
|
126
|
-
@base_request ||=
|
126
|
+
@base_request ||= begin
|
127
|
+
case @version
|
128
|
+
when "v2"
|
129
|
+
HTTP.headers("X-ECOPORTAL-API-KEY" => @api_key).accept(:json)
|
130
|
+
else
|
131
|
+
HTTP.headers("X-ApiKey" => @api_key).accept(:json)
|
132
|
+
end
|
133
|
+
end
|
127
134
|
end
|
128
135
|
|
129
136
|
# Full URl builder of the request
|
@@ -13,14 +13,49 @@ module Ecoportal
|
|
13
13
|
embeds_one :preferences, klass: :preferences_class
|
14
14
|
|
15
15
|
# Sets the `policy_group_ids`
|
16
|
+
# @note it preserves the original order
|
17
|
+
# @param value [Array<String>] the policy group ids to be set.
|
16
18
|
def policy_group_ids=(value)
|
17
19
|
unless value.is_a?(Array)
|
18
20
|
raise "policy_group_ids= needs to be passed an Array, got #{value.class}"
|
19
21
|
end
|
20
22
|
|
23
|
+
value.uniq!
|
21
24
|
ini_ids = (original_doc && original_doc["policy_group_ids"]) || []
|
22
25
|
# preserve original order to avoid false updates
|
23
26
|
doc["policy_group_ids"] = (ini_ids & value) + (value - ini_ids)
|
27
|
+
doc["policy_group_ids"].compact
|
28
|
+
end
|
29
|
+
|
30
|
+
# @return [Array<String>] the policy group ids of this user.
|
31
|
+
def policy_group_ids
|
32
|
+
doc["policy_group_ids"] ||= []
|
33
|
+
end
|
34
|
+
|
35
|
+
# Sets the `login_provider_ids`
|
36
|
+
def login_provider_ids=(value)
|
37
|
+
unless value.is_a?(Array)
|
38
|
+
raise "login_provider_ids= needs to be passed an Array, got #{value.class}"
|
39
|
+
end
|
40
|
+
doc["login_provider_ids"] = value.compact
|
41
|
+
end
|
42
|
+
|
43
|
+
# @return [Array<String>] the login provider ids of this user.
|
44
|
+
def login_provider_ids
|
45
|
+
doc["login_provider_ids"] ||= []
|
46
|
+
end
|
47
|
+
|
48
|
+
# Sets the `starred_ids`
|
49
|
+
def starred_ids=(value)
|
50
|
+
unless value.is_a?(Array)
|
51
|
+
raise "starred_ids= needs to be passed an Array, got #{value.class}"
|
52
|
+
end
|
53
|
+
doc["starred_ids"] = value.compact
|
54
|
+
end
|
55
|
+
|
56
|
+
# @return [Array<String>] the starred page ids of this user.
|
57
|
+
def starred_ids
|
58
|
+
doc["starred_ids"] ||= []
|
24
59
|
end
|
25
60
|
|
26
61
|
# Sets the `permissions_preset`.
|
@@ -37,6 +72,20 @@ module Ecoportal
|
|
37
72
|
self.permissions_preset.nil? ? "custom" : self.permissions_preset
|
38
73
|
end
|
39
74
|
|
75
|
+
# It preserves the values of keys that are not defined in `value`.
|
76
|
+
# @param value [Hash] the abilities that you want to update.
|
77
|
+
def permissions_custom=(value)
|
78
|
+
doc["permissions_custom"] ||= {}
|
79
|
+
doc["permissions_custom"].merge!(value)
|
80
|
+
end
|
81
|
+
|
82
|
+
# It preserves the values of keys that are not defined in `value`.
|
83
|
+
# @param value [Hash] the preferences that you want to update.
|
84
|
+
def preferences=(value)
|
85
|
+
doc["preferences"] ||= {}
|
86
|
+
doc["preferences"].merge!(value)
|
87
|
+
end
|
88
|
+
|
40
89
|
def as_json
|
41
90
|
super.tap do |hash|
|
42
91
|
if preset == "custom"
|
@@ -33,14 +33,15 @@ module Ecoportal
|
|
33
33
|
def each(params: {}, silent: false, &block)
|
34
34
|
return to_enum(:each, params: params, silent: silent) unless block
|
35
35
|
cursor_id = nil; results = 0
|
36
|
-
puts "\n"
|
36
|
+
puts "\n" unless silent
|
37
37
|
loop do
|
38
38
|
params.update(cursor_id: cursor_id) if cursor_id
|
39
39
|
response = client.get("/people", params: params)
|
40
|
-
|
40
|
+
body = body_data(response.body)
|
41
|
+
raise "Request failed - Status #{response.status}: #{body}" unless response.success?
|
41
42
|
|
42
|
-
unless silent || (total =
|
43
|
-
results +=
|
43
|
+
unless silent || (total = body["total_results"]) == 0
|
44
|
+
results += body["results"].length
|
44
45
|
percent = results * 100 / total
|
45
46
|
msg = "People GET"
|
46
47
|
msg += " (search=#{params[:q]})" if params.key?(:q)
|
@@ -48,10 +49,10 @@ module Ecoportal
|
|
48
49
|
$stdout.flush
|
49
50
|
end
|
50
51
|
|
51
|
-
|
52
|
+
body["results"].each do |person|
|
52
53
|
yield person_class.new(person)
|
53
54
|
end
|
54
|
-
break unless (cursor_id =
|
55
|
+
break unless (cursor_id = body["cursor_id"])
|
55
56
|
end
|
56
57
|
self
|
57
58
|
end
|
@@ -70,10 +71,13 @@ module Ecoportal
|
|
70
71
|
# Gets a person via api.
|
71
72
|
# @note if the request has `success?` the returned `object.result` gives an object with that `Person`.
|
72
73
|
# @param doc [String, Hash, Person] data containing an `id` (internal or external) of the target person.
|
73
|
-
# @return [
|
74
|
+
# @return [Person] the person with `id` (internal or external) contained in `doc`.
|
74
75
|
def get(doc)
|
75
|
-
|
76
|
-
|
76
|
+
id = get_id(doc)
|
77
|
+
response = client.get("/people/"+CGI.escape(id))
|
78
|
+
body = body_data(response.body)
|
79
|
+
return person_class.new(body) if response.success?
|
80
|
+
raise "Could not get person #{id} - Error #{reponse.status}: #{body}"
|
77
81
|
end
|
78
82
|
|
79
83
|
# Requests an update of a person via api.
|
@@ -107,7 +111,7 @@ module Ecoportal
|
|
107
111
|
# @return [Response] an object with the api response.
|
108
112
|
def delete(doc)
|
109
113
|
id = get_id(doc)
|
110
|
-
|
114
|
+
client.delete("/people/"+CGI.escape(id))
|
111
115
|
end
|
112
116
|
|
113
117
|
# Creates a `BatchOperation` and yields it to the given bock.
|
@@ -150,13 +154,13 @@ module Ecoportal
|
|
150
154
|
JobStatus = Struct.new(:id, :complete?, :errored?, :progress)
|
151
155
|
def job_status(job_id)
|
152
156
|
response = client.get("/people/job/#{CGI.escape(job_id)}/status")
|
153
|
-
|
157
|
+
body = body_data(response.body)
|
154
158
|
raise "Status error" unless response.success?
|
155
159
|
JobStatus.new(
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
+
body["id"],
|
161
|
+
body["complete"],
|
162
|
+
body["errored"],
|
163
|
+
body["progress"]
|
160
164
|
)
|
161
165
|
end
|
162
166
|
|
@@ -186,11 +190,18 @@ module Ecoportal
|
|
186
190
|
job_id = nil
|
187
191
|
client.without_response_logging do
|
188
192
|
client.post("/people/job", data: operation.as_json).tap do |response|
|
189
|
-
job_id = response.body["id"]
|
193
|
+
job_id = body_data(response.body)["id"]
|
190
194
|
end
|
191
195
|
end
|
192
196
|
job_id
|
193
197
|
end
|
198
|
+
|
199
|
+
# Hook for other api versions to obtain the raw data of a response
|
200
|
+
# @note this was introduced to allow `v2` to reuse this class
|
201
|
+
def body_data(body)
|
202
|
+
body
|
203
|
+
end
|
204
|
+
|
194
205
|
end
|
195
206
|
end
|
196
207
|
end
|
@@ -15,6 +15,7 @@ module Ecoportal
|
|
15
15
|
embeds_one :details, nullable: true, klass: :person_details_class
|
16
16
|
|
17
17
|
VALID_TAG_REGEX = /^[A-Za-z0-9 &_'\/-]+$/
|
18
|
+
VALID_EMAIL_REGEX = /^[^@\s]+@[^@\s]+\.[^@\s]+$/
|
18
19
|
|
19
20
|
# Gets the supervisor (`Person`) of this person, with given his `supervisor_id`.
|
20
21
|
#
|
@@ -41,24 +42,39 @@ module Ecoportal
|
|
41
42
|
self.supervisor_id = person&.id || person&.external_id
|
42
43
|
end
|
43
44
|
|
45
|
+
# Sets the email of a person.
|
46
|
+
# @param value [String, nil] the email of this person.
|
47
|
+
def email=(value)
|
48
|
+
unless !value || value.match(VALID_EMAIL_REGEX)
|
49
|
+
raise "Invalid email #{value.inspect}"
|
50
|
+
end
|
51
|
+
doc["email"] = value&.downcase
|
52
|
+
end
|
53
|
+
|
44
54
|
# Validates the string tags of the array, and sets the `filter_tags` property of the account.
|
45
|
-
# @note all is set in upper case.
|
55
|
+
# @note all is set in upper case and preserves the original order.
|
46
56
|
# @raise [Exception] if there was any invalid string tag.
|
47
57
|
# @param value [Array<String>] array of tags.
|
48
58
|
def filter_tags=(value)
|
49
59
|
unless value.is_a?(Array)
|
50
60
|
raise "filter_tags= needs to be passed an Array, got #{value.class}"
|
51
61
|
end
|
52
|
-
end_tags = value.map do |tag|
|
62
|
+
end_tags = value.compact.map do |tag|
|
53
63
|
unless tag.match(VALID_TAG_REGEX)
|
54
64
|
raise "Invalid filter tag #{tag.inspect}"
|
55
65
|
end
|
56
66
|
tag.upcase
|
57
|
-
end
|
67
|
+
end.uniq
|
58
68
|
|
59
69
|
ini_tags = (original_doc && original_doc["filter_tags"]) || []
|
60
70
|
# preserve original order to avoid false updates
|
61
71
|
doc["filter_tags"] = (ini_tags & end_tags) + (end_tags - ini_tags)
|
72
|
+
doc["filter_tags"].compact
|
73
|
+
end
|
74
|
+
|
75
|
+
# @return [Array<String>] the filter tags of this person.
|
76
|
+
def filter_tags
|
77
|
+
doc["filter_tags"] ||= []
|
62
78
|
end
|
63
79
|
|
64
80
|
def as_json
|
metadata
CHANGED
@@ -1,137 +1,149 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ecoportal-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tapio Saarinen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '2.1'
|
20
17
|
- - ">="
|
21
18
|
- !ruby/object:Gem::Version
|
22
|
-
version: 2.
|
19
|
+
version: 2.2.11
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '2.3'
|
23
23
|
type: :development
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
|
-
- - "~>"
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '2.1'
|
30
27
|
- - ">="
|
31
28
|
- !ruby/object:Gem::Version
|
32
|
-
version: 2.
|
29
|
+
version: 2.2.11
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '2.3'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
|
-
name:
|
34
|
+
name: rspec
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
|
-
- - "
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: 3.10.0
|
40
|
+
- - "<"
|
38
41
|
- !ruby/object:Gem::Version
|
39
|
-
version: '
|
42
|
+
version: '3.11'
|
40
43
|
type: :development
|
41
44
|
prerelease: false
|
42
45
|
version_requirements: !ruby/object:Gem::Requirement
|
43
46
|
requirements:
|
44
|
-
- - "
|
47
|
+
- - ">="
|
45
48
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
49
|
+
version: 3.10.0
|
50
|
+
- - "<"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '3.11'
|
47
53
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
54
|
+
name: rake
|
49
55
|
requirement: !ruby/object:Gem::Requirement
|
50
56
|
requirements:
|
51
|
-
- - "~>"
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '3'
|
54
57
|
- - ">="
|
55
58
|
- !ruby/object:Gem::Version
|
56
|
-
version:
|
59
|
+
version: 13.0.3
|
60
|
+
- - "<"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '13.1'
|
57
63
|
type: :development
|
58
64
|
prerelease: false
|
59
65
|
version_requirements: !ruby/object:Gem::Requirement
|
60
66
|
requirements:
|
61
|
-
- - "~>"
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
version: '3'
|
64
67
|
- - ">="
|
65
68
|
- !ruby/object:Gem::Version
|
66
|
-
version:
|
69
|
+
version: 13.0.3
|
70
|
+
- - "<"
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '13.1'
|
67
73
|
- !ruby/object:Gem::Dependency
|
68
74
|
name: yard
|
69
75
|
requirement: !ruby/object:Gem::Requirement
|
70
76
|
requirements:
|
71
|
-
- - "~>"
|
72
|
-
- !ruby/object:Gem::Version
|
73
|
-
version: '0.9'
|
74
77
|
- - ">="
|
75
78
|
- !ruby/object:Gem::Version
|
76
|
-
version: 0.9.
|
79
|
+
version: 0.9.26
|
80
|
+
- - "<"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.10'
|
77
83
|
type: :development
|
78
84
|
prerelease: false
|
79
85
|
version_requirements: !ruby/object:Gem::Requirement
|
80
86
|
requirements:
|
81
|
-
- - "~>"
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
version: '0.9'
|
84
87
|
- - ">="
|
85
88
|
- !ruby/object:Gem::Version
|
86
|
-
version: 0.9.
|
89
|
+
version: 0.9.26
|
90
|
+
- - "<"
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '0.10'
|
87
93
|
- !ruby/object:Gem::Dependency
|
88
94
|
name: redcarpet
|
89
95
|
requirement: !ruby/object:Gem::Requirement
|
90
96
|
requirements:
|
91
97
|
- - ">="
|
92
98
|
- !ruby/object:Gem::Version
|
93
|
-
version: 3.5.
|
94
|
-
- - "
|
99
|
+
version: 3.5.1
|
100
|
+
- - "<"
|
95
101
|
- !ruby/object:Gem::Version
|
96
|
-
version: '3.
|
102
|
+
version: '3.6'
|
97
103
|
type: :development
|
98
104
|
prerelease: false
|
99
105
|
version_requirements: !ruby/object:Gem::Requirement
|
100
106
|
requirements:
|
101
107
|
- - ">="
|
102
108
|
- !ruby/object:Gem::Version
|
103
|
-
version: 3.5.
|
104
|
-
- - "
|
109
|
+
version: 3.5.1
|
110
|
+
- - "<"
|
105
111
|
- !ruby/object:Gem::Version
|
106
|
-
version: '3.
|
112
|
+
version: '3.6'
|
107
113
|
- !ruby/object:Gem::Dependency
|
108
114
|
name: pry
|
109
115
|
requirement: !ruby/object:Gem::Requirement
|
110
116
|
requirements:
|
111
117
|
- - "~>"
|
112
118
|
- !ruby/object:Gem::Version
|
113
|
-
version: '0.
|
119
|
+
version: '0.14'
|
114
120
|
type: :development
|
115
121
|
prerelease: false
|
116
122
|
version_requirements: !ruby/object:Gem::Requirement
|
117
123
|
requirements:
|
118
124
|
- - "~>"
|
119
125
|
- !ruby/object:Gem::Version
|
120
|
-
version: '0.
|
126
|
+
version: '0.14'
|
121
127
|
- !ruby/object:Gem::Dependency
|
122
128
|
name: http
|
123
129
|
requirement: !ruby/object:Gem::Requirement
|
124
130
|
requirements:
|
125
131
|
- - "~>"
|
126
132
|
- !ruby/object:Gem::Version
|
127
|
-
version:
|
133
|
+
version: 4.4.1
|
134
|
+
- - "<"
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
version: '5'
|
128
137
|
type: :runtime
|
129
138
|
prerelease: false
|
130
139
|
version_requirements: !ruby/object:Gem::Requirement
|
131
140
|
requirements:
|
132
141
|
- - "~>"
|
133
142
|
- !ruby/object:Gem::Version
|
134
|
-
version:
|
143
|
+
version: 4.4.1
|
144
|
+
- - "<"
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: '5'
|
135
147
|
- !ruby/object:Gem::Dependency
|
136
148
|
name: hash-polyfill
|
137
149
|
requirement: !ruby/object:Gem::Requirement
|
@@ -218,7 +230,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
218
230
|
requirements:
|
219
231
|
- - ">="
|
220
232
|
- !ruby/object:Gem::Version
|
221
|
-
version:
|
233
|
+
version: 2.4.4
|
222
234
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
223
235
|
requirements:
|
224
236
|
- - ">="
|