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
|