setsuzoku 0.14.8 → 0.15.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 65e48591475a806438d5b6e92976a50b430f2c04678f5401f1fdb5eed437bcc5
4
- data.tar.gz: 24d7ee0501318d5ea4b5f5ac0c768c64906aa2b09195a2228df7fb9ccd802611
3
+ metadata.gz: 33e2792dd95e82af3c6d7da592db91dfc6deb3231bba7408b02a5d0d400a06df
4
+ data.tar.gz: c3dd57468f5e8e1a8f948522f34a62231759c15b2778e3a591b414b6e208e6cf
5
5
  SHA512:
6
- metadata.gz: 4aa65457286fd02d73b5b979341f046958a18604af56a1bc0c24c1ae468830533dca95475bbf5dcb3bce7133abdeab956a0452bcbbadce0a0828a9caf6e37ef4
7
- data.tar.gz: 6c8c2b1b13b07b65285a9dada7820509db42672b9ce4c7109c745f6271d37442e0c95e841515c76a0718cc5af1432823a0fe08ee7ae9948b93414446fd033d83
6
+ metadata.gz: 17824e32cc43b626875a9fb4bcfdae86b29a109b78f8c8aea01116734d72e4093ebfa1087e50b54ebcc65a1439b7002eb592057b9633596102f8590726e777ee
7
+ data.tar.gz: 7ad2426f1f7959301f1ec50ce45611363d79f433de59a0414226e8cd99f765a6bc68a6c2c9b391b84f1533aca6cbc07f8a46ff60b893d5af42241bd586c738a9
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- setsuzoku (0.14.8)
4
+ setsuzoku (0.15.1)
5
5
  activesupport (>= 5.0, < 7)
6
6
  faraday (~> 0.11)
7
7
  nokogiri (~> 1.10)
@@ -10,7 +10,7 @@ PATH
10
10
  GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
- activesupport (6.1.4)
13
+ activesupport (6.1.6)
14
14
  concurrent-ruby (~> 1.0, >= 1.0.2)
15
15
  i18n (>= 1.6, < 2)
16
16
  minitest (>= 5.1)
@@ -18,21 +18,23 @@ GEM
18
18
  zeitwerk (~> 2.3)
19
19
  addressable (2.7.0)
20
20
  public_suffix (>= 2.0.2, < 5.0)
21
- concurrent-ruby (1.1.9)
21
+ concurrent-ruby (1.1.10)
22
22
  crack (0.4.3)
23
23
  safe_yaml (~> 1.0.0)
24
24
  diff-lcs (1.4.2)
25
- faraday (0.17.4)
25
+ faraday (0.17.5)
26
26
  multipart-post (>= 1.2, < 3)
27
27
  hashdiff (1.0.1)
28
- i18n (1.8.10)
28
+ i18n (1.10.0)
29
29
  concurrent-ruby (~> 1.0)
30
- minitest (5.14.4)
31
- multipart-post (2.1.1)
32
- nokogiri (1.11.7-x86_64-darwin)
30
+ mini_portile2 (2.8.0)
31
+ minitest (5.16.1)
32
+ multipart-post (2.2.3)
33
+ nokogiri (1.13.6)
34
+ mini_portile2 (~> 2.8.0)
33
35
  racc (~> 1.4)
34
36
  public_suffix (4.0.5)
35
- racc (1.5.2)
37
+ racc (1.6.0)
36
38
  rake (10.5.0)
37
39
  rspec (3.8.0)
38
40
  rspec-core (~> 3.8.0)
@@ -48,17 +50,17 @@ GEM
48
50
  rspec-support (~> 3.8.0)
49
51
  rspec-support (3.8.3)
50
52
  safe_yaml (1.0.5)
51
- sorbet (0.5.5675)
52
- sorbet-static (= 0.5.5675)
53
- sorbet-runtime (0.5.6497)
54
- sorbet-static (0.5.5675-universal-darwin-14)
53
+ sorbet (0.5.10030)
54
+ sorbet-static (= 0.5.10030)
55
+ sorbet-runtime (0.5.10125)
56
+ sorbet-static (0.5.10030-universal-darwin-14)
55
57
  tzinfo (2.0.4)
56
58
  concurrent-ruby (~> 1.0)
57
59
  webmock (3.8.0)
58
60
  addressable (>= 2.3.6)
59
61
  crack (>= 0.3.2)
60
62
  hashdiff (>= 0.4.0, < 2.0.0)
61
- zeitwerk (2.4.2)
63
+ zeitwerk (2.6.0)
62
64
 
63
65
  PLATFORMS
64
66
  ruby
@@ -4,8 +4,13 @@
4
4
  module Setsuzoku
5
5
  # The generic API response object that all API responses should return.
6
6
  class ApiResponse < T::Struct
7
+ # the formatted response object for use in the application.
7
8
  prop :data, T.nilable(T.untyped), default: {}
9
+ # whether the API request "succeeded" -- atm this is simply whether we hit the 3rd-party and received any kind of response.
8
10
  prop :success, T::Boolean, default: false
11
+ # the error from the request -- this needs to manage codes and error messages in the future.
9
12
  prop :error, T.nilable(String), default: nil
13
+ # the full object of the request/response. this is primarily for debugging purposes.
14
+ prop :full_object, T::Hash[T.untyped, T.untyped], default: {}
10
15
  end
11
16
  end
@@ -70,6 +70,7 @@ module Setsuzoku
70
70
  self.current_action = request.action
71
71
  formatted_response = T.let(nil, T.nilable(T::Hash[Symbol, T.untyped]))
72
72
  success = T.let(false, T::Boolean)
73
+ full_object = {}
73
74
  exception = T.let(nil, T.nilable(Setsuzoku::Exception))
74
75
  action_details = case strategy
75
76
  when :auth
@@ -99,7 +100,7 @@ module Setsuzoku
99
100
  )
100
101
  end
101
102
 
102
- {
103
+ full_object = {
103
104
  success: success,
104
105
  plugin: self.plugin,
105
106
  request: request,
@@ -110,7 +111,7 @@ module Setsuzoku
110
111
  }
111
112
  end
112
113
  self.current_action = nil
113
- ApiResponse.new(data: formatted_response, success: success)
114
+ ApiResponse.new(data: formatted_response, success: success, full_object: full_object)
114
115
  end
115
116
 
116
117
  # Parse the response from the API for the given request.
@@ -57,11 +57,13 @@ module Setsuzoku
57
57
  end
58
58
  faraday.adapter Faraday.default_adapter
59
59
  end
60
-
61
- if options[:attachment_urls].present?
60
+ attachment_urls = options[:attachment_url] || options[:attachment_urls]
61
+ if attachment_urls.present?
62
62
  resp = @faraday.post do |req|
63
63
  payload = {}
64
- attachments = options[:attachment_urls].map do |url|
64
+ # create an array to just iterate over for 1 or many urls
65
+ attachment_urls = [attachment_urls] if options[:attachment_url]
66
+ attachments = attachment_urls.map do |url|
65
67
  image = open(url, 'rb')
66
68
  Faraday::UploadIO.new(image, T.must(image).content_type, File.basename(url))
67
69
  end
@@ -70,7 +72,8 @@ module Setsuzoku
70
72
  else
71
73
  payload.merge!(full_request)
72
74
  end
73
- payload[options[:attachment_url_key]] = attachments
75
+ # if using the singular "attachment_url" key pull out the first item
76
+ payload[options[:attachment_url_key]] = options[:attachment_url] ? attachments.first : attachments
74
77
  req.body = payload
75
78
  end
76
79
  else
@@ -126,7 +129,10 @@ module Setsuzoku
126
129
  # Faraday expects get requests params to be a hash
127
130
  params
128
131
  elsif request_properties[:req_params].empty?
129
- if %i[put patch post].include?(request_properties[:request_method])
132
+ # if the header or request format include urlencoded return the body as a hash
133
+ if request_format.include?('urlencoded')
134
+ params
135
+ elsif %i[put patch post].include?(request_properties[:request_method])
130
136
  params.to_json # Faraday doesn't support an empty hash for PUT/PATCH/POST requests
131
137
  else
132
138
  params # Faraday supports empty hashes for other request types...
@@ -138,6 +138,8 @@ module Setsuzoku
138
138
  def get_token!(body, action)
139
139
  success = false
140
140
  without_headers = self.credential.auth_actions[action].has_key?(:without_headers) ? self.credential.auth_actions[action][:without_headers] : true
141
+ body.merge!(self.credential.auth_actions[action][:body]) if self.credential.auth_actions[action].has_key?(:body)
142
+
141
143
  request = self.api_strategy.request_class.new(action: action, body: body, without_headers: without_headers)
142
144
 
143
145
  resp = self.api_strategy.call_external_api(request: request, strategy: :auth)
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Setsuzoku
5
- VERSION = '0.14.8'
5
+ VERSION = '0.15.1'
6
6
  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.14.8
4
+ version: 0.15.1
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: 2021-10-07 00:00:00.000000000 Z
11
+ date: 2022-06-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -227,7 +227,7 @@ homepage: https://github.com/rocketreferrals/setsuzoku
227
227
  licenses:
228
228
  - MIT
229
229
  metadata: {}
230
- post_install_message:
230
+ post_install_message:
231
231
  rdoc_options: []
232
232
  require_paths:
233
233
  - lib
@@ -242,8 +242,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
242
242
  - !ruby/object:Gem::Version
243
243
  version: '0'
244
244
  requirements: []
245
- rubygems_version: 3.0.1
246
- signing_key:
245
+ rubygems_version: 3.0.3.1
246
+ signing_key:
247
247
  specification_version: 4
248
248
  summary: Extensible 3rd-party interface and functionality plugins
249
249
  test_files: []