bandwidth-sdk 17.0.1 → 17.1.0

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.
Files changed (229) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +2 -2
  3. data/README.md +18 -0
  4. data/bandwidth-sdk.gemspec +1 -2
  5. data/bandwidth.yml +7 -0
  6. data/coverage/.last_run.json +1 -1
  7. data/coverage/.resultset.json +198 -387
  8. data/coverage/index.html +5842 -7703
  9. data/custom_templates/README.mustache +4 -1
  10. data/custom_templates/api_client.mustache +254 -0
  11. data/custom_templates/configuration.mustache +545 -0
  12. data/custom_templates/gem.mustache +2 -0
  13. data/docs/CallsApi.md +20 -5
  14. data/docs/ConferencesApi.md +36 -9
  15. data/docs/MFAApi.md +12 -3
  16. data/docs/MediaApi.md +16 -4
  17. data/docs/MessagesApi.md +8 -2
  18. data/docs/MultiChannelApi.md +4 -1
  19. data/docs/PhoneNumberLookupApi.md +12 -3
  20. data/docs/RecordingsApi.md +40 -10
  21. data/docs/StatisticsApi.md +4 -1
  22. data/docs/TollFreeVerificationApi.md +36 -9
  23. data/docs/TranscriptionsApi.md +12 -3
  24. data/lib/bandwidth-sdk/api/calls_api.rb +6 -6
  25. data/lib/bandwidth-sdk/api/conferences_api.rb +10 -10
  26. data/lib/bandwidth-sdk/api/media_api.rb +5 -5
  27. data/lib/bandwidth-sdk/api/messages_api.rb +3 -3
  28. data/lib/bandwidth-sdk/api/mfa_api.rb +4 -4
  29. data/lib/bandwidth-sdk/api/multi_channel_api.rb +2 -2
  30. data/lib/bandwidth-sdk/api/phone_number_lookup_api.rb +4 -4
  31. data/lib/bandwidth-sdk/api/recordings_api.rb +11 -11
  32. data/lib/bandwidth-sdk/api/statistics_api.rb +2 -2
  33. data/lib/bandwidth-sdk/api/toll_free_verification_api.rb +13 -13
  34. data/lib/bandwidth-sdk/api/transcriptions_api.rb +4 -4
  35. data/lib/bandwidth-sdk/api_client.rb +9 -5
  36. data/lib/bandwidth-sdk/api_error.rb +1 -1
  37. data/lib/bandwidth-sdk/api_model_base.rb +88 -0
  38. data/lib/bandwidth-sdk/configuration.rb +50 -1
  39. data/lib/bandwidth-sdk/models/account_statistics.rb +11 -78
  40. data/lib/bandwidth-sdk/models/additional_denial_reason.rb +41 -78
  41. data/lib/bandwidth-sdk/models/address.rb +23 -90
  42. data/lib/bandwidth-sdk/models/answer_callback.rb +11 -78
  43. data/lib/bandwidth-sdk/models/async_lookup_request.rb +11 -78
  44. data/lib/bandwidth-sdk/models/blocked_webhook.rb +13 -80
  45. data/lib/bandwidth-sdk/models/bridge_complete_callback.rb +11 -78
  46. data/lib/bandwidth-sdk/models/bridge_target_complete_callback.rb +11 -78
  47. data/lib/bandwidth-sdk/models/business_entity_type_enum.rb +1 -1
  48. data/lib/bandwidth-sdk/models/business_registration_type_enum.rb +1 -1
  49. data/lib/bandwidth-sdk/models/call_direction_enum.rb +1 -1
  50. data/lib/bandwidth-sdk/models/call_recording_metadata.rb +11 -78
  51. data/lib/bandwidth-sdk/models/call_state.rb +11 -78
  52. data/lib/bandwidth-sdk/models/call_state_enum.rb +1 -1
  53. data/lib/bandwidth-sdk/models/call_transcription.rb +11 -78
  54. data/lib/bandwidth-sdk/models/call_transcription_detected_language_enum.rb +1 -1
  55. data/lib/bandwidth-sdk/models/call_transcription_metadata.rb +11 -78
  56. data/lib/bandwidth-sdk/models/call_transcription_response.rb +11 -78
  57. data/lib/bandwidth-sdk/models/call_transcription_track_enum.rb +1 -1
  58. data/lib/bandwidth-sdk/models/callback.rb +1 -1
  59. data/lib/bandwidth-sdk/models/callback_method_enum.rb +1 -1
  60. data/lib/bandwidth-sdk/models/card_width_enum.rb +1 -1
  61. data/lib/bandwidth-sdk/models/code_request.rb +11 -78
  62. data/lib/bandwidth-sdk/models/completed_lookup_status_enum.rb +1 -1
  63. data/lib/bandwidth-sdk/models/conference.rb +11 -78
  64. data/lib/bandwidth-sdk/models/conference_completed_callback.rb +11 -78
  65. data/lib/bandwidth-sdk/models/conference_created_callback.rb +11 -78
  66. data/lib/bandwidth-sdk/models/conference_member.rb +11 -78
  67. data/lib/bandwidth-sdk/models/conference_member_exit_callback.rb +11 -78
  68. data/lib/bandwidth-sdk/models/conference_member_join_callback.rb +11 -78
  69. data/lib/bandwidth-sdk/models/conference_recording_available_callback.rb +11 -78
  70. data/lib/bandwidth-sdk/models/conference_recording_metadata.rb +11 -78
  71. data/lib/bandwidth-sdk/models/conference_redirect_callback.rb +11 -78
  72. data/lib/bandwidth-sdk/models/conference_state_enum.rb +1 -1
  73. data/lib/bandwidth-sdk/models/contact.rb +19 -86
  74. data/lib/bandwidth-sdk/models/create_async_bulk_lookup_response.rb +11 -78
  75. data/lib/bandwidth-sdk/models/create_async_bulk_lookup_response_data.rb +11 -78
  76. data/lib/bandwidth-sdk/models/create_call.rb +41 -78
  77. data/lib/bandwidth-sdk/models/create_call_response.rb +81 -78
  78. data/lib/bandwidth-sdk/models/create_message_request_error.rb +31 -78
  79. data/lib/bandwidth-sdk/models/create_multi_channel_message_response.rb +11 -78
  80. data/lib/bandwidth-sdk/models/create_sync_lookup_response.rb +11 -78
  81. data/lib/bandwidth-sdk/models/create_sync_lookup_response_data.rb +11 -78
  82. data/lib/bandwidth-sdk/models/deactivation_event_enum.rb +1 -1
  83. data/lib/bandwidth-sdk/models/disconnect_callback.rb +11 -78
  84. data/lib/bandwidth-sdk/models/diversion.rb +11 -78
  85. data/lib/bandwidth-sdk/models/dtmf_callback.rb +11 -78
  86. data/lib/bandwidth-sdk/models/error.rb +11 -78
  87. data/lib/bandwidth-sdk/models/error_object.rb +41 -78
  88. data/lib/bandwidth-sdk/models/error_source.rb +11 -78
  89. data/lib/bandwidth-sdk/models/failure_webhook.rb +13 -80
  90. data/lib/bandwidth-sdk/models/field_error.rb +11 -78
  91. data/lib/bandwidth-sdk/models/file_format_enum.rb +1 -1
  92. data/lib/bandwidth-sdk/models/gather_callback.rb +11 -78
  93. data/lib/bandwidth-sdk/models/get_async_bulk_lookup_response.rb +11 -78
  94. data/lib/bandwidth-sdk/models/get_async_bulk_lookup_response_data.rb +11 -78
  95. data/lib/bandwidth-sdk/models/in_progress_lookup_status_enum.rb +1 -1
  96. data/lib/bandwidth-sdk/models/inbound_callback.rb +61 -78
  97. data/lib/bandwidth-sdk/models/inbound_callback_message.rb +81 -78
  98. data/lib/bandwidth-sdk/models/inbound_callback_type_enum.rb +1 -1
  99. data/lib/bandwidth-sdk/models/initiate_callback.rb +11 -78
  100. data/lib/bandwidth-sdk/models/latest_message_delivery_status_enum.rb +1 -1
  101. data/lib/bandwidth-sdk/models/line_type_enum.rb +1 -1
  102. data/lib/bandwidth-sdk/models/link.rb +11 -78
  103. data/lib/bandwidth-sdk/models/link_schema.rb +11 -78
  104. data/lib/bandwidth-sdk/models/links_object.rb +11 -78
  105. data/lib/bandwidth-sdk/models/list_message_direction_enum.rb +1 -1
  106. data/lib/bandwidth-sdk/models/list_message_item.rb +11 -78
  107. data/lib/bandwidth-sdk/models/lookup_error_response.rb +11 -78
  108. data/lib/bandwidth-sdk/models/lookup_error_schema.rb +11 -78
  109. data/lib/bandwidth-sdk/models/lookup_error_schema_meta.rb +11 -78
  110. data/lib/bandwidth-sdk/models/lookup_result.rb +11 -78
  111. data/lib/bandwidth-sdk/models/machine_detection_complete_callback.rb +11 -78
  112. data/lib/bandwidth-sdk/models/machine_detection_configuration.rb +11 -78
  113. data/lib/bandwidth-sdk/models/machine_detection_mode_enum.rb +1 -1
  114. data/lib/bandwidth-sdk/models/machine_detection_result.rb +11 -78
  115. data/lib/bandwidth-sdk/models/media.rb +11 -78
  116. data/lib/bandwidth-sdk/models/message.rb +11 -78
  117. data/lib/bandwidth-sdk/models/message_direction_enum.rb +1 -1
  118. data/lib/bandwidth-sdk/models/message_request.rb +31 -78
  119. data/lib/bandwidth-sdk/models/message_status_enum.rb +1 -1
  120. data/lib/bandwidth-sdk/models/message_type_enum.rb +1 -1
  121. data/lib/bandwidth-sdk/models/messages_list.rb +11 -78
  122. data/lib/bandwidth-sdk/models/messaging_code_response.rb +11 -78
  123. data/lib/bandwidth-sdk/models/messaging_request_error.rb +31 -78
  124. data/lib/bandwidth-sdk/models/mfa_forbidden_request_error.rb +11 -78
  125. data/lib/bandwidth-sdk/models/mfa_request_error.rb +11 -78
  126. data/lib/bandwidth-sdk/models/mfa_unauthorized_request_error.rb +11 -78
  127. data/lib/bandwidth-sdk/models/mms_message_content.rb +11 -78
  128. data/lib/bandwidth-sdk/models/mms_message_content_file.rb +11 -78
  129. data/lib/bandwidth-sdk/models/multi_channel_action.rb +3 -4
  130. data/lib/bandwidth-sdk/models/multi_channel_action_calendar_event.rb +41 -78
  131. data/lib/bandwidth-sdk/models/multi_channel_channel_list_mms_object.rb +51 -78
  132. data/lib/bandwidth-sdk/models/multi_channel_channel_list_mms_response_object.rb +61 -78
  133. data/lib/bandwidth-sdk/models/multi_channel_channel_list_object_base.rb +41 -78
  134. data/lib/bandwidth-sdk/models/multi_channel_channel_list_owner_object.rb +21 -78
  135. data/lib/bandwidth-sdk/models/multi_channel_channel_list_rbm_object.rb +51 -78
  136. data/lib/bandwidth-sdk/models/multi_channel_channel_list_rbm_object_all_of_content.rb +3 -4
  137. data/lib/bandwidth-sdk/models/multi_channel_channel_list_rbm_response_object.rb +61 -78
  138. data/lib/bandwidth-sdk/models/multi_channel_channel_list_request_object.rb +3 -4
  139. data/lib/bandwidth-sdk/models/multi_channel_channel_list_response_object.rb +3 -4
  140. data/lib/bandwidth-sdk/models/multi_channel_channel_list_sms_object.rb +51 -78
  141. data/lib/bandwidth-sdk/models/multi_channel_channel_list_sms_response_object.rb +61 -78
  142. data/lib/bandwidth-sdk/models/multi_channel_error.rb +11 -78
  143. data/lib/bandwidth-sdk/models/multi_channel_message_channel_enum.rb +1 -1
  144. data/lib/bandwidth-sdk/models/multi_channel_message_content.rb +11 -78
  145. data/lib/bandwidth-sdk/models/multi_channel_message_request.rb +21 -78
  146. data/lib/bandwidth-sdk/models/multi_channel_message_response_data.rb +41 -78
  147. data/lib/bandwidth-sdk/models/opt_in_workflow.rb +25 -82
  148. data/lib/bandwidth-sdk/models/page_info.rb +11 -78
  149. data/lib/bandwidth-sdk/models/priority_enum.rb +1 -1
  150. data/lib/bandwidth-sdk/models/product_type_enum.rb +1 -1
  151. data/lib/bandwidth-sdk/models/rbm_action_base.rb +21 -78
  152. data/lib/bandwidth-sdk/models/rbm_action_dial.rb +31 -78
  153. data/lib/bandwidth-sdk/models/rbm_action_open_url.rb +21 -78
  154. data/lib/bandwidth-sdk/models/rbm_action_type_enum.rb +1 -1
  155. data/lib/bandwidth-sdk/models/rbm_action_view_location.rb +41 -78
  156. data/lib/bandwidth-sdk/models/rbm_card_content.rb +11 -78
  157. data/lib/bandwidth-sdk/models/rbm_card_content_media.rb +21 -78
  158. data/lib/bandwidth-sdk/models/rbm_location_response.rb +11 -78
  159. data/lib/bandwidth-sdk/models/rbm_media_height_enum.rb +1 -1
  160. data/lib/bandwidth-sdk/models/rbm_message_carousel_card.rb +21 -78
  161. data/lib/bandwidth-sdk/models/rbm_message_content_file.rb +11 -78
  162. data/lib/bandwidth-sdk/models/rbm_message_content_rich_card.rb +3 -4
  163. data/lib/bandwidth-sdk/models/rbm_message_content_text.rb +11 -78
  164. data/lib/bandwidth-sdk/models/rbm_message_media.rb +21 -78
  165. data/lib/bandwidth-sdk/models/rbm_standalone_card.rb +41 -78
  166. data/lib/bandwidth-sdk/models/rbm_suggestion_response.rb +11 -78
  167. data/lib/bandwidth-sdk/models/recording_available_callback.rb +11 -78
  168. data/lib/bandwidth-sdk/models/recording_complete_callback.rb +11 -78
  169. data/lib/bandwidth-sdk/models/recording_state_enum.rb +1 -1
  170. data/lib/bandwidth-sdk/models/recording_transcription_metadata.rb +11 -78
  171. data/lib/bandwidth-sdk/models/recording_transcriptions.rb +11 -78
  172. data/lib/bandwidth-sdk/models/redirect_callback.rb +11 -78
  173. data/lib/bandwidth-sdk/models/redirect_method_enum.rb +1 -1
  174. data/lib/bandwidth-sdk/models/sms_message_content.rb +11 -78
  175. data/lib/bandwidth-sdk/models/standalone_card_orientation_enum.rb +1 -1
  176. data/lib/bandwidth-sdk/models/status_callback.rb +61 -78
  177. data/lib/bandwidth-sdk/models/status_callback_message.rb +81 -78
  178. data/lib/bandwidth-sdk/models/status_callback_type_enum.rb +6 -6
  179. data/lib/bandwidth-sdk/models/stir_shaken.rb +11 -78
  180. data/lib/bandwidth-sdk/models/sync_lookup_request.rb +11 -78
  181. data/lib/bandwidth-sdk/models/telephone_number.rb +11 -78
  182. data/lib/bandwidth-sdk/models/tfv_basic_authentication.rb +11 -78
  183. data/lib/bandwidth-sdk/models/tfv_callback_status_enum.rb +1 -1
  184. data/lib/bandwidth-sdk/models/tfv_error.rb +11 -78
  185. data/lib/bandwidth-sdk/models/tfv_status.rb +13 -80
  186. data/lib/bandwidth-sdk/models/tfv_status_enum.rb +1 -1
  187. data/lib/bandwidth-sdk/models/tfv_submission_info.rb +21 -88
  188. data/lib/bandwidth-sdk/models/tfv_submission_wrapper.rb +11 -78
  189. data/lib/bandwidth-sdk/models/thumbnail_alignment_enum.rb +1 -1
  190. data/lib/bandwidth-sdk/models/transcribe_recording.rb +11 -78
  191. data/lib/bandwidth-sdk/models/transcription.rb +11 -78
  192. data/lib/bandwidth-sdk/models/transcription_available_callback.rb +11 -78
  193. data/lib/bandwidth-sdk/models/transfer_answer_callback.rb +11 -78
  194. data/lib/bandwidth-sdk/models/transfer_complete_callback.rb +11 -78
  195. data/lib/bandwidth-sdk/models/transfer_disconnect_callback.rb +11 -78
  196. data/lib/bandwidth-sdk/models/update_call.rb +11 -78
  197. data/lib/bandwidth-sdk/models/update_call_recording.rb +21 -78
  198. data/lib/bandwidth-sdk/models/update_conference.rb +11 -78
  199. data/lib/bandwidth-sdk/models/update_conference_member.rb +11 -78
  200. data/lib/bandwidth-sdk/models/verification_denial_webhook.rb +13 -80
  201. data/lib/bandwidth-sdk/models/verification_request.rb +51 -88
  202. data/lib/bandwidth-sdk/models/verification_update_request.rb +51 -88
  203. data/lib/bandwidth-sdk/models/verification_webhook.rb +13 -80
  204. data/lib/bandwidth-sdk/models/verify_code_request.rb +13 -80
  205. data/lib/bandwidth-sdk/models/verify_code_response.rb +11 -78
  206. data/lib/bandwidth-sdk/models/voice_api_error.rb +11 -78
  207. data/lib/bandwidth-sdk/models/voice_code_response.rb +11 -78
  208. data/lib/bandwidth-sdk/models/webhook_subscription.rb +13 -80
  209. data/lib/bandwidth-sdk/models/webhook_subscription_basic_authentication.rb +11 -78
  210. data/lib/bandwidth-sdk/models/webhook_subscription_request_schema.rb +15 -82
  211. data/lib/bandwidth-sdk/models/webhook_subscription_type_enum.rb +1 -1
  212. data/lib/bandwidth-sdk/models/webhook_subscriptions_list_body.rb +21 -78
  213. data/lib/bandwidth-sdk/version.rb +2 -2
  214. data/lib/bandwidth-sdk.rb +2 -1
  215. data/openapitools.json +1 -1
  216. data/spec/smoke/calls_api_spec.rb +50 -76
  217. data/spec/smoke/conferences_api_spec.rb +7 -5
  218. data/spec/smoke/media_api_spec.rb +4 -2
  219. data/spec/smoke/messages_api_spec.rb +9 -4
  220. data/spec/smoke/mfa_api_spec.rb +9 -4
  221. data/spec/smoke/multi_channel_api_spec.rb +4 -2
  222. data/spec/smoke/phone_number_lookup_api_spec.rb +6 -4
  223. data/spec/smoke/recordings_api_spec.rb +7 -33
  224. data/spec/smoke/statistics_api_spec.rb +16 -8
  225. data/spec/smoke/toll_free_verification_api_spec.rb +6 -4
  226. data/spec/smoke/transcriptions_api_spec.rb +7 -5
  227. data/spec/spec_helper.rb +2 -0
  228. data/spec/unit/models/verify_code_request_spec.rb +1 -1
  229. metadata +5 -2
@@ -99,7 +99,10 @@ require '{{{gemName}}}'
99
99
  # Uncomment the following line to set a prefix for the API key, e.g. 'Bearer' (defaults to nil)
100
100
  # config.api_key_prefix['{{{name}}}'] = 'Bearer'{{/isApiKey}}{{#isOAuth}}
101
101
  # Configure OAuth2 access token for authorization: {{{name}}}
102
- config.access_token = 'YOUR ACCESS TOKEN'
102
+ config.access_token = 'YOUR_ACCESS TOKEN'
103
+ # Or use your client ID and client secret to obtain an access token
104
+ config.client_id = 'YOUR_CLIENT_ID'
105
+ config.client_secret = 'YOUR_CLIENT_SECRET'
103
106
  # Configure a proc to get access tokens in lieu of the static access_token configuration
104
107
  config.access_token_getter = -> { 'YOUR TOKEN GETTER PROC' } {{/isOAuth}}
105
108
  {{#isFaraday}}
@@ -0,0 +1,254 @@
1
+ =begin
2
+ {{> api_info}}
3
+
4
+ =end
5
+
6
+ require 'date'
7
+ require 'json'
8
+ require 'logger'
9
+ require 'tempfile'
10
+ require 'time'
11
+ {{#isTyphoeus}}
12
+ require 'typhoeus'
13
+ {{/isTyphoeus}}
14
+ {{#isFaraday}}
15
+ require 'faraday'
16
+ require 'faraday/multipart' if Gem::Version.new(Faraday::VERSION) >= Gem::Version.new('2.0')
17
+ require 'marcel'
18
+ {{/isFaraday}}
19
+ {{#isHttpx}}
20
+ require 'httpx'
21
+ require 'net/http/status'
22
+ {{/isHttpx}}
23
+
24
+
25
+ module {{moduleName}}
26
+ class ApiClient
27
+ # The Configuration object holding settings to be used in the API client.
28
+ attr_accessor :config
29
+
30
+ # Defines the headers to be used in HTTP requests of all API calls by default.
31
+ #
32
+ # @return [Hash]
33
+ attr_accessor :default_headers
34
+
35
+ # Initializes the ApiClient
36
+ # @option config [Configuration] Configuration for initializing the object, default to Configuration.default
37
+ def initialize(config = Configuration.default)
38
+ @config = config
39
+ @user_agent = "{{{httpUserAgent}}}{{^httpUserAgent}}OpenAPI-Generator/#{VERSION}/ruby{{/httpUserAgent}}"
40
+ @default_headers = {
41
+ 'Content-Type' => 'application/json',
42
+ 'User-Agent' => @user_agent
43
+ }
44
+ end
45
+
46
+ def self.default
47
+ @@default ||= ApiClient.new
48
+ end
49
+
50
+ {{#isTyphoeus}}
51
+ {{> api_client_typhoeus_partial}}
52
+
53
+ {{/isTyphoeus}}
54
+ {{#isFaraday}}
55
+ {{> api_client_faraday_partial}}
56
+
57
+ {{/isFaraday}}
58
+ {{#isHttpx}}
59
+ {{> api_client_httpx_partial}}
60
+
61
+ {{/isHttpx}}
62
+ # Check if the given MIME is a JSON MIME.
63
+ # JSON MIME examples:
64
+ # application/json
65
+ # application/json; charset=UTF8
66
+ # APPLICATION/JSON
67
+ # */*
68
+ # @param [String] mime MIME
69
+ # @return [Boolean] True if the MIME is application/json
70
+ def json_mime?(mime)
71
+ (mime == '*/*') || !(mime =~ /^Application\/.*json(?!p)(;.*)?/i).nil?
72
+ end
73
+
74
+ # Deserialize the response to the given return type.
75
+ #
76
+ # @param [Response] response HTTP response
77
+ # @param [String] return_type some examples: "User", "Array<User>", "Hash<String, Integer>"
78
+ def deserialize(response, return_type)
79
+ body = response.body
80
+ return nil if body.nil? || body.empty?
81
+
82
+ # return response body directly for String return type
83
+ return body.to_s if return_type == 'String'
84
+
85
+ # ensuring a default content type
86
+ content_type = response.headers['Content-Type'] || 'application/json'
87
+
88
+ fail "Content-Type is not supported: #{content_type}" unless json_mime?(content_type)
89
+
90
+ begin
91
+ data = JSON.parse("[#{body}]", :symbolize_names => true)[0]
92
+ rescue JSON::ParserError => e
93
+ if %w(String Date Time).include?(return_type)
94
+ data = body
95
+ else
96
+ raise e
97
+ end
98
+ end
99
+
100
+ convert_to_type data, return_type
101
+ end
102
+
103
+ # Convert data to the given return type.
104
+ # @param [Object] data Data to be converted
105
+ # @param [String] return_type Return type
106
+ # @return [Mixed] Data in a particular type
107
+ def convert_to_type(data, return_type)
108
+ return nil if data.nil?
109
+ case return_type
110
+ when 'String'
111
+ data.to_s
112
+ when 'Integer'
113
+ data.to_i
114
+ when 'Float'
115
+ data.to_f
116
+ when 'Boolean'
117
+ data == true
118
+ when 'Time'
119
+ # parse date time (expecting ISO 8601 format)
120
+ Time.parse data
121
+ when 'Date'
122
+ # parse date time (expecting ISO 8601 format)
123
+ Date.parse data
124
+ when 'Object'
125
+ # generic object (usually a Hash), return directly
126
+ data
127
+ when /\AArray<(.+)>\z/
128
+ # e.g. Array<Pet>
129
+ sub_type = $1
130
+ data.map { |item| convert_to_type(item, sub_type) }
131
+ when /\AHash\<String, (.+)\>\z/
132
+ # e.g. Hash<String, Integer>
133
+ sub_type = $1
134
+ {}.tap do |hash|
135
+ data.each { |k, v| hash[k] = convert_to_type(v, sub_type) }
136
+ end
137
+ else
138
+ # models (e.g. Pet) or oneOf/anyOf
139
+ klass = {{moduleName}}.const_get(return_type)
140
+ if klass.respond_to?(:openapi_one_of) || klass.respond_to?(:openapi_any_of)
141
+ klass.build(data)
142
+ else
143
+ klass.build_from_hash(data)
144
+ end
145
+ end
146
+ end
147
+
148
+ # Sanitize filename by removing path.
149
+ # e.g. ../../sun.gif becomes sun.gif
150
+ #
151
+ # @param [String] filename the filename to be sanitized
152
+ # @return [String] the sanitized filename
153
+ def sanitize_filename(filename)
154
+ filename.split(/[\/\\]/).last
155
+ end
156
+
157
+ def build_request_url(path, opts = {})
158
+ # Add leading and trailing slashes to path
159
+ path = "/#{path}".gsub(/\/+/, '/')
160
+ @config.base_url(opts[:operation]) + path
161
+ end
162
+
163
+ # Update header and query params based on authentication settings.
164
+ #
165
+ # @param [Hash] header_params Header parameters
166
+ # @param [Hash] query_params Query parameters
167
+ # @param [String] auth_names Authentication scheme name
168
+ def update_params_for_auth!(header_params, query_params, auth_names)
169
+ Array(auth_names).each do |auth_name|
170
+ auth_setting = @config.auth_settings[auth_name]
171
+ next unless auth_setting
172
+ case auth_setting[:in]
173
+ when 'header' then header_params[auth_setting[:key]] = auth_setting[:value] unless auth_setting[:value].nil?
174
+ when 'query' then query_params[auth_setting[:key]] = auth_setting[:value] unless auth_setting[:value].nil?
175
+ else fail ArgumentError, 'Authentication token must be in `query` or `header`'
176
+ end
177
+ end
178
+ end
179
+
180
+ # Sets user agent in HTTP header
181
+ #
182
+ # @param [String] user_agent User agent (e.g. openapi-generator/ruby/1.0.0)
183
+ def user_agent=(user_agent)
184
+ @user_agent = user_agent
185
+ @default_headers['User-Agent'] = @user_agent
186
+ end
187
+
188
+ # Return Accept header based on an array of accepts provided.
189
+ # @param [Array] accepts array for Accept
190
+ # @return [String] the Accept header (e.g. application/json)
191
+ def select_header_accept(accepts)
192
+ return nil if accepts.nil? || accepts.empty?
193
+ # use JSON when present, otherwise use all of the provided
194
+ json_accept = accepts.find { |s| json_mime?(s) }
195
+ json_accept || accepts.join(',')
196
+ end
197
+
198
+ # Return Content-Type header based on an array of content types provided.
199
+ # @param [Array] content_types array for Content-Type
200
+ # @return [String] the Content-Type header (e.g. application/json)
201
+ def select_header_content_type(content_types)
202
+ # return nil by default
203
+ return if content_types.nil? || content_types.empty?
204
+ # use JSON when present, otherwise use the first one
205
+ json_content_type = content_types.find { |s| json_mime?(s) }
206
+ json_content_type || content_types.first
207
+ end
208
+
209
+ # Convert object (array, hash, object, etc) to JSON string.
210
+ # @param [Object] model object to be converted into JSON string
211
+ # @return [String] JSON string representation of the object
212
+ def object_to_http_body(model)
213
+ return model if model.nil? || model.is_a?(String)
214
+ local_body = nil
215
+ if model.is_a?(Array)
216
+ local_body = model.map { |m| object_to_hash(m) }
217
+ else
218
+ local_body = object_to_hash(model)
219
+ end
220
+ local_body.to_json
221
+ end
222
+
223
+ # Convert object(non-array) to hash.
224
+ # @param [Object] obj object to be converted into JSON string
225
+ # @return [String] JSON string representation of the object
226
+ def object_to_hash(obj)
227
+ if obj.respond_to?(:to_hash)
228
+ obj.to_hash
229
+ else
230
+ obj
231
+ end
232
+ end
233
+
234
+ # Build parameter value according to the given collection format.
235
+ # @param [String] collection_format one of :csv, :ssv, :tsv, :pipes and :multi
236
+ def build_collection_param(param, collection_format)
237
+ case collection_format
238
+ when :csv
239
+ param.join(',')
240
+ when :ssv
241
+ param.join(' ')
242
+ when :tsv
243
+ param.join("\t")
244
+ when :pipes
245
+ param.join('|')
246
+ when :multi
247
+ # return the array directly as typhoeus will handle it as expected
248
+ param
249
+ else
250
+ fail "unknown collection format: #{collection_format.inspect}"
251
+ end
252
+ end
253
+ end
254
+ end