setsuzoku 0.15.5 → 0.15.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +35 -0
- data/Gemfile.lock +30 -19
- data/lib/setsuzoku/plugin.rb +1 -1
- data/lib/setsuzoku/service/web_service/api_strategies/rest_strategy.rb +82 -52
- data/lib/setsuzoku/version.rb +2 -2
- data/setsuzoku.gemspec +5 -5
- metadata +35 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2845af66689814f88f37e06cd20516904d7000d8eb5e7b65893db42f93e47e18
|
4
|
+
data.tar.gz: d85e64ea68bf642ce3ac6dda479575d8a34b9896b15e14332072cb35692d65d5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8409e05401d6ce653ae9704058a6a5874ffb63687d467514cb7fc69fd3c37dfd7c9a1931d843e558f4726f6a5a5355edb6a841dd888384a52959925e570575aa
|
7
|
+
data.tar.gz: d2829f923f90faccaf2afdc7449af20948fc85234a0eb257e6b3d7aece01db815c24e9360cc168c4af45b6bb84cb16e3ba43c972982c8827f02731532ed7cc1e
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# This workflow uses actions that are not certified by GitHub.
|
2
|
+
# They are provided by a third-party and are governed by
|
3
|
+
# separate terms of service, privacy policy, and support
|
4
|
+
# documentation.
|
5
|
+
# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
|
6
|
+
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
|
7
|
+
|
8
|
+
name: Ruby
|
9
|
+
|
10
|
+
on:
|
11
|
+
push:
|
12
|
+
branches: [ "master" ]
|
13
|
+
pull_request:
|
14
|
+
branches: [ "master" ]
|
15
|
+
|
16
|
+
permissions:
|
17
|
+
contents: read
|
18
|
+
|
19
|
+
jobs:
|
20
|
+
test:
|
21
|
+
|
22
|
+
runs-on: ubuntu-latest
|
23
|
+
strategy:
|
24
|
+
matrix:
|
25
|
+
ruby-version: ['2.7.7', '3.2.2']
|
26
|
+
|
27
|
+
steps:
|
28
|
+
- uses: actions/checkout@v4
|
29
|
+
- name: Set up Ruby
|
30
|
+
uses: ruby/setup-ruby@v1
|
31
|
+
with:
|
32
|
+
ruby-version: ${{ matrix.ruby-version }}
|
33
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
34
|
+
- name: Run tests
|
35
|
+
run: bundle exec rake
|
data/Gemfile.lock
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
setsuzoku (0.15.
|
5
|
-
activesupport (>= 5.0, <
|
4
|
+
setsuzoku (0.15.6)
|
5
|
+
activesupport (>= 5.0, < 8)
|
6
6
|
faraday (>= 2.7.10, < 3.0)
|
7
|
+
faraday-multipart (>= 1.0.4, < 2.0)
|
7
8
|
nokogiri (>= 1.10, < 2.0)
|
8
9
|
sorbet-runtime (>= 0.5, < 1.0)
|
9
10
|
|
@@ -16,27 +17,35 @@ GEM
|
|
16
17
|
minitest (>= 5.1)
|
17
18
|
tzinfo (~> 2.0)
|
18
19
|
zeitwerk (~> 2.3)
|
19
|
-
addressable (2.
|
20
|
-
public_suffix (>= 2.0.2, <
|
20
|
+
addressable (2.8.6)
|
21
|
+
public_suffix (>= 2.0.2, < 6.0)
|
21
22
|
concurrent-ruby (1.2.2)
|
22
|
-
crack (0.4.
|
23
|
-
|
23
|
+
crack (0.4.5)
|
24
|
+
rexml
|
24
25
|
diff-lcs (1.4.2)
|
25
26
|
faraday (2.7.10)
|
26
27
|
faraday-net_http (>= 2.0, < 3.1)
|
27
28
|
ruby2_keywords (>= 0.0.4)
|
29
|
+
faraday-multipart (1.0.4)
|
30
|
+
multipart-post (~> 2)
|
28
31
|
faraday-net_http (3.0.2)
|
29
32
|
hashdiff (1.0.1)
|
30
33
|
i18n (1.14.1)
|
31
34
|
concurrent-ruby (~> 1.0)
|
32
|
-
mini_portile2 (2.8.
|
35
|
+
mini_portile2 (2.8.5)
|
33
36
|
minitest (5.19.0)
|
37
|
+
multipart-post (2.4.0)
|
34
38
|
nokogiri (1.15.4)
|
35
39
|
mini_portile2 (~> 2.8.2)
|
36
40
|
racc (~> 1.4)
|
37
|
-
|
41
|
+
nokogiri (1.15.4-arm64-darwin)
|
42
|
+
racc (~> 1.4)
|
43
|
+
nokogiri (1.15.4-x86_64-linux)
|
44
|
+
racc (~> 1.4)
|
45
|
+
public_suffix (5.0.4)
|
38
46
|
racc (1.7.1)
|
39
|
-
rake (
|
47
|
+
rake (13.1.0)
|
48
|
+
rexml (3.2.6)
|
40
49
|
rspec (3.8.0)
|
41
50
|
rspec-core (~> 3.8.0)
|
42
51
|
rspec-expectations (~> 3.8.0)
|
@@ -51,29 +60,31 @@ GEM
|
|
51
60
|
rspec-support (~> 3.8.0)
|
52
61
|
rspec-support (3.8.3)
|
53
62
|
ruby2_keywords (0.0.5)
|
54
|
-
|
55
|
-
|
56
|
-
sorbet-static (= 0.5.10030)
|
63
|
+
sorbet (0.5.11151)
|
64
|
+
sorbet-static (= 0.5.11151)
|
57
65
|
sorbet-runtime (0.5.10972)
|
58
|
-
sorbet-static (0.5.
|
66
|
+
sorbet-static (0.5.11151-universal-darwin)
|
67
|
+
sorbet-static (0.5.11151-x86_64-linux)
|
59
68
|
tzinfo (2.0.6)
|
60
69
|
concurrent-ruby (~> 1.0)
|
61
|
-
webmock (3.
|
62
|
-
addressable (>= 2.
|
70
|
+
webmock (3.19.1)
|
71
|
+
addressable (>= 2.8.0)
|
63
72
|
crack (>= 0.3.2)
|
64
73
|
hashdiff (>= 0.4.0, < 2.0.0)
|
65
74
|
zeitwerk (2.6.11)
|
66
75
|
|
67
76
|
PLATFORMS
|
77
|
+
arm64-darwin-23
|
68
78
|
ruby
|
79
|
+
x86_64-linux
|
69
80
|
|
70
81
|
DEPENDENCIES
|
71
|
-
bundler (~>
|
72
|
-
rake (~>
|
82
|
+
bundler (~> 2.4.22)
|
83
|
+
rake (~> 13.0)
|
73
84
|
rspec (= 3.8)
|
74
85
|
setsuzoku!
|
75
86
|
sorbet (>= 0.5, < 1.0)
|
76
|
-
webmock (= 3.
|
87
|
+
webmock (= 3.19.1)
|
77
88
|
|
78
89
|
BUNDLED WITH
|
79
|
-
|
90
|
+
2.4.22
|
data/lib/setsuzoku/plugin.rb
CHANGED
@@ -87,7 +87,7 @@ module Setsuzoku
|
|
87
87
|
self.registered_instance = options[:registering_instance]
|
88
88
|
if context[:service] && context[:service][:type]
|
89
89
|
service = AVAILABLE_SERVICES[context[:service][:type]]
|
90
|
-
self.service = service.new(service_config)
|
90
|
+
self.service = service.new(**service_config)
|
91
91
|
end
|
92
92
|
self.config_context = context.merge(options.except(:registering_instance))
|
93
93
|
self
|
@@ -4,6 +4,8 @@
|
|
4
4
|
require 'active_support/json'
|
5
5
|
require 'active_support/core_ext/hash/indifferent_access'
|
6
6
|
require 'active_support/core_ext/string/access'
|
7
|
+
require 'faraday'
|
8
|
+
require 'faraday/multipart'
|
7
9
|
|
8
10
|
module Setsuzoku
|
9
11
|
module Service
|
@@ -35,32 +37,49 @@ module Setsuzoku
|
|
35
37
|
# attachment_urls - 'Array<String>' List of attachment urls to be attached as form files.
|
36
38
|
#
|
37
39
|
# @return [Hash] the parsed response object.
|
38
|
-
sig
|
40
|
+
sig do
|
41
|
+
override.params(request: RestAPIRequest, action_details: T::Hash[T.untyped, T.untyped],
|
42
|
+
options: T.untyped).returns(Faraday::Response)
|
43
|
+
end
|
39
44
|
def perform_external_call(request:, action_details:, **options)
|
40
|
-
request_properties =
|
41
|
-
|
45
|
+
request_properties = get_request_properties(action_name: request.action,
|
46
|
+
action_details: action_details, req_params: request.body)
|
47
|
+
request_options = self.request_options(request_properties[:request_format],
|
48
|
+
action_details[:actions][request.action])
|
42
49
|
authorization = request_options.delete(:authorization)
|
43
|
-
full_request =
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
50
|
+
full_request = formulate_request(request_properties, request_options)
|
51
|
+
|
52
|
+
connection = Faraday.new(url: request_properties[:formatted_full_url],
|
53
|
+
request: { params_encoder: Faraday::FlatParamsEncoder }) do |faraday|
|
54
|
+
# Request type middle-ware
|
55
|
+
if options[:attachment_urls].present? || request_options.dig(:headers,
|
56
|
+
:'Content-Type')&.include?('multipart')
|
57
|
+
faraday.request(:multipart)
|
58
|
+
else
|
59
|
+
faraday.request(:url_encoded)
|
60
|
+
end
|
61
|
+
|
62
|
+
# Logging
|
63
|
+
faraday.response :logger, Logger.new($stdout), bodies: true if Rails.env.development?
|
64
|
+
|
65
|
+
if !request.without_headers && authorization
|
66
|
+
# updated authorization with updated faraday
|
67
|
+
# https://lostisland.github.io/faraday/#/middleware/included/authentication
|
68
|
+
if authorization.key?(:token)
|
69
|
+
faraday.request(:authorization, 'Bearer', authorization[:token])
|
70
|
+
elsif authorization.key?(:basic_auth)
|
71
|
+
faraday.request(:authorization, :basic, authorization[:basic_auth][:username],
|
72
|
+
authorization[:basic_auth][:password])
|
57
73
|
end
|
58
74
|
end
|
75
|
+
|
59
76
|
faraday.adapter Faraday.default_adapter
|
60
77
|
end
|
78
|
+
|
79
|
+
# Attachments URLs
|
61
80
|
attachment_urls = options[:attachment_url] || options[:attachment_urls]
|
62
81
|
if attachment_urls.present?
|
63
|
-
resp =
|
82
|
+
resp = connection.post do |req|
|
64
83
|
payload = {}
|
65
84
|
# create an array to just iterate over for 1 or many urls
|
66
85
|
attachment_urls = [attachment_urls] if options[:attachment_url]
|
@@ -79,24 +98,36 @@ module Setsuzoku
|
|
79
98
|
end
|
80
99
|
else
|
81
100
|
if request.without_headers
|
82
|
-
|
101
|
+
connection.headers = {}
|
83
102
|
elsif request_options[:headers]
|
84
|
-
|
103
|
+
connection.headers = (connection.headers || {}).merge(request_options[:headers])
|
104
|
+
end
|
105
|
+
|
106
|
+
# TODO: !!!! this is wrong here because multipart is used for images as well not only text/plain
|
107
|
+
# TODO: What if the request params are empty?
|
108
|
+
if connection.builder.app.class <= Faraday::Multipart::Middleware
|
109
|
+
full_request = request_properties[:req_params].transform_values do |v|
|
110
|
+
Faraday::Multipart::ParamPart.new(v, 'text/plain')
|
111
|
+
end
|
85
112
|
end
|
86
|
-
|
113
|
+
|
114
|
+
resp = connection.send(request_properties[:request_method], request_properties[:formatted_full_url],
|
115
|
+
full_request)
|
87
116
|
end
|
117
|
+
|
88
118
|
resp
|
89
119
|
end
|
90
120
|
|
91
121
|
sig do
|
92
122
|
params(
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
123
|
+
action_name: Symbol,
|
124
|
+
for_stub: T::Boolean,
|
125
|
+
req_params: T::Hash[T.untyped, T.untyped],
|
126
|
+
action_details: T::Hash[Symbol, T.untyped]
|
97
127
|
).returns(T::Hash[Symbol, T.untyped])
|
98
128
|
end
|
99
|
-
def get_request_properties(action_name:, for_stub: false, req_params: {},
|
129
|
+
def get_request_properties(action_name:, for_stub: false, req_params: {},
|
130
|
+
action_details: { actions: plugin.api_actions, url: plugin.api_base_url })
|
100
131
|
action = action_details[:actions][action_name]
|
101
132
|
url = action.has_key?(:request_url) ? action[:request_url] : action_details[:url]
|
102
133
|
request_method, endpoint = action.first
|
@@ -105,15 +136,15 @@ module Setsuzoku
|
|
105
136
|
response_format = action[:response_type]
|
106
137
|
stub_data = action[:stub_data] if for_stub
|
107
138
|
full_url = url + endpoint
|
108
|
-
formatted_full_url, req_params =
|
139
|
+
formatted_full_url, req_params = replace_dynamic_vars(full_url: full_url, req_params: req_params)
|
109
140
|
{
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
141
|
+
request_method: request_method,
|
142
|
+
endpoint: endpoint,
|
143
|
+
request_format: request_format,
|
144
|
+
response_format: response_format,
|
145
|
+
formatted_full_url: formatted_full_url,
|
146
|
+
req_params: req_params,
|
147
|
+
stub_data: stub_data
|
117
148
|
}
|
118
149
|
end
|
119
150
|
|
@@ -138,29 +169,27 @@ module Setsuzoku
|
|
138
169
|
else
|
139
170
|
params # Faraday supports empty hashes for other request types...
|
140
171
|
end
|
141
|
-
|
172
|
+
elsif request_format.include?('urlencoded')
|
142
173
|
# if the header or request format include urlencoded return the body as a hash
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
else
|
150
|
-
params.to_json
|
151
|
-
end
|
152
|
-
end
|
174
|
+
params
|
175
|
+
elsif request_properties[:request_format] == :xml
|
176
|
+
# return either xml or json
|
177
|
+
convert_hash_to_xml(params)
|
178
|
+
else
|
179
|
+
params.to_json
|
153
180
|
end
|
154
181
|
end
|
155
182
|
|
156
183
|
def request_options(request_format = nil, action_details = {})
|
157
|
-
request_options = {
|
158
|
-
|
184
|
+
request_options = {
|
185
|
+
headers: {}
|
186
|
+
}
|
159
187
|
request_options[:headers]
|
160
|
-
.merge!(
|
161
|
-
.merge!(
|
188
|
+
.merge!(auth_strategy.get_from_context(:auth_headers).except(:authorization))
|
189
|
+
.merge!(get_from_context(:api_headers))
|
162
190
|
.merge!(action_details[:request_options] || {})
|
163
|
-
request_options[:authorization] =
|
191
|
+
request_options[:authorization] =
|
192
|
+
action_details[:authorization] || auth_strategy.get_from_context(:auth_headers)[:authorization]
|
164
193
|
|
165
194
|
content_type = case request_format
|
166
195
|
when :json
|
@@ -174,7 +203,8 @@ module Setsuzoku
|
|
174
203
|
when :'x-www-form-urlencoded;charset=UTF-8'
|
175
204
|
'application/x-www-form-urlencoded;charset=UTF-8'
|
176
205
|
else
|
177
|
-
|
206
|
+
# allow any format to be passed otherwise default to application/json
|
207
|
+
request_format || 'application/json'
|
178
208
|
end
|
179
209
|
(request_options[:headers] ||= {})[:'Content-Type'] = content_type
|
180
210
|
request_options
|
@@ -187,7 +217,7 @@ module Setsuzoku
|
|
187
217
|
# it in the body and the url, then you should put it in params twice with different names.
|
188
218
|
req_params = req_params.dup
|
189
219
|
full_url = full_url.dup
|
190
|
-
dynamic_vars =
|
220
|
+
dynamic_vars = plugin.dynamic_url_params.merge(req_params).with_indifferent_access
|
191
221
|
full_url.scan(/({{.*?}})/).flatten.each do |var|
|
192
222
|
var_name = var.tr('{{ }}', '')
|
193
223
|
next unless dynamic_vars[var_name]
|
data/lib/setsuzoku/version.rb
CHANGED
data/setsuzoku.gemspec
CHANGED
@@ -36,14 +36,14 @@ Gem::Specification.new do |spec|
|
|
36
36
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
37
37
|
spec.require_paths = ["lib"]
|
38
38
|
|
39
|
-
spec.add_development_dependency "bundler", "~>
|
40
|
-
spec.add_development_dependency "rake", "~>
|
39
|
+
spec.add_development_dependency "bundler", "~> 2.4.22"
|
40
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
41
41
|
spec.add_development_dependency "rspec", "3.8"
|
42
|
-
spec.add_development_dependency "webmock", "3.
|
43
|
-
spec.add_runtime_dependency "activesupport", ">= 5.0", '<
|
42
|
+
spec.add_development_dependency "webmock", "3.19.1"
|
43
|
+
spec.add_runtime_dependency "activesupport", ">= 5.0", '< 8'
|
44
44
|
spec.add_development_dependency "sorbet", ">= 0.5", '< 1.0'
|
45
45
|
spec.add_runtime_dependency "sorbet-runtime", ">= 0.5", '< 1.0'
|
46
|
-
#TODO: we should remove httparty if we can just use faraday
|
47
46
|
spec.add_runtime_dependency "faraday", ">= 2.7.10", "< 3.0"
|
47
|
+
spec.add_runtime_dependency "faraday-multipart", ">= 1.0.4", "< 2.0"
|
48
48
|
spec.add_runtime_dependency "nokogiri", ">= 1.10", "< 2.0"
|
49
49
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: setsuzoku
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.15.
|
4
|
+
version: 0.15.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luke Stadtler
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-04-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 2.4.22
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 2.4.22
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '13.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '13.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - '='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 3.19.1
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - '='
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 3.19.1
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: activesupport
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -75,7 +75,7 @@ dependencies:
|
|
75
75
|
version: '5.0'
|
76
76
|
- - "<"
|
77
77
|
- !ruby/object:Gem::Version
|
78
|
-
version: '
|
78
|
+
version: '8'
|
79
79
|
type: :runtime
|
80
80
|
prerelease: false
|
81
81
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -85,7 +85,7 @@ dependencies:
|
|
85
85
|
version: '5.0'
|
86
86
|
- - "<"
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version: '
|
88
|
+
version: '8'
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
90
|
name: sorbet
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -146,6 +146,26 @@ dependencies:
|
|
146
146
|
- - "<"
|
147
147
|
- !ruby/object:Gem::Version
|
148
148
|
version: '3.0'
|
149
|
+
- !ruby/object:Gem::Dependency
|
150
|
+
name: faraday-multipart
|
151
|
+
requirement: !ruby/object:Gem::Requirement
|
152
|
+
requirements:
|
153
|
+
- - ">="
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
version: 1.0.4
|
156
|
+
- - "<"
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '2.0'
|
159
|
+
type: :runtime
|
160
|
+
prerelease: false
|
161
|
+
version_requirements: !ruby/object:Gem::Requirement
|
162
|
+
requirements:
|
163
|
+
- - ">="
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: 1.0.4
|
166
|
+
- - "<"
|
167
|
+
- !ruby/object:Gem::Version
|
168
|
+
version: '2.0'
|
149
169
|
- !ruby/object:Gem::Dependency
|
150
170
|
name: nokogiri
|
151
171
|
requirement: !ruby/object:Gem::Requirement
|
@@ -176,6 +196,7 @@ extensions: []
|
|
176
196
|
extra_rdoc_files: []
|
177
197
|
files:
|
178
198
|
- ".gitattributes"
|
199
|
+
- ".github/workflows/ruby.yml"
|
179
200
|
- ".gitignore"
|
180
201
|
- ".rspec"
|
181
202
|
- ".travis.yml"
|
@@ -251,7 +272,7 @@ homepage: https://github.com/rocketreferrals/setsuzoku
|
|
251
272
|
licenses:
|
252
273
|
- MIT
|
253
274
|
metadata: {}
|
254
|
-
post_install_message:
|
275
|
+
post_install_message:
|
255
276
|
rdoc_options: []
|
256
277
|
require_paths:
|
257
278
|
- lib
|
@@ -266,8 +287,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
266
287
|
- !ruby/object:Gem::Version
|
267
288
|
version: '0'
|
268
289
|
requirements: []
|
269
|
-
rubygems_version: 3.
|
270
|
-
signing_key:
|
290
|
+
rubygems_version: 3.2.33
|
291
|
+
signing_key:
|
271
292
|
specification_version: 4
|
272
293
|
summary: Extensible 3rd-party interface and functionality plugins
|
273
294
|
test_files: []
|