fastpixapi 0.0.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 +7 -0
- data/lib/crystalline/metadata_fields.rb +210 -0
- data/lib/crystalline/t.rb +78 -0
- data/lib/crystalline/utils.rb +95 -0
- data/lib/crystalline.rb +12 -0
- data/lib/fastpix_api_sdk/input_video.rb +454 -0
- data/lib/fastpix_api_sdk/manage_live_stream.rb +717 -0
- data/lib/fastpix_api_sdk/manage_videos.rb +960 -0
- data/lib/fastpix_api_sdk/models/components/audioinput.rb +41 -0
- data/lib/fastpix_api_sdk/models/components/audioinput_type.rb +19 -0
- data/lib/fastpix_api_sdk/models/components/createlivestreamrequest.rb +37 -0
- data/lib/fastpix_api_sdk/models/components/createlivestreamrequest_maxresolution.rb +21 -0
- data/lib/fastpix_api_sdk/models/components/createlivestreamrequest_metadata.rb +28 -0
- data/lib/fastpix_api_sdk/models/components/createmediarequest.rb +89 -0
- data/lib/fastpix_api_sdk/models/components/createmediarequest_accesspolicy.rb +22 -0
- data/lib/fastpix_api_sdk/models/components/createmediarequest_accessrestrictions.rb +37 -0
- data/lib/fastpix_api_sdk/models/components/createmediarequest_domains.rb +48 -0
- data/lib/fastpix_api_sdk/models/components/createmediarequest_domains_defaultpolicy.rb +23 -0
- data/lib/fastpix_api_sdk/models/components/createmediarequest_languagecode.rb +26 -0
- data/lib/fastpix_api_sdk/models/components/createmediarequest_maxresolution.rb +25 -0
- data/lib/fastpix_api_sdk/models/components/createmediarequest_metadata.rb +29 -0
- data/lib/fastpix_api_sdk/models/components/createmediarequest_mp4support.rb +22 -0
- data/lib/fastpix_api_sdk/models/components/createmediarequest_type.rb +22 -0
- data/lib/fastpix_api_sdk/models/components/createmediarequest_useragents.rb +48 -0
- data/lib/fastpix_api_sdk/models/components/createmediarequest_useragents_defaultpolicy.rb +23 -0
- data/lib/fastpix_api_sdk/models/components/createmediaresponse.rb +62 -0
- data/lib/fastpix_api_sdk/models/components/createmediaresponse_maxresolution.rb +24 -0
- data/lib/fastpix_api_sdk/models/components/createmediaresponse_metadata.rb +28 -0
- data/lib/fastpix_api_sdk/models/components/directupload.rb +58 -0
- data/lib/fastpix_api_sdk/models/components/directuploadresponse.rb +37 -0
- data/lib/fastpix_api_sdk/models/components/directuploadresponse_metadata.rb +28 -0
- data/lib/fastpix_api_sdk/models/components/getcreatelivestreamresponsedto.rb +85 -0
- data/lib/fastpix_api_sdk/models/components/getcreatelivestreamresponsedto_metadata.rb +28 -0
- data/lib/fastpix_api_sdk/models/components/getcreatelivestreamresponsedto_srtplaybackresponse.rb +37 -0
- data/lib/fastpix_api_sdk/models/components/getstreamsresponse.rb +41 -0
- data/lib/fastpix_api_sdk/models/components/imposetrack.rb +49 -0
- data/lib/fastpix_api_sdk/models/components/input.rb +28 -0
- data/lib/fastpix_api_sdk/models/components/inputmediasettings.rb +45 -0
- data/lib/fastpix_api_sdk/models/components/livestreamdeleteresponse.rb +33 -0
- data/lib/fastpix_api_sdk/models/components/livestreamgetresponse.rb +37 -0
- data/lib/fastpix_api_sdk/models/components/livestreamresponsedto.rb +37 -0
- data/lib/fastpix_api_sdk/models/components/media.rb +93 -0
- data/lib/fastpix_api_sdk/models/components/media_maxresolution.rb +24 -0
- data/lib/fastpix_api_sdk/models/components/media_metadata.rb +28 -0
- data/lib/fastpix_api_sdk/models/components/media_mp4support.rb +22 -0
- data/lib/fastpix_api_sdk/models/components/mediapolicy.rb +20 -0
- data/lib/fastpix_api_sdk/models/components/moderation.rb +34 -0
- data/lib/fastpix_api_sdk/models/components/pagination.rb +41 -0
- data/lib/fastpix_api_sdk/models/components/patchlivestreamrequest.rb +37 -0
- data/lib/fastpix_api_sdk/models/components/patchlivestreamrequest_metadata.rb +28 -0
- data/lib/fastpix_api_sdk/models/components/patchresponsedata.rb +85 -0
- data/lib/fastpix_api_sdk/models/components/patchresponsedata_metadata.rb +28 -0
- data/lib/fastpix_api_sdk/models/components/patchresponsedata_srtplaybackresponse.rb +37 -0
- data/lib/fastpix_api_sdk/models/components/patchresponsedto.rb +37 -0
- data/lib/fastpix_api_sdk/models/components/placement.rb +45 -0
- data/lib/fastpix_api_sdk/models/components/playbackid.rb +41 -0
- data/lib/fastpix_api_sdk/models/components/playbackid_accesspolicy.rb +21 -0
- data/lib/fastpix_api_sdk/models/components/playbackid_accessrestrictions.rb +37 -0
- data/lib/fastpix_api_sdk/models/components/playbackid_domains.rb +41 -0
- data/lib/fastpix_api_sdk/models/components/playbackid_domains_defaultpolicy.rb +20 -0
- data/lib/fastpix_api_sdk/models/components/playbackid_useragents.rb +41 -0
- data/lib/fastpix_api_sdk/models/components/playbackid_useragents_defaultpolicy.rb +20 -0
- data/lib/fastpix_api_sdk/models/components/playbackidrequest.rb +33 -0
- data/lib/fastpix_api_sdk/models/components/playbackidrequest_accesspolicy.rb +20 -0
- data/lib/fastpix_api_sdk/models/components/playbackidresponse.rb +37 -0
- data/lib/fastpix_api_sdk/models/components/playbackidresponse_data.rb +37 -0
- data/lib/fastpix_api_sdk/models/components/playbackids.rb +37 -0
- data/lib/fastpix_api_sdk/models/components/playbacksettings.rb +33 -0
- data/lib/fastpix_api_sdk/models/components/playbacksettings_accesspolicy.rb +20 -0
- data/lib/fastpix_api_sdk/models/components/security.rb +37 -0
- data/lib/fastpix_api_sdk/models/components/segment_1.rb +37 -0
- data/lib/fastpix_api_sdk/models/components/segment_2.rb +37 -0
- data/lib/fastpix_api_sdk/models/components/segment_union.rb +28 -0
- data/lib/fastpix_api_sdk/models/components/simulcastdeleteresponse.rb +33 -0
- data/lib/fastpix_api_sdk/models/components/simulcastrequest.rb +37 -0
- data/lib/fastpix_api_sdk/models/components/simulcastresponse.rb +37 -0
- data/lib/fastpix_api_sdk/models/components/simulcastresponse_data.rb +49 -0
- data/lib/fastpix_api_sdk/models/components/simulcastresponse_metadata.rb +28 -0
- data/lib/fastpix_api_sdk/models/components/simulcastupdaterequest.rb +37 -0
- data/lib/fastpix_api_sdk/models/components/simulcastupdaterequest_metadata.rb +28 -0
- data/lib/fastpix_api_sdk/models/components/simulcastupdateresponse.rb +37 -0
- data/lib/fastpix_api_sdk/models/components/simulcastupdateresponse_data.rb +49 -0
- data/lib/fastpix_api_sdk/models/components/simulcastupdateresponse_metadata.rb +28 -0
- data/lib/fastpix_api_sdk/models/components/sourceresolution.rb +24 -0
- data/lib/fastpix_api_sdk/models/components/subtitle.rb +45 -0
- data/lib/fastpix_api_sdk/models/components/subtitle_metadata.rb +29 -0
- data/lib/fastpix_api_sdk/models/components/subtitleinput.rb +47 -0
- data/lib/fastpix_api_sdk/models/components/subtitleinput_languagecode.rb +76 -0
- data/lib/fastpix_api_sdk/models/components/summary.rb +40 -0
- data/lib/fastpix_api_sdk/models/components/track.rb +53 -0
- data/lib/fastpix_api_sdk/models/components/videoinput.rb +68 -0
- data/lib/fastpix_api_sdk/models/components/watermarkinput.rb +53 -0
- data/lib/fastpix_api_sdk/models/components/watermarkinput_type.rb +19 -0
- data/lib/fastpix_api_sdk/models/components/xalign.rb +21 -0
- data/lib/fastpix_api_sdk/models/components/yalign.rb +21 -0
- data/lib/fastpix_api_sdk/models/components.rb +98 -0
- data/lib/fastpix_api_sdk/models/errors/apierror.rb +38 -0
- data/lib/fastpix_api_sdk/models/errors/badrequest_error.rb +37 -0
- data/lib/fastpix_api_sdk/models/errors/badrequest_error_error.rb +42 -0
- data/lib/fastpix_api_sdk/models/errors/field.rb +37 -0
- data/lib/fastpix_api_sdk/models/errors/forbidden_error.rb +37 -0
- data/lib/fastpix_api_sdk/models/errors/forbidden_error_error.rb +42 -0
- data/lib/fastpix_api_sdk/models/errors/invalidpermission_error.rb +37 -0
- data/lib/fastpix_api_sdk/models/errors/invalidpermission_error_error.rb +42 -0
- data/lib/fastpix_api_sdk/models/errors/medianotfound_error.rb +37 -0
- data/lib/fastpix_api_sdk/models/errors/medianotfound_error_error.rb +42 -0
- data/lib/fastpix_api_sdk/models/errors/mediaorplaybacknotfound_error.rb +37 -0
- data/lib/fastpix_api_sdk/models/errors/mediaorplaybacknotfound_error_error.rb +42 -0
- data/lib/fastpix_api_sdk/models/errors/notfounderror.rb +37 -0
- data/lib/fastpix_api_sdk/models/errors/notfounderror_error.rb +42 -0
- data/lib/fastpix_api_sdk/models/errors/notfounderrorplaybackid.rb +37 -0
- data/lib/fastpix_api_sdk/models/errors/notfounderrorplaybackid_error.rb +42 -0
- data/lib/fastpix_api_sdk/models/errors/notfounderrorsimulcast.rb +37 -0
- data/lib/fastpix_api_sdk/models/errors/notfounderrorsimulcast_error.rb +42 -0
- data/lib/fastpix_api_sdk/models/errors/simulcastunavailable_error.rb +38 -0
- data/lib/fastpix_api_sdk/models/errors/simulcastunavailable_error_error.rb +45 -0
- data/lib/fastpix_api_sdk/models/errors/unauthorized_error.rb +37 -0
- data/lib/fastpix_api_sdk/models/errors/unauthorized_error_error.rb +42 -0
- data/lib/fastpix_api_sdk/models/errors/validationerrorresponse.rb +37 -0
- data/lib/fastpix_api_sdk/models/errors/validationerrorresponse_error.rb +41 -0
- data/lib/fastpix_api_sdk/models/errors.rb +35 -0
- data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_accesspolicy.rb +21 -0
- data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_accessrestrictions.rb +37 -0
- data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_domains.rb +48 -0
- data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_domains_defaultpolicy.rb +23 -0
- data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_request.rb +37 -0
- data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_requestbody.rb +37 -0
- data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_response.rb +45 -0
- data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_responsebody.rb +37 -0
- data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_useragents.rb +48 -0
- data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_useragents_defaultpolicy.rb +23 -0
- data/lib/fastpix_api_sdk/models/operations/create_media_response.rb +45 -0
- data/lib/fastpix_api_sdk/models/operations/create_media_responsebody.rb +37 -0
- data/lib/fastpix_api_sdk/models/operations/create_new_stream_response.rb +45 -0
- data/lib/fastpix_api_sdk/models/operations/create_playbackid_of_stream_request.rb +37 -0
- data/lib/fastpix_api_sdk/models/operations/create_playbackid_of_stream_response.rb +45 -0
- data/lib/fastpix_api_sdk/models/operations/create_simulcast_of_stream_request.rb +37 -0
- data/lib/fastpix_api_sdk/models/operations/create_simulcast_of_stream_response.rb +45 -0
- data/lib/fastpix_api_sdk/models/operations/data.rb +33 -0
- data/lib/fastpix_api_sdk/models/operations/delete_live_stream_request.rb +33 -0
- data/lib/fastpix_api_sdk/models/operations/delete_live_stream_response.rb +45 -0
- data/lib/fastpix_api_sdk/models/operations/delete_media_playback_id_request.rb +37 -0
- data/lib/fastpix_api_sdk/models/operations/delete_media_playback_id_response.rb +45 -0
- data/lib/fastpix_api_sdk/models/operations/delete_media_playback_id_responsebody.rb +33 -0
- data/lib/fastpix_api_sdk/models/operations/delete_media_request.rb +33 -0
- data/lib/fastpix_api_sdk/models/operations/delete_media_response.rb +45 -0
- data/lib/fastpix_api_sdk/models/operations/delete_media_responsebody.rb +33 -0
- data/lib/fastpix_api_sdk/models/operations/delete_playbackid_of_stream_request.rb +37 -0
- data/lib/fastpix_api_sdk/models/operations/delete_playbackid_of_stream_response.rb +45 -0
- data/lib/fastpix_api_sdk/models/operations/delete_simulcast_of_stream_request.rb +37 -0
- data/lib/fastpix_api_sdk/models/operations/delete_simulcast_of_stream_response.rb +45 -0
- data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_accesspolicy.rb +20 -0
- data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_accessrestrictions.rb +37 -0
- data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_domains.rb +48 -0
- data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_domains_defaultpolicy.rb +23 -0
- data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_metadata.rb +28 -0
- data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_request.rb +37 -0
- data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_response.rb +45 -0
- data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_responsebody.rb +37 -0
- data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_useragents.rb +48 -0
- data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_useragents_defaultpolicy.rb +23 -0
- data/lib/fastpix_api_sdk/models/operations/get_all_streams_orderby.rb +20 -0
- data/lib/fastpix_api_sdk/models/operations/get_all_streams_request.rb +41 -0
- data/lib/fastpix_api_sdk/models/operations/get_all_streams_response.rb +45 -0
- data/lib/fastpix_api_sdk/models/operations/get_live_stream_by_id_request.rb +33 -0
- data/lib/fastpix_api_sdk/models/operations/get_live_stream_by_id_response.rb +45 -0
- data/lib/fastpix_api_sdk/models/operations/get_live_stream_playback_id_request.rb +37 -0
- data/lib/fastpix_api_sdk/models/operations/get_live_stream_playback_id_response.rb +45 -0
- data/lib/fastpix_api_sdk/models/operations/get_media_request.rb +33 -0
- data/lib/fastpix_api_sdk/models/operations/get_media_response.rb +45 -0
- data/lib/fastpix_api_sdk/models/operations/get_media_responsebody.rb +37 -0
- data/lib/fastpix_api_sdk/models/operations/get_specific_simulcast_of_stream_request.rb +37 -0
- data/lib/fastpix_api_sdk/models/operations/get_specific_simulcast_of_stream_response.rb +45 -0
- data/lib/fastpix_api_sdk/models/operations/input.rb +28 -0
- data/lib/fastpix_api_sdk/models/operations/languagecode.rb +26 -0
- data/lib/fastpix_api_sdk/models/operations/list_media_orderby.rb +20 -0
- data/lib/fastpix_api_sdk/models/operations/list_media_request.rb +41 -0
- data/lib/fastpix_api_sdk/models/operations/list_media_response.rb +45 -0
- data/lib/fastpix_api_sdk/models/operations/list_media_responsebody.rb +41 -0
- data/lib/fastpix_api_sdk/models/operations/maxresolution.rb +25 -0
- data/lib/fastpix_api_sdk/models/operations/moderation.rb +34 -0
- data/lib/fastpix_api_sdk/models/operations/mp4support.rb +22 -0
- data/lib/fastpix_api_sdk/models/operations/push_media_settings.rb +95 -0
- data/lib/fastpix_api_sdk/models/operations/retrievemediainputinfo_request.rb +33 -0
- data/lib/fastpix_api_sdk/models/operations/retrievemediainputinfo_response.rb +45 -0
- data/lib/fastpix_api_sdk/models/operations/retrievemediainputinfo_responsebody.rb +37 -0
- data/lib/fastpix_api_sdk/models/operations/subtitles.rb +43 -0
- data/lib/fastpix_api_sdk/models/operations/subtitles_metadata.rb +28 -0
- data/lib/fastpix_api_sdk/models/operations/summary.rb +40 -0
- data/lib/fastpix_api_sdk/models/operations/type.rb +22 -0
- data/lib/fastpix_api_sdk/models/operations/update_live_stream_request.rb +37 -0
- data/lib/fastpix_api_sdk/models/operations/update_live_stream_response.rb +45 -0
- data/lib/fastpix_api_sdk/models/operations/update_specific_simulcast_of_stream_request.rb +41 -0
- data/lib/fastpix_api_sdk/models/operations/update_specific_simulcast_of_stream_response.rb +45 -0
- data/lib/fastpix_api_sdk/models/operations/updated_media_metadata.rb +28 -0
- data/lib/fastpix_api_sdk/models/operations/updated_media_request.rb +37 -0
- data/lib/fastpix_api_sdk/models/operations/updated_media_requestbody.rb +33 -0
- data/lib/fastpix_api_sdk/models/operations/updated_media_response.rb +45 -0
- data/lib/fastpix_api_sdk/models/operations/updated_media_responsebody.rb +37 -0
- data/lib/fastpix_api_sdk/models/operations.rb +89 -0
- data/lib/fastpix_api_sdk/playback.rb +941 -0
- data/lib/fastpix_api_sdk/sdk.rb +103 -0
- data/lib/fastpix_api_sdk/sdk_hooks/hooks.rb +96 -0
- data/lib/fastpix_api_sdk/sdk_hooks/types.rb +157 -0
- data/lib/fastpix_api_sdk/sdkconfiguration.rb +77 -0
- data/lib/fastpix_api_sdk/simulcast_stream.rb +767 -0
- data/lib/fastpix_api_sdk/start_live_stream.rb +208 -0
- data/lib/fastpix_api_sdk/utils/forms.rb +210 -0
- data/lib/fastpix_api_sdk/utils/headers.rb +79 -0
- data/lib/fastpix_api_sdk/utils/query_params.rb +133 -0
- data/lib/fastpix_api_sdk/utils/request_bodies.rb +62 -0
- data/lib/fastpix_api_sdk/utils/retries.rb +95 -0
- data/lib/fastpix_api_sdk/utils/security.rb +133 -0
- data/lib/fastpix_api_sdk/utils/url.rb +102 -0
- data/lib/fastpix_api_sdk/utils/utils.rb +186 -0
- data/lib/fastpixapi.rb +29 -0
- metadata +442 -0
@@ -0,0 +1,208 @@
|
|
1
|
+
# Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
2
|
+
|
3
|
+
# typed: true
|
4
|
+
# frozen_string_literal: true
|
5
|
+
|
6
|
+
require 'faraday'
|
7
|
+
require 'faraday/multipart'
|
8
|
+
require 'faraday/retry'
|
9
|
+
require 'sorbet-runtime'
|
10
|
+
require_relative 'sdk_hooks/hooks'
|
11
|
+
require_relative 'utils/retries'
|
12
|
+
|
13
|
+
module FastpixApiSDK
|
14
|
+
extend T::Sig
|
15
|
+
class StartLiveStream
|
16
|
+
extend T::Sig
|
17
|
+
attr_accessor
|
18
|
+
|
19
|
+
|
20
|
+
sig { params(sdk_config: SDKConfiguration).void }
|
21
|
+
def initialize(sdk_config)
|
22
|
+
@sdk_configuration = sdk_config
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
sig { params(base_url: String, url_variables: T.nilable(T::Hash[Symbol, String])).returns(String) }
|
27
|
+
def get_url(base_url:, url_variables: nil)
|
28
|
+
sd_base_url, sd_options = @sdk_configuration.get_server_details
|
29
|
+
|
30
|
+
if base_url.nil?
|
31
|
+
base_url = sd_base_url
|
32
|
+
end
|
33
|
+
|
34
|
+
if url_variables.nil?
|
35
|
+
url_variables = sd_options
|
36
|
+
end
|
37
|
+
|
38
|
+
return Utils.template_url base_url, url_variables
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
sig { params(request: T.nilable(Models::Components::CreateLiveStreamRequest), timeout_ms: T.nilable(Integer)).returns(Models::Operations::CreateNewStreamResponse) }
|
43
|
+
def create_new_stream(request: nil, timeout_ms: nil)
|
44
|
+
# create_new_stream - Create a new stream
|
45
|
+
# Allows you to initiate a new RTMP or SRT live stream on FastPix. Upon creating a stream, FastPix generates a unique stream key and SRT secret, which can be used with any broadcasting software (like OBS) to connect to FastPix's RTMP or SRT servers. Users can configure the stream settings, including metadata (such as stream name and description), reconnect window (in case of disconnection), privacy options (public or private), and advanced features like enabling DVR mode.
|
46
|
+
# Leverage SRT for live streaming in environments with unstable networks, taking advantage of its error correction and encryption features for a resilient and secure broadcast.
|
47
|
+
#
|
48
|
+
# <h4>How it works</h4>
|
49
|
+
#
|
50
|
+
# When a user sends a POST request to this endpoint, FastPix returns the stream details for both RTMP and SRT configurations. These keys and IDs from the stream details are essential for connecting the broadcasting software to FastPix's servers and transmitting the live stream to viewers.
|
51
|
+
# FastPix uses <a href=https://docs.fastpix.io/docs/webhooks-for-status#/>webhooks</a> to tell your application about things that happen in the background, outside of the API regular request flow. For instance, once the live stream is created, we'll shoot a POST message to the address you give us with the webhook event <a href=https://docs.fastpix.io/docs/video-live_stream-created#/>video.live_stream.created</a>. Here're <a href=https://docs.fastpix.io/docs/webhooks-for-status#/live-stream-related-events>other live stream event related</a> webhooks you would want to look for.
|
52
|
+
#
|
53
|
+
# **Use case:** A gaming content creator initiates a live stream through the API, specifying a 1080p resolution and public access. They receive the stream key, RTMP and SRT details in the response. Using the SRT connection, they broadcast a high-action gaming session with reduced latency, offering viewers a seamless experience.
|
54
|
+
#
|
55
|
+
#
|
56
|
+
# **Detailed example:**
|
57
|
+
# Imagine a gaming platform that allows users to live stream gameplay directly from their dashboard. The API creates a new stream, provides the necessary stream key, and sets it to "private" so that only specific viewers can access it.
|
58
|
+
url, params = @sdk_configuration.get_server_details
|
59
|
+
base_url = Utils.template_url(url, params)
|
60
|
+
url = "#{base_url}/streams"
|
61
|
+
headers = {}
|
62
|
+
req_content_type, data, form = Utils.serialize_request_body(request, false, true, :request, :json)
|
63
|
+
headers['content-type'] = req_content_type
|
64
|
+
|
65
|
+
if form
|
66
|
+
body = Utils.encode_form(form)
|
67
|
+
elsif Utils.match_content_type(req_content_type, 'application/x-www-form-urlencoded')
|
68
|
+
body = URI.encode_www_form(data)
|
69
|
+
else
|
70
|
+
body = data
|
71
|
+
end
|
72
|
+
headers['Accept'] = 'application/json'
|
73
|
+
headers['user-agent'] = @sdk_configuration.user_agent
|
74
|
+
|
75
|
+
security = !@sdk_configuration.nil? && !@sdk_configuration.security_source.nil? ? @sdk_configuration.security_source.call : nil
|
76
|
+
|
77
|
+
timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
|
78
|
+
timeout ||= @sdk_configuration.timeout
|
79
|
+
|
80
|
+
connection = @sdk_configuration.client
|
81
|
+
|
82
|
+
hook_ctx = SDKHooks::HookContext.new(
|
83
|
+
config: @sdk_configuration,
|
84
|
+
base_url: base_url,
|
85
|
+
oauth2_scopes: [],
|
86
|
+
operation_id: 'create-new-stream',
|
87
|
+
security_source: @sdk_configuration.security_source
|
88
|
+
)
|
89
|
+
|
90
|
+
error = T.let(nil, T.nilable(StandardError))
|
91
|
+
http_response = T.let(nil, T.nilable(Faraday::Response))
|
92
|
+
|
93
|
+
|
94
|
+
begin
|
95
|
+
http_response = connection.post(url) do |req|
|
96
|
+
req.body = body
|
97
|
+
req.headers.merge!(headers)
|
98
|
+
req.options.timeout = timeout unless timeout.nil?
|
99
|
+
Utils.configure_request_security(req, security)
|
100
|
+
|
101
|
+
@sdk_configuration.hooks.before_request(
|
102
|
+
hook_ctx: SDKHooks::BeforeRequestHookContext.new(
|
103
|
+
hook_ctx: hook_ctx
|
104
|
+
),
|
105
|
+
request: req
|
106
|
+
)
|
107
|
+
end
|
108
|
+
rescue StandardError => e
|
109
|
+
error = e
|
110
|
+
ensure
|
111
|
+
if http_response.nil? || Utils.error_status?(http_response.status)
|
112
|
+
http_response = @sdk_configuration.hooks.after_error(
|
113
|
+
error: error,
|
114
|
+
hook_ctx: SDKHooks::AfterErrorHookContext.new(
|
115
|
+
hook_ctx: hook_ctx
|
116
|
+
),
|
117
|
+
response: http_response
|
118
|
+
)
|
119
|
+
else
|
120
|
+
http_response = @sdk_configuration.hooks.after_success(
|
121
|
+
hook_ctx: SDKHooks::AfterSuccessHookContext.new(
|
122
|
+
hook_ctx: hook_ctx
|
123
|
+
),
|
124
|
+
response: http_response
|
125
|
+
)
|
126
|
+
end
|
127
|
+
|
128
|
+
if http_response.nil?
|
129
|
+
raise error if !error.nil?
|
130
|
+
raise 'no response'
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
|
135
|
+
if Utils.match_status_code(http_response.status, ['201'])
|
136
|
+
if Utils.match_content_type(content_type, 'application/json')
|
137
|
+
http_response = @sdk_configuration.hooks.after_success(
|
138
|
+
hook_ctx: SDKHooks::AfterSuccessHookContext.new(
|
139
|
+
hook_ctx: hook_ctx
|
140
|
+
),
|
141
|
+
response: http_response
|
142
|
+
)
|
143
|
+
response_data = http_response.env.response_body
|
144
|
+
obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::LiveStreamResponseDTO)
|
145
|
+
response = Models::Operations::CreateNewStreamResponse.new(
|
146
|
+
status_code: http_response.status,
|
147
|
+
content_type: content_type,
|
148
|
+
raw_response: http_response,
|
149
|
+
live_stream_response_dto: obj
|
150
|
+
)
|
151
|
+
|
152
|
+
return response
|
153
|
+
else
|
154
|
+
raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
|
155
|
+
end
|
156
|
+
elsif Utils.match_status_code(http_response.status, ['401'])
|
157
|
+
if Utils.match_content_type(content_type, 'application/json')
|
158
|
+
http_response = @sdk_configuration.hooks.after_success(
|
159
|
+
hook_ctx: SDKHooks::AfterSuccessHookContext.new(
|
160
|
+
hook_ctx: hook_ctx
|
161
|
+
),
|
162
|
+
response: http_response
|
163
|
+
)
|
164
|
+
response_data = http_response.env.response_body
|
165
|
+
obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::UnauthorizedError)
|
166
|
+
throw obj
|
167
|
+
else
|
168
|
+
raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
|
169
|
+
end
|
170
|
+
elsif Utils.match_status_code(http_response.status, ['403'])
|
171
|
+
if Utils.match_content_type(content_type, 'application/json')
|
172
|
+
http_response = @sdk_configuration.hooks.after_success(
|
173
|
+
hook_ctx: SDKHooks::AfterSuccessHookContext.new(
|
174
|
+
hook_ctx: hook_ctx
|
175
|
+
),
|
176
|
+
response: http_response
|
177
|
+
)
|
178
|
+
response_data = http_response.env.response_body
|
179
|
+
obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::InvalidPermissionError)
|
180
|
+
throw obj
|
181
|
+
else
|
182
|
+
raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
|
183
|
+
end
|
184
|
+
elsif Utils.match_status_code(http_response.status, ['422'])
|
185
|
+
if Utils.match_content_type(content_type, 'application/json')
|
186
|
+
http_response = @sdk_configuration.hooks.after_success(
|
187
|
+
hook_ctx: SDKHooks::AfterSuccessHookContext.new(
|
188
|
+
hook_ctx: hook_ctx
|
189
|
+
),
|
190
|
+
response: http_response
|
191
|
+
)
|
192
|
+
response_data = http_response.env.response_body
|
193
|
+
obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ValidationErrorResponse)
|
194
|
+
throw obj
|
195
|
+
else
|
196
|
+
raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
|
197
|
+
end
|
198
|
+
elsif Utils.match_status_code(http_response.status, ['4XX'])
|
199
|
+
raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
|
200
|
+
elsif Utils.match_status_code(http_response.status, ['5XX'])
|
201
|
+
raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
|
202
|
+
else
|
203
|
+
raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown status code received'
|
204
|
+
|
205
|
+
end
|
206
|
+
end
|
207
|
+
end
|
208
|
+
end
|
@@ -0,0 +1,210 @@
|
|
1
|
+
# Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
2
|
+
|
3
|
+
# typed: true
|
4
|
+
# frozen_string_literal: true
|
5
|
+
|
6
|
+
require 'cgi'
|
7
|
+
require 'date'
|
8
|
+
require 'sorbet-runtime'
|
9
|
+
require 'base64'
|
10
|
+
|
11
|
+
module FastpixApiSDK
|
12
|
+
module Utils
|
13
|
+
extend T::Sig
|
14
|
+
|
15
|
+
sig do
|
16
|
+
params(field_name: String, explode: T::Boolean, obj: Object, delimiter: String,
|
17
|
+
get_field_name_lambda: T.proc.params(obj_field: ::Crystalline::MetadataFields::Field).returns(String))
|
18
|
+
.returns(T::Hash[Symbol, T::Array[String]])
|
19
|
+
end
|
20
|
+
def self._populate_form(field_name, explode, obj, delimiter, &get_field_name_lambda)
|
21
|
+
params = {}
|
22
|
+
|
23
|
+
return params if obj.nil?
|
24
|
+
|
25
|
+
if obj.respond_to? :fields
|
26
|
+
items = []
|
27
|
+
obj_fields = obj.fields
|
28
|
+
obj_fields.each do |obj_field|
|
29
|
+
obj_field_name = get_field_name_lambda.call(obj_field)
|
30
|
+
next if obj_field_name == ''
|
31
|
+
|
32
|
+
val = obj.send(obj_field.name.to_sym)
|
33
|
+
next if val.nil?
|
34
|
+
|
35
|
+
if explode
|
36
|
+
params[obj_field_name] = [val_to_string(val)]
|
37
|
+
else
|
38
|
+
items.append("#{obj_field_name}#{delimiter}#{val_to_string(val)}")
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
params[field_name] = [items.join(delimiter)] if !items.empty?
|
43
|
+
elsif obj.is_a? Hash
|
44
|
+
items = []
|
45
|
+
obj.each do |key, value|
|
46
|
+
next if value.nil?
|
47
|
+
|
48
|
+
if explode
|
49
|
+
params[key] = val_to_string(value)
|
50
|
+
else
|
51
|
+
items.append("#{key}#{delimiter}#{val_to_string(value)}")
|
52
|
+
end
|
53
|
+
end
|
54
|
+
params[field_name] = [items.join(delimiter)] if !items.empty?
|
55
|
+
|
56
|
+
elsif obj.is_a? Array
|
57
|
+
items = []
|
58
|
+
obj.each do |value|
|
59
|
+
next if value.nil?
|
60
|
+
|
61
|
+
if explode
|
62
|
+
params[field_name] = [] if !params.key? field_name
|
63
|
+
|
64
|
+
params[field_name].append(val_to_string(value))
|
65
|
+
else
|
66
|
+
items.append(val_to_string(value))
|
67
|
+
end
|
68
|
+
end
|
69
|
+
params[field_name] = items.map(&:to_s).join(delimiter) if !items.empty?
|
70
|
+
|
71
|
+
else
|
72
|
+
params[field_name] = val_to_string(obj)
|
73
|
+
end
|
74
|
+
params
|
75
|
+
end
|
76
|
+
|
77
|
+
sig { params(media_type: String, request: Object).returns([String, Object, T::Array[T::Array[Object]]]) }
|
78
|
+
def self.serialize_multipart_form(media_type, request)
|
79
|
+
form = []
|
80
|
+
request_fields = request.fields
|
81
|
+
request_fields.each do |field|
|
82
|
+
val = request.send(field.name)
|
83
|
+
next if val.nil?
|
84
|
+
|
85
|
+
field_metadata = field.metadata[:multipart_form]
|
86
|
+
next if field_metadata.nil?
|
87
|
+
|
88
|
+
if field_metadata[:file] == true
|
89
|
+
field_name = field_metadata[:field_name]
|
90
|
+
|
91
|
+
# Handle arrays of files
|
92
|
+
if val.is_a? Array
|
93
|
+
val.each do |file_obj|
|
94
|
+
file_fields = file_obj.fields
|
95
|
+
file_name = ''
|
96
|
+
content = nil
|
97
|
+
|
98
|
+
file_fields.each do |file_field|
|
99
|
+
file_metadata = file_field.metadata[:multipart_form]
|
100
|
+
next if file_metadata.nil?
|
101
|
+
|
102
|
+
if file_metadata[:content] == true
|
103
|
+
content = file_obj.send(file_field.name)
|
104
|
+
else
|
105
|
+
file_name = file_obj.send(file_field.name)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
raise StandardError, 'invalid multipart/form-data file' if file_name == '' || content == nil?
|
109
|
+
|
110
|
+
form.append([field_name, [file_name, content]])
|
111
|
+
end
|
112
|
+
else
|
113
|
+
# Handle single file
|
114
|
+
file_fields = val.fields
|
115
|
+
file_name = ''
|
116
|
+
content = nil
|
117
|
+
|
118
|
+
file_fields.each do |file_field|
|
119
|
+
file_metadata = file_field.metadata[:multipart_form]
|
120
|
+
next if file_metadata.nil?
|
121
|
+
|
122
|
+
if file_metadata[:content] == true
|
123
|
+
content = val.send(file_field.name)
|
124
|
+
else
|
125
|
+
file_name = val.send(file_field.name)
|
126
|
+
end
|
127
|
+
end
|
128
|
+
raise StandardError, 'invalid multipart/form-data file' if file_name == '' || content == nil?
|
129
|
+
|
130
|
+
form.append([field_name, [file_name, content]])
|
131
|
+
end
|
132
|
+
elsif field_metadata[:json] == true
|
133
|
+
to_append = [
|
134
|
+
field_metadata.fetch(:field_name, field.name), [
|
135
|
+
nil, ::Crystalline.to_json(val), 'application/json'
|
136
|
+
]
|
137
|
+
]
|
138
|
+
form.append(to_append)
|
139
|
+
else
|
140
|
+
field_name = field_metadata.fetch(
|
141
|
+
:field_name, field.name
|
142
|
+
)
|
143
|
+
if val.is_a? Array
|
144
|
+
val.each do |value|
|
145
|
+
next if value.nil?
|
146
|
+
|
147
|
+
form.append(
|
148
|
+
["#{field_name}[]", [nil, val_to_string(value)]]
|
149
|
+
)
|
150
|
+
end
|
151
|
+
else
|
152
|
+
form.append([field_name, [nil, val_to_string(val)]])
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
156
|
+
[media_type, nil, form]
|
157
|
+
end
|
158
|
+
|
159
|
+
|
160
|
+
sig do
|
161
|
+
params(field_name: Symbol, data: T.any(Object, T::Hash[Symbol, String]))
|
162
|
+
.returns(T::Hash[Symbol, Object])
|
163
|
+
end
|
164
|
+
def self.serialize_form_data(field_name, data)
|
165
|
+
get_form_field_name = lambda do |obj_field|
|
166
|
+
obj_param_metadata = obj_field.metadata[:form]
|
167
|
+
|
168
|
+
return '' if obj_param_metadata.nil?
|
169
|
+
|
170
|
+
return obj_param_metadata.fetch(:field_name, obj_field.name)
|
171
|
+
end
|
172
|
+
|
173
|
+
form = {}
|
174
|
+
if data.respond_to? :fields
|
175
|
+
data.fields.each do |field|
|
176
|
+
val = data.send(field.name)
|
177
|
+
next if val.nil?
|
178
|
+
|
179
|
+
metadata = field.metadata[:form]
|
180
|
+
|
181
|
+
next if metadata.nil?
|
182
|
+
|
183
|
+
field_name = metadata.fetch(:field_name, field.name)
|
184
|
+
|
185
|
+
if metadata[:json]
|
186
|
+
form[field_name] = ::Crystalline.to_json(val)
|
187
|
+
else
|
188
|
+
if metadata.fetch(:style, 'form') == 'form'
|
189
|
+
form = form.merge(
|
190
|
+
_populate_form(
|
191
|
+
field_name, metadata.fetch(:explode, true), val, ',', &get_form_field_name
|
192
|
+
)
|
193
|
+
)
|
194
|
+
else
|
195
|
+
raise StandardError, "Invalid form style for field #{field.name}"
|
196
|
+
end
|
197
|
+
end
|
198
|
+
end
|
199
|
+
elsif data.is_a? Hash
|
200
|
+
data.each do |key, value|
|
201
|
+
form[key] = [val_to_string(value)]
|
202
|
+
end
|
203
|
+
else
|
204
|
+
raise StandardError, "Invalid request body type for field #{field_name}"
|
205
|
+
end
|
206
|
+
|
207
|
+
form
|
208
|
+
end
|
209
|
+
end
|
210
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
# Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
2
|
+
|
3
|
+
# typed: true
|
4
|
+
# frozen_string_literal: true
|
5
|
+
|
6
|
+
require 'cgi'
|
7
|
+
require 'date'
|
8
|
+
require 'sorbet-runtime'
|
9
|
+
require 'base64'
|
10
|
+
|
11
|
+
module FastpixApiSDK
|
12
|
+
module Utils
|
13
|
+
extend T::Sig
|
14
|
+
|
15
|
+
sig { params(headers_params: Object, gbls: T.nilable(T::Hash[Symbol, T::Hash[Symbol, T::Hash[Symbol, Object]]])).returns(T::Hash[Symbol, String]) }
|
16
|
+
def self.get_headers(headers_params, gbls = nil)
|
17
|
+
return {} if headers_params.nil?
|
18
|
+
|
19
|
+
headers = {}
|
20
|
+
param_fields = headers_params.fields
|
21
|
+
param_fields.each do |f|
|
22
|
+
metadata = f.metadata[:header]
|
23
|
+
next if metadata.nil?
|
24
|
+
|
25
|
+
value = _populate_from_globals(f.name, headers_params&.send(f.name), 'header', gbls)
|
26
|
+
value = _serialize_header(metadata.fetch(:explode, false), value)
|
27
|
+
headers[metadata.fetch(:field_name, f.name)] = value if !value.empty?
|
28
|
+
end
|
29
|
+
headers
|
30
|
+
end
|
31
|
+
|
32
|
+
sig { params(explode: T::Boolean, obj: Object).returns(String) }
|
33
|
+
def self._serialize_header(explode, obj)
|
34
|
+
return '' if obj.nil?
|
35
|
+
|
36
|
+
if obj.respond_to? :fields
|
37
|
+
items = []
|
38
|
+
obj_fields = obj.fields
|
39
|
+
obj_fields.each do |obj_field|
|
40
|
+
obj_param_metadata = obj_field.metadata[:header]
|
41
|
+
next if obj_param_metadata.nil?
|
42
|
+
|
43
|
+
obj_field_name = obj_param_metadata.fetch(:field_name, obj_field.name)
|
44
|
+
next if obj_field_name == ''
|
45
|
+
|
46
|
+
val = obj.send(obj_field.name)
|
47
|
+
next if val.nil?
|
48
|
+
|
49
|
+
if explode
|
50
|
+
items.append("#{obj_field_name}=#{val_to_string(val)}")
|
51
|
+
else
|
52
|
+
items.append(obj_field_name)
|
53
|
+
items.append(val_to_string(val))
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
items.join(',') if !items.empty?
|
58
|
+
elsif obj.is_a? Hash
|
59
|
+
items = []
|
60
|
+
obj.each do |key, value|
|
61
|
+
next if value.nil?
|
62
|
+
|
63
|
+
if explode
|
64
|
+
items.append("#{key}=#{val_to_string(value)}")
|
65
|
+
else
|
66
|
+
items.append(key)
|
67
|
+
items.append(val_to_string(value))
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
items.join(',') if !items.empty?
|
72
|
+
elsif obj.is_a? Array
|
73
|
+
items = obj.filter { |v| !v.nil? }.map { |v| val_to_string(v) }.join(',')
|
74
|
+
else
|
75
|
+
val_to_string(obj)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,133 @@
|
|
1
|
+
# Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
2
|
+
|
3
|
+
# typed: true
|
4
|
+
# frozen_string_literal: true
|
5
|
+
|
6
|
+
require 'cgi'
|
7
|
+
require 'date'
|
8
|
+
require 'sorbet-runtime'
|
9
|
+
require 'base64'
|
10
|
+
|
11
|
+
module FastpixApiSDK
|
12
|
+
module Utils
|
13
|
+
extend T::Sig
|
14
|
+
|
15
|
+
sig { params(clazz: Class, query_params: Object, url_override: T.nilable(::String), gbls: T.nilable(T::Hash[Symbol, T::Hash[Symbol, T::Hash[Symbol, Object]]])).returns(T::Hash[Symbol, T::Array[String]]) }
|
16
|
+
def self.get_query_params(clazz, query_params, url_override = nil, gbls = nil)
|
17
|
+
parsed_params = {}
|
18
|
+
if !url_override.nil?
|
19
|
+
parsed_url = URI.parse url_override
|
20
|
+
parsed_params = CGI.parse parsed_url.query
|
21
|
+
end
|
22
|
+
params = {}
|
23
|
+
param_fields = clazz.fields
|
24
|
+
param_fields.each do |f|
|
25
|
+
request_metadata = f.metadata[:request]
|
26
|
+
next if !request_metadata.nil?
|
27
|
+
|
28
|
+
metadata = f.metadata[:query_param]
|
29
|
+
next if metadata.nil?
|
30
|
+
|
31
|
+
param_name = f.name
|
32
|
+
value = query_params&.send(param_name.to_sym)
|
33
|
+
value = _populate_from_globals(param_name, value, 'queryParam', gbls)
|
34
|
+
|
35
|
+
f_name = metadata[:field_name]
|
36
|
+
serialization = metadata.fetch(:serialization, '')
|
37
|
+
if serialization != ''
|
38
|
+
params = params.merge _get_serialized_params(
|
39
|
+
metadata, f_name, value
|
40
|
+
)
|
41
|
+
else
|
42
|
+
style = metadata.fetch(:style, 'form')
|
43
|
+
case style
|
44
|
+
when 'deepObject'
|
45
|
+
params = params.merge _get_deep_object_query_params(
|
46
|
+
metadata, f_name, value
|
47
|
+
)
|
48
|
+
when 'form'
|
49
|
+
params = params.merge _get_delimited_query_params(
|
50
|
+
metadata, f_name, value, ','
|
51
|
+
)
|
52
|
+
when 'pipeDelimited'
|
53
|
+
params = params.merge _get_delimited_query_params(
|
54
|
+
metadata, f_name, value, '|'
|
55
|
+
)
|
56
|
+
else
|
57
|
+
raise StandardError, 'not yet implemented'
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
params.merge parsed_params
|
62
|
+
end
|
63
|
+
|
64
|
+
sig do
|
65
|
+
params(metadata: T::Hash[Symbol, String], field_name: String, obj: Object)
|
66
|
+
.returns(T::Hash[Symbol, T::Array[String]])
|
67
|
+
end
|
68
|
+
def self._get_deep_object_query_params(metadata, field_name, obj)
|
69
|
+
params = {}
|
70
|
+
|
71
|
+
return params if obj.nil?
|
72
|
+
|
73
|
+
if obj.respond_to? :fields
|
74
|
+
obj_fields = obj.fields
|
75
|
+
obj_fields.each do |obj_field|
|
76
|
+
obj_param_metadata = obj_field.metadata[:query_param]
|
77
|
+
next if obj_param_metadata.nil?
|
78
|
+
|
79
|
+
val = obj.send(obj_field.name)
|
80
|
+
next if val.nil?
|
81
|
+
|
82
|
+
key = "#{metadata.fetch(:field_name, field_name)}[#{obj_param_metadata.fetch(:field_name, obj_field.name)}]"
|
83
|
+
if val.is_a? Array
|
84
|
+
val.each do |v|
|
85
|
+
next if v.nil?
|
86
|
+
|
87
|
+
params[key] = [] if !params.include? key
|
88
|
+
|
89
|
+
params[key] << val_to_string(v)
|
90
|
+
end
|
91
|
+
else
|
92
|
+
params[key] = [val_to_string(val)]
|
93
|
+
end
|
94
|
+
end
|
95
|
+
elsif obj.is_a? Hash
|
96
|
+
obj.each do |key, value|
|
97
|
+
next if value.nil?
|
98
|
+
|
99
|
+
param_key = "#{metadata.fetch(:field_name, field_name)}[#{key}]"
|
100
|
+
if value.is_a? Array
|
101
|
+
value.each do |val|
|
102
|
+
next if val.nil?
|
103
|
+
|
104
|
+
params[param_key] = [] if !params.include? param_key
|
105
|
+
|
106
|
+
params[param_key].append(val_to_string(val))
|
107
|
+
end
|
108
|
+
else
|
109
|
+
params[param_key] = [val_to_string(value)]
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
params
|
114
|
+
end
|
115
|
+
|
116
|
+
|
117
|
+
sig do
|
118
|
+
params(metadata: T::Hash[Symbol, String], field_name: String, obj: Object, delimiter: String)
|
119
|
+
.returns(T::Hash[Symbol, T::Array[String]])
|
120
|
+
end
|
121
|
+
def self._get_delimited_query_params(metadata, field_name, obj, delimiter)
|
122
|
+
get_query_param_field_name = lambda do |obj_field|
|
123
|
+
obj_param_metadata = obj_field.metadata[:query_param]
|
124
|
+
|
125
|
+
return '' if obj_param_metadata.nil?
|
126
|
+
|
127
|
+
return obj_param_metadata.fetch(:field_name, obj_field.name)
|
128
|
+
end
|
129
|
+
|
130
|
+
_populate_form(field_name, metadata.fetch(:explode, true), obj, delimiter, &get_query_param_field_name)
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
2
|
+
|
3
|
+
# typed: true
|
4
|
+
# frozen_string_literal: true
|
5
|
+
|
6
|
+
require 'cgi'
|
7
|
+
require 'date'
|
8
|
+
require 'sorbet-runtime'
|
9
|
+
require 'base64'
|
10
|
+
|
11
|
+
module FastpixApiSDK
|
12
|
+
module Utils
|
13
|
+
extend T::Sig
|
14
|
+
|
15
|
+
SERIALIZATION_METHOD_TO_CONTENT_TYPE = {
|
16
|
+
'json': 'application/json',
|
17
|
+
'form': 'application/x-www-form-urlencoded',
|
18
|
+
'multipart': 'multipart/form-data',
|
19
|
+
'raw': 'application/octet-stream',
|
20
|
+
'string': 'text/plain'
|
21
|
+
}.freeze
|
22
|
+
|
23
|
+
sig do
|
24
|
+
params(request: Object, nullable: T::Boolean, optional: T::Boolean, request_field_name: Symbol, serialization_method: Symbol)
|
25
|
+
.returns([String, Object, Object])
|
26
|
+
end
|
27
|
+
def self.serialize_request_body(request, nullable, optional, request_field_name, serialization_method)
|
28
|
+
return ['', nil, nil] if request.nil? && !nullable && optional
|
29
|
+
|
30
|
+
return serialize_content_type(request_field_name, SERIALIZATION_METHOD_TO_CONTENT_TYPE[serialization_method], request) if !request.respond_to?(:fields) || !request.respond_to?(request_field_name)
|
31
|
+
|
32
|
+
request_val = request.send(request_field_name)
|
33
|
+
|
34
|
+
request_fields = request.fields
|
35
|
+
request_metadata = nil
|
36
|
+
request_fields.each do |f|
|
37
|
+
if f.name == request_field_name
|
38
|
+
request_metadata = f.metadata[:request]
|
39
|
+
break
|
40
|
+
end
|
41
|
+
end
|
42
|
+
raise StandardError, 'invalid request type' if request_metadata.nil?
|
43
|
+
|
44
|
+
serialize_content_type(
|
45
|
+
:request, request_metadata.fetch(:media_type, 'application/octet-stream'), request_val
|
46
|
+
)
|
47
|
+
end
|
48
|
+
|
49
|
+
sig do
|
50
|
+
params(field_name: Symbol, media_type: String, request: Object)
|
51
|
+
.returns([String, Object, T.nilable(T::Array[T::Array[Object]])])
|
52
|
+
end
|
53
|
+
def self.serialize_content_type(field_name, media_type, request)
|
54
|
+
return media_type, ::Crystalline.to_json(request), nil if media_type.match('(application|text)\/.*?\+*json.*')
|
55
|
+
return serialize_multipart_form(media_type, request) if media_type.match('multipart\/.*')
|
56
|
+
return media_type, serialize_form_data(field_name, request), nil if media_type.match('application\/x-www-form-urlencoded.*')
|
57
|
+
return media_type, request, nil if request.is_a?(String) || request.is_a?(Array)
|
58
|
+
|
59
|
+
raise StandardError, "invalid request body type #{type(request)} for mediaType {metadata['media_type']}"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|