scorpio 0.4.4 → 0.4.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d8e4b8a415bbb35c491e9a563c438916a33049e596e879d022f6435e5a7c7ec1
4
- data.tar.gz: ca3d1b9b6539e9c0351c51bee08ed18667eabae3038514ecbe4a375ae246066f
3
+ metadata.gz: 2f15434d7f81c98255a7ebb87327025e54c068bea44d4d8ba4de1e5a22b5a2e6
4
+ data.tar.gz: fa85f43ceb33e794d8ac5335f7d681ffa8897bbb6aa2f69cf1e2e15757f8e97d
5
5
  SHA512:
6
- metadata.gz: 89b3da10d085ab62755defca0457f9dc1d8e9c1db8699e2727efecdd9d12f5d09c3dbeca309afe283ac7ed5f25e3f92368969434a789c334a4897627bf7cd64d
7
- data.tar.gz: 3dc9d5722372386ec1040c3ad6707d8aed251882ab31d8f26ad559edf517f3fbd001178b94de78987d849ba285808dc5f27b7414b78ad34a437a7b08fe73e899
6
+ metadata.gz: 2760d54f7f2c1b977192dc7244fff2f457ae293032f770482146143b14454e9896f7ff3717d9686bb02e981b854aab389a8baec76b40e6d17126b2c3446b3a45
7
+ data.tar.gz: a46a241d6bec8a531e3f76786aaa99ad335604927a3d5d4c079c7a65ebe619d1acef1a4b93c2aeb970f157a46ea8d63869d74966d5ace4e301399e2ec77a2cb9
@@ -1,4 +1,8 @@
1
- # v0.4.3
1
+ # v0.4.5
2
+ - Ur v0.1.0
3
+ - misc
4
+
5
+ # v0.4.4
2
6
  - JSI v0.2.0
3
7
  - misc
4
8
 
@@ -98,7 +98,7 @@ module Scorpio
98
98
  unused_path_params.delete(name) if op_param['in'] == 'path'
99
99
  op_param['required'] = parameter.key?('required') ? parameter['required'] : op_param['in'] == 'path' ? true : false
100
100
  op_param['type'] = parameter.type || 'string'
101
- op_param['format'] = parameter.format if parameter.format
101
+ op_param['format'] = parameter['format'] if parameter['format']
102
102
  end
103
103
  end
104
104
  end
@@ -60,13 +60,9 @@ module Scorpio
60
60
 
61
61
  def path_template_str
62
62
  return @path_template_str if instance_variable_defined?(:@path_template_str)
63
- @path_template_str = begin
64
- parent_is_pathitem = parent_jsi.is_a?(Scorpio::OpenAPI::V2::PathItem) || parent_jsi.is_a?(Scorpio::OpenAPI::V3::PathItem)
65
- parent_parent_is_paths = parent_jsi.parent_jsi.is_a?(Scorpio::OpenAPI::V2::Paths) || parent_jsi.parent_jsi.is_a?(Scorpio::OpenAPI::V3::Paths)
66
- if parent_is_pathitem && parent_parent_is_paths
67
- parent_jsi.jsi_ptr.reference_tokens.last
68
- end
69
- end
63
+ raise(Bug) unless parent_jsi.is_a?(Scorpio::OpenAPI::V2::PathItem) || parent_jsi.is_a?(Scorpio::OpenAPI::V3::PathItem)
64
+ raise(Bug) unless parent_jsi.parent_jsi.is_a?(Scorpio::OpenAPI::V2::Paths) || parent_jsi.parent_jsi.is_a?(Scorpio::OpenAPI::V3::Paths)
65
+ @path_template_str = parent_jsi.jsi_ptr.reference_tokens.last
70
66
  end
71
67
 
72
68
  # @return [Addressable::Template] the path as an Addressable::Template
@@ -91,12 +87,8 @@ module Scorpio
91
87
  # for this operation from the parent PathItem
92
88
  def http_method
93
89
  return @http_method if instance_variable_defined?(:@http_method)
94
- @http_method = begin
95
- parent_is_pathitem = parent_jsi.is_a?(Scorpio::OpenAPI::V2::PathItem) || parent_jsi.is_a?(Scorpio::OpenAPI::V3::PathItem)
96
- if parent_is_pathitem
97
- jsi_ptr.reference_tokens.last
98
- end
99
- end
90
+ raise(Bug) unless parent_jsi.is_a?(Scorpio::OpenAPI::V2::PathItem) || parent_jsi.is_a?(Scorpio::OpenAPI::V3::PathItem)
91
+ @http_method = jsi_ptr.reference_tokens.last
100
92
  end
101
93
 
102
94
  # @return [String] a short identifier for this operation appropriate for an error message
@@ -25,9 +25,14 @@ module Scorpio
25
25
 
26
26
  # @param operationId
27
27
  # @return [Scorpio::OpenAPI::Operation] the operation with the given operationId
28
+ # @raise [::KeyError] if the given operationId does not exist
28
29
  def [](operationId)
29
30
  memoize(:[], operationId) do |operationId_|
30
- detect { |operation| operation.operationId == operationId_ }
31
+ detect { |operation| operation.operationId == operationId_ }.tap do |op|
32
+ unless op
33
+ raise(::KeyError, "operationId not found: #{operationId_.inspect}")
34
+ end
35
+ end
31
36
  end
32
37
  end
33
38
  end
@@ -50,10 +50,9 @@ module Scorpio
50
50
  def body
51
51
  return @body if instance_variable_defined?(:@body)
52
52
  if instance_variable_defined?(:@body_object)
53
- # TODO handle media types like `application/schema-instance+json`
54
- if media_type == 'application/json'
53
+ if content_type && content_type.json?
55
54
  JSON.pretty_generate(JSI::Typelike.as_json(body_object))
56
- elsif media_type == "application/x-www-form-urlencoded"
55
+ elsif content_type && content_type.form_urlencoded?
57
56
  URI.encode_www_form(body_object)
58
57
 
59
58
  # NOTE: the supported media types above should correspond to Request::SUPPORTED_REQUEST_MEDIA_TYPES
@@ -62,7 +61,7 @@ module Scorpio
62
61
  if body_object.respond_to?(:to_str)
63
62
  body_object
64
63
  else
65
- raise(NotImplementedError, "Scorpio does not know how to generate the request body with media_type = #{media_type.respond_to?(:to_str) ? media_type : media_type.inspect} for operation: #{operation.human_id}. Scorpio supports media types: #{SUPPORTED_REQUEST_MEDIA_TYPES.join(', ')}. body_object was: #{body_object.pretty_inspect.chomp}")
64
+ raise(NotImplementedError, "Scorpio does not know how to generate the request body with content_type = #{content_type.respond_to?(:to_str) ? content_type : content_type.inspect} for operation: #{operation.human_id}. Scorpio supports media types: #{SUPPORTED_REQUEST_MEDIA_TYPES.join(', ')}. body_object was: #{body_object.pretty_inspect.chomp}")
66
65
  end
67
66
  end
68
67
  else
@@ -81,7 +80,7 @@ module Scorpio
81
80
  attr_writer :media_type
82
81
  def media_type
83
82
  return @media_type if instance_variable_defined?(:@media_type)
84
- content_type_header ? content_type_attrs.media_type : operation.request_media_type
83
+ content_type_header ? content_type_header.media_type : operation.request_media_type
85
84
  end
86
85
 
87
86
  attr_writer :user_agent
@@ -190,23 +189,18 @@ module Scorpio
190
189
  Addressable::URI.parse(File.join(base_url, path))
191
190
  end
192
191
 
193
- # @return [::Ur::ContentTypeAttrs] content type attributes for this request's Content-Type
194
- def content_type_attrs
195
- Ur::ContentTypeAttrs.new(content_type)
196
- end
197
-
198
- # @return [String] the value of the request Content-Type header
192
+ # @return [::Ur::ContentType] the value of the request Content-Type header
199
193
  def content_type_header
200
194
  headers.each do |k, v|
201
- return v if k =~ /\Acontent[-_]type\z/i
195
+ return ::Ur::ContentType.new(v) if k =~ /\Acontent[-_]type\z/i
202
196
  end
203
197
  nil
204
198
  end
205
199
 
206
- # @return [String] Content-Type for this request, taken from request headers if
200
+ # @return [::Ur::ContentType] Content-Type for this request, taken from request headers if
207
201
  # present, or the request media_type.
208
202
  def content_type
209
- content_type_header || media_type
203
+ content_type_header || ::Ur::ContentType.new(media_type)
210
204
  end
211
205
 
212
206
  # @return [::JSI::Schema]
@@ -9,8 +9,7 @@ module Scorpio
9
9
  # if supported (only application/json is currently supported) instantiated according to
10
10
  # #response_schema
11
11
  def body_object
12
- # TODO handle media types like `application/schema-instance+json` or vendor things like github's
13
- if media_type == 'application/json'
12
+ if json?
14
13
  if body.empty?
15
14
  # an empty body isn't valid json, of course, but we'll just return nil for it.
16
15
  body_object = nil
@@ -27,7 +26,7 @@ module Scorpio
27
26
  end
28
27
 
29
28
  body_object
30
- elsif media_type == 'text/plain'
29
+ elsif content_type && content_type.type_text? && content_type.subtype?('plain')
31
30
  body
32
31
  else
33
32
  # we will return the body if we do not have a supported parsing. for now.
@@ -1,3 +1,3 @@
1
1
  module Scorpio
2
- VERSION = "0.4.4"
2
+ VERSION = "0.4.5"
3
3
  end
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.require_paths = ["lib"]
22
22
 
23
23
  spec.add_dependency "jsi", "~> 0.2.0"
24
- spec.add_dependency "ur", "~> 0.0.4"
24
+ spec.add_dependency "ur", "~> 0.1.0"
25
25
  spec.add_dependency "faraday"
26
26
  spec.add_development_dependency "rake", "~> 10.0"
27
27
  spec.add_development_dependency "minitest", "~> 5.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scorpio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 0.4.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ethan
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-11-27 00:00:00.000000000 Z
11
+ date: 2019-12-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jsi
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.0.4
33
+ version: 0.1.0
34
34
  type: :runtime
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: 0.0.4
40
+ version: 0.1.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: faraday
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -300,8 +300,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
300
300
  - !ruby/object:Gem::Version
301
301
  version: '0'
302
302
  requirements: []
303
- rubyforge_project:
304
- rubygems_version: 2.7.8
303
+ rubygems_version: 3.0.3
305
304
  signing_key:
306
305
  specification_version: 4
307
306
  summary: Scorpio REST client