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.
Files changed (217) hide show
  1. checksums.yaml +7 -0
  2. data/lib/crystalline/metadata_fields.rb +210 -0
  3. data/lib/crystalline/t.rb +78 -0
  4. data/lib/crystalline/utils.rb +95 -0
  5. data/lib/crystalline.rb +12 -0
  6. data/lib/fastpix_api_sdk/input_video.rb +454 -0
  7. data/lib/fastpix_api_sdk/manage_live_stream.rb +717 -0
  8. data/lib/fastpix_api_sdk/manage_videos.rb +960 -0
  9. data/lib/fastpix_api_sdk/models/components/audioinput.rb +41 -0
  10. data/lib/fastpix_api_sdk/models/components/audioinput_type.rb +19 -0
  11. data/lib/fastpix_api_sdk/models/components/createlivestreamrequest.rb +37 -0
  12. data/lib/fastpix_api_sdk/models/components/createlivestreamrequest_maxresolution.rb +21 -0
  13. data/lib/fastpix_api_sdk/models/components/createlivestreamrequest_metadata.rb +28 -0
  14. data/lib/fastpix_api_sdk/models/components/createmediarequest.rb +89 -0
  15. data/lib/fastpix_api_sdk/models/components/createmediarequest_accesspolicy.rb +22 -0
  16. data/lib/fastpix_api_sdk/models/components/createmediarequest_accessrestrictions.rb +37 -0
  17. data/lib/fastpix_api_sdk/models/components/createmediarequest_domains.rb +48 -0
  18. data/lib/fastpix_api_sdk/models/components/createmediarequest_domains_defaultpolicy.rb +23 -0
  19. data/lib/fastpix_api_sdk/models/components/createmediarequest_languagecode.rb +26 -0
  20. data/lib/fastpix_api_sdk/models/components/createmediarequest_maxresolution.rb +25 -0
  21. data/lib/fastpix_api_sdk/models/components/createmediarequest_metadata.rb +29 -0
  22. data/lib/fastpix_api_sdk/models/components/createmediarequest_mp4support.rb +22 -0
  23. data/lib/fastpix_api_sdk/models/components/createmediarequest_type.rb +22 -0
  24. data/lib/fastpix_api_sdk/models/components/createmediarequest_useragents.rb +48 -0
  25. data/lib/fastpix_api_sdk/models/components/createmediarequest_useragents_defaultpolicy.rb +23 -0
  26. data/lib/fastpix_api_sdk/models/components/createmediaresponse.rb +62 -0
  27. data/lib/fastpix_api_sdk/models/components/createmediaresponse_maxresolution.rb +24 -0
  28. data/lib/fastpix_api_sdk/models/components/createmediaresponse_metadata.rb +28 -0
  29. data/lib/fastpix_api_sdk/models/components/directupload.rb +58 -0
  30. data/lib/fastpix_api_sdk/models/components/directuploadresponse.rb +37 -0
  31. data/lib/fastpix_api_sdk/models/components/directuploadresponse_metadata.rb +28 -0
  32. data/lib/fastpix_api_sdk/models/components/getcreatelivestreamresponsedto.rb +85 -0
  33. data/lib/fastpix_api_sdk/models/components/getcreatelivestreamresponsedto_metadata.rb +28 -0
  34. data/lib/fastpix_api_sdk/models/components/getcreatelivestreamresponsedto_srtplaybackresponse.rb +37 -0
  35. data/lib/fastpix_api_sdk/models/components/getstreamsresponse.rb +41 -0
  36. data/lib/fastpix_api_sdk/models/components/imposetrack.rb +49 -0
  37. data/lib/fastpix_api_sdk/models/components/input.rb +28 -0
  38. data/lib/fastpix_api_sdk/models/components/inputmediasettings.rb +45 -0
  39. data/lib/fastpix_api_sdk/models/components/livestreamdeleteresponse.rb +33 -0
  40. data/lib/fastpix_api_sdk/models/components/livestreamgetresponse.rb +37 -0
  41. data/lib/fastpix_api_sdk/models/components/livestreamresponsedto.rb +37 -0
  42. data/lib/fastpix_api_sdk/models/components/media.rb +93 -0
  43. data/lib/fastpix_api_sdk/models/components/media_maxresolution.rb +24 -0
  44. data/lib/fastpix_api_sdk/models/components/media_metadata.rb +28 -0
  45. data/lib/fastpix_api_sdk/models/components/media_mp4support.rb +22 -0
  46. data/lib/fastpix_api_sdk/models/components/mediapolicy.rb +20 -0
  47. data/lib/fastpix_api_sdk/models/components/moderation.rb +34 -0
  48. data/lib/fastpix_api_sdk/models/components/pagination.rb +41 -0
  49. data/lib/fastpix_api_sdk/models/components/patchlivestreamrequest.rb +37 -0
  50. data/lib/fastpix_api_sdk/models/components/patchlivestreamrequest_metadata.rb +28 -0
  51. data/lib/fastpix_api_sdk/models/components/patchresponsedata.rb +85 -0
  52. data/lib/fastpix_api_sdk/models/components/patchresponsedata_metadata.rb +28 -0
  53. data/lib/fastpix_api_sdk/models/components/patchresponsedata_srtplaybackresponse.rb +37 -0
  54. data/lib/fastpix_api_sdk/models/components/patchresponsedto.rb +37 -0
  55. data/lib/fastpix_api_sdk/models/components/placement.rb +45 -0
  56. data/lib/fastpix_api_sdk/models/components/playbackid.rb +41 -0
  57. data/lib/fastpix_api_sdk/models/components/playbackid_accesspolicy.rb +21 -0
  58. data/lib/fastpix_api_sdk/models/components/playbackid_accessrestrictions.rb +37 -0
  59. data/lib/fastpix_api_sdk/models/components/playbackid_domains.rb +41 -0
  60. data/lib/fastpix_api_sdk/models/components/playbackid_domains_defaultpolicy.rb +20 -0
  61. data/lib/fastpix_api_sdk/models/components/playbackid_useragents.rb +41 -0
  62. data/lib/fastpix_api_sdk/models/components/playbackid_useragents_defaultpolicy.rb +20 -0
  63. data/lib/fastpix_api_sdk/models/components/playbackidrequest.rb +33 -0
  64. data/lib/fastpix_api_sdk/models/components/playbackidrequest_accesspolicy.rb +20 -0
  65. data/lib/fastpix_api_sdk/models/components/playbackidresponse.rb +37 -0
  66. data/lib/fastpix_api_sdk/models/components/playbackidresponse_data.rb +37 -0
  67. data/lib/fastpix_api_sdk/models/components/playbackids.rb +37 -0
  68. data/lib/fastpix_api_sdk/models/components/playbacksettings.rb +33 -0
  69. data/lib/fastpix_api_sdk/models/components/playbacksettings_accesspolicy.rb +20 -0
  70. data/lib/fastpix_api_sdk/models/components/security.rb +37 -0
  71. data/lib/fastpix_api_sdk/models/components/segment_1.rb +37 -0
  72. data/lib/fastpix_api_sdk/models/components/segment_2.rb +37 -0
  73. data/lib/fastpix_api_sdk/models/components/segment_union.rb +28 -0
  74. data/lib/fastpix_api_sdk/models/components/simulcastdeleteresponse.rb +33 -0
  75. data/lib/fastpix_api_sdk/models/components/simulcastrequest.rb +37 -0
  76. data/lib/fastpix_api_sdk/models/components/simulcastresponse.rb +37 -0
  77. data/lib/fastpix_api_sdk/models/components/simulcastresponse_data.rb +49 -0
  78. data/lib/fastpix_api_sdk/models/components/simulcastresponse_metadata.rb +28 -0
  79. data/lib/fastpix_api_sdk/models/components/simulcastupdaterequest.rb +37 -0
  80. data/lib/fastpix_api_sdk/models/components/simulcastupdaterequest_metadata.rb +28 -0
  81. data/lib/fastpix_api_sdk/models/components/simulcastupdateresponse.rb +37 -0
  82. data/lib/fastpix_api_sdk/models/components/simulcastupdateresponse_data.rb +49 -0
  83. data/lib/fastpix_api_sdk/models/components/simulcastupdateresponse_metadata.rb +28 -0
  84. data/lib/fastpix_api_sdk/models/components/sourceresolution.rb +24 -0
  85. data/lib/fastpix_api_sdk/models/components/subtitle.rb +45 -0
  86. data/lib/fastpix_api_sdk/models/components/subtitle_metadata.rb +29 -0
  87. data/lib/fastpix_api_sdk/models/components/subtitleinput.rb +47 -0
  88. data/lib/fastpix_api_sdk/models/components/subtitleinput_languagecode.rb +76 -0
  89. data/lib/fastpix_api_sdk/models/components/summary.rb +40 -0
  90. data/lib/fastpix_api_sdk/models/components/track.rb +53 -0
  91. data/lib/fastpix_api_sdk/models/components/videoinput.rb +68 -0
  92. data/lib/fastpix_api_sdk/models/components/watermarkinput.rb +53 -0
  93. data/lib/fastpix_api_sdk/models/components/watermarkinput_type.rb +19 -0
  94. data/lib/fastpix_api_sdk/models/components/xalign.rb +21 -0
  95. data/lib/fastpix_api_sdk/models/components/yalign.rb +21 -0
  96. data/lib/fastpix_api_sdk/models/components.rb +98 -0
  97. data/lib/fastpix_api_sdk/models/errors/apierror.rb +38 -0
  98. data/lib/fastpix_api_sdk/models/errors/badrequest_error.rb +37 -0
  99. data/lib/fastpix_api_sdk/models/errors/badrequest_error_error.rb +42 -0
  100. data/lib/fastpix_api_sdk/models/errors/field.rb +37 -0
  101. data/lib/fastpix_api_sdk/models/errors/forbidden_error.rb +37 -0
  102. data/lib/fastpix_api_sdk/models/errors/forbidden_error_error.rb +42 -0
  103. data/lib/fastpix_api_sdk/models/errors/invalidpermission_error.rb +37 -0
  104. data/lib/fastpix_api_sdk/models/errors/invalidpermission_error_error.rb +42 -0
  105. data/lib/fastpix_api_sdk/models/errors/medianotfound_error.rb +37 -0
  106. data/lib/fastpix_api_sdk/models/errors/medianotfound_error_error.rb +42 -0
  107. data/lib/fastpix_api_sdk/models/errors/mediaorplaybacknotfound_error.rb +37 -0
  108. data/lib/fastpix_api_sdk/models/errors/mediaorplaybacknotfound_error_error.rb +42 -0
  109. data/lib/fastpix_api_sdk/models/errors/notfounderror.rb +37 -0
  110. data/lib/fastpix_api_sdk/models/errors/notfounderror_error.rb +42 -0
  111. data/lib/fastpix_api_sdk/models/errors/notfounderrorplaybackid.rb +37 -0
  112. data/lib/fastpix_api_sdk/models/errors/notfounderrorplaybackid_error.rb +42 -0
  113. data/lib/fastpix_api_sdk/models/errors/notfounderrorsimulcast.rb +37 -0
  114. data/lib/fastpix_api_sdk/models/errors/notfounderrorsimulcast_error.rb +42 -0
  115. data/lib/fastpix_api_sdk/models/errors/simulcastunavailable_error.rb +38 -0
  116. data/lib/fastpix_api_sdk/models/errors/simulcastunavailable_error_error.rb +45 -0
  117. data/lib/fastpix_api_sdk/models/errors/unauthorized_error.rb +37 -0
  118. data/lib/fastpix_api_sdk/models/errors/unauthorized_error_error.rb +42 -0
  119. data/lib/fastpix_api_sdk/models/errors/validationerrorresponse.rb +37 -0
  120. data/lib/fastpix_api_sdk/models/errors/validationerrorresponse_error.rb +41 -0
  121. data/lib/fastpix_api_sdk/models/errors.rb +35 -0
  122. data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_accesspolicy.rb +21 -0
  123. data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_accessrestrictions.rb +37 -0
  124. data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_domains.rb +48 -0
  125. data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_domains_defaultpolicy.rb +23 -0
  126. data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_request.rb +37 -0
  127. data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_requestbody.rb +37 -0
  128. data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_response.rb +45 -0
  129. data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_responsebody.rb +37 -0
  130. data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_useragents.rb +48 -0
  131. data/lib/fastpix_api_sdk/models/operations/create_media_playback_id_useragents_defaultpolicy.rb +23 -0
  132. data/lib/fastpix_api_sdk/models/operations/create_media_response.rb +45 -0
  133. data/lib/fastpix_api_sdk/models/operations/create_media_responsebody.rb +37 -0
  134. data/lib/fastpix_api_sdk/models/operations/create_new_stream_response.rb +45 -0
  135. data/lib/fastpix_api_sdk/models/operations/create_playbackid_of_stream_request.rb +37 -0
  136. data/lib/fastpix_api_sdk/models/operations/create_playbackid_of_stream_response.rb +45 -0
  137. data/lib/fastpix_api_sdk/models/operations/create_simulcast_of_stream_request.rb +37 -0
  138. data/lib/fastpix_api_sdk/models/operations/create_simulcast_of_stream_response.rb +45 -0
  139. data/lib/fastpix_api_sdk/models/operations/data.rb +33 -0
  140. data/lib/fastpix_api_sdk/models/operations/delete_live_stream_request.rb +33 -0
  141. data/lib/fastpix_api_sdk/models/operations/delete_live_stream_response.rb +45 -0
  142. data/lib/fastpix_api_sdk/models/operations/delete_media_playback_id_request.rb +37 -0
  143. data/lib/fastpix_api_sdk/models/operations/delete_media_playback_id_response.rb +45 -0
  144. data/lib/fastpix_api_sdk/models/operations/delete_media_playback_id_responsebody.rb +33 -0
  145. data/lib/fastpix_api_sdk/models/operations/delete_media_request.rb +33 -0
  146. data/lib/fastpix_api_sdk/models/operations/delete_media_response.rb +45 -0
  147. data/lib/fastpix_api_sdk/models/operations/delete_media_responsebody.rb +33 -0
  148. data/lib/fastpix_api_sdk/models/operations/delete_playbackid_of_stream_request.rb +37 -0
  149. data/lib/fastpix_api_sdk/models/operations/delete_playbackid_of_stream_response.rb +45 -0
  150. data/lib/fastpix_api_sdk/models/operations/delete_simulcast_of_stream_request.rb +37 -0
  151. data/lib/fastpix_api_sdk/models/operations/delete_simulcast_of_stream_response.rb +45 -0
  152. data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_accesspolicy.rb +20 -0
  153. data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_accessrestrictions.rb +37 -0
  154. data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_domains.rb +48 -0
  155. data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_domains_defaultpolicy.rb +23 -0
  156. data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_metadata.rb +28 -0
  157. data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_request.rb +37 -0
  158. data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_response.rb +45 -0
  159. data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_responsebody.rb +37 -0
  160. data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_useragents.rb +48 -0
  161. data/lib/fastpix_api_sdk/models/operations/direct_upload_video_media_useragents_defaultpolicy.rb +23 -0
  162. data/lib/fastpix_api_sdk/models/operations/get_all_streams_orderby.rb +20 -0
  163. data/lib/fastpix_api_sdk/models/operations/get_all_streams_request.rb +41 -0
  164. data/lib/fastpix_api_sdk/models/operations/get_all_streams_response.rb +45 -0
  165. data/lib/fastpix_api_sdk/models/operations/get_live_stream_by_id_request.rb +33 -0
  166. data/lib/fastpix_api_sdk/models/operations/get_live_stream_by_id_response.rb +45 -0
  167. data/lib/fastpix_api_sdk/models/operations/get_live_stream_playback_id_request.rb +37 -0
  168. data/lib/fastpix_api_sdk/models/operations/get_live_stream_playback_id_response.rb +45 -0
  169. data/lib/fastpix_api_sdk/models/operations/get_media_request.rb +33 -0
  170. data/lib/fastpix_api_sdk/models/operations/get_media_response.rb +45 -0
  171. data/lib/fastpix_api_sdk/models/operations/get_media_responsebody.rb +37 -0
  172. data/lib/fastpix_api_sdk/models/operations/get_specific_simulcast_of_stream_request.rb +37 -0
  173. data/lib/fastpix_api_sdk/models/operations/get_specific_simulcast_of_stream_response.rb +45 -0
  174. data/lib/fastpix_api_sdk/models/operations/input.rb +28 -0
  175. data/lib/fastpix_api_sdk/models/operations/languagecode.rb +26 -0
  176. data/lib/fastpix_api_sdk/models/operations/list_media_orderby.rb +20 -0
  177. data/lib/fastpix_api_sdk/models/operations/list_media_request.rb +41 -0
  178. data/lib/fastpix_api_sdk/models/operations/list_media_response.rb +45 -0
  179. data/lib/fastpix_api_sdk/models/operations/list_media_responsebody.rb +41 -0
  180. data/lib/fastpix_api_sdk/models/operations/maxresolution.rb +25 -0
  181. data/lib/fastpix_api_sdk/models/operations/moderation.rb +34 -0
  182. data/lib/fastpix_api_sdk/models/operations/mp4support.rb +22 -0
  183. data/lib/fastpix_api_sdk/models/operations/push_media_settings.rb +95 -0
  184. data/lib/fastpix_api_sdk/models/operations/retrievemediainputinfo_request.rb +33 -0
  185. data/lib/fastpix_api_sdk/models/operations/retrievemediainputinfo_response.rb +45 -0
  186. data/lib/fastpix_api_sdk/models/operations/retrievemediainputinfo_responsebody.rb +37 -0
  187. data/lib/fastpix_api_sdk/models/operations/subtitles.rb +43 -0
  188. data/lib/fastpix_api_sdk/models/operations/subtitles_metadata.rb +28 -0
  189. data/lib/fastpix_api_sdk/models/operations/summary.rb +40 -0
  190. data/lib/fastpix_api_sdk/models/operations/type.rb +22 -0
  191. data/lib/fastpix_api_sdk/models/operations/update_live_stream_request.rb +37 -0
  192. data/lib/fastpix_api_sdk/models/operations/update_live_stream_response.rb +45 -0
  193. data/lib/fastpix_api_sdk/models/operations/update_specific_simulcast_of_stream_request.rb +41 -0
  194. data/lib/fastpix_api_sdk/models/operations/update_specific_simulcast_of_stream_response.rb +45 -0
  195. data/lib/fastpix_api_sdk/models/operations/updated_media_metadata.rb +28 -0
  196. data/lib/fastpix_api_sdk/models/operations/updated_media_request.rb +37 -0
  197. data/lib/fastpix_api_sdk/models/operations/updated_media_requestbody.rb +33 -0
  198. data/lib/fastpix_api_sdk/models/operations/updated_media_response.rb +45 -0
  199. data/lib/fastpix_api_sdk/models/operations/updated_media_responsebody.rb +37 -0
  200. data/lib/fastpix_api_sdk/models/operations.rb +89 -0
  201. data/lib/fastpix_api_sdk/playback.rb +941 -0
  202. data/lib/fastpix_api_sdk/sdk.rb +103 -0
  203. data/lib/fastpix_api_sdk/sdk_hooks/hooks.rb +96 -0
  204. data/lib/fastpix_api_sdk/sdk_hooks/types.rb +157 -0
  205. data/lib/fastpix_api_sdk/sdkconfiguration.rb +77 -0
  206. data/lib/fastpix_api_sdk/simulcast_stream.rb +767 -0
  207. data/lib/fastpix_api_sdk/start_live_stream.rb +208 -0
  208. data/lib/fastpix_api_sdk/utils/forms.rb +210 -0
  209. data/lib/fastpix_api_sdk/utils/headers.rb +79 -0
  210. data/lib/fastpix_api_sdk/utils/query_params.rb +133 -0
  211. data/lib/fastpix_api_sdk/utils/request_bodies.rb +62 -0
  212. data/lib/fastpix_api_sdk/utils/retries.rb +95 -0
  213. data/lib/fastpix_api_sdk/utils/security.rb +133 -0
  214. data/lib/fastpix_api_sdk/utils/url.rb +102 -0
  215. data/lib/fastpix_api_sdk/utils/utils.rb +186 -0
  216. data/lib/fastpixapi.rb +29 -0
  217. metadata +442 -0
@@ -0,0 +1,767 @@
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 SimulcastStream
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(stream_id: ::String, simulcast_request: T.nilable(Models::Components::SimulcastRequest), timeout_ms: T.nilable(Integer)).returns(Models::Operations::CreateSimulcastOfStreamResponse) }
43
+ def create_simulcast_of_stream(stream_id:, simulcast_request: nil, timeout_ms: nil)
44
+ # create_simulcast_of_stream - Create a simulcast
45
+ # Lets you to create a simulcast for a parent live stream. A simulcast enables you to broadcast the live stream to multiple platforms simultaneously (e.g., YouTube, Facebook, or Twitch). This feature is useful for expanding your audience reach across different platforms. However, a simulcast can only be created when the parent live stream is in an idle state (i.e., not currently live or disabled). Additionally, only one simulcast target can be created per API call.
46
+ #
47
+ # <h4>How it works</h4>
48
+ #
49
+ #
50
+ # Upon calling this endpoint, you need to provide the parent streamId and the details of the simulcast target (platform and credentials). The system will generate a unique simulcastId, which can be used to manage the simulcast later.
51
+ #
52
+ #
53
+ #
54
+ # To notify your application about the status of simulcast related events check for the webhooks for simulcast target events.
55
+ #
56
+ # **Practical example:** An event manager sets up a live stream for a virtual conference and wants to simulcast the stream on YouTube and Facebook Live. They first create the primary live stream in FastPix, ensuring it's in the idle state. Then, they use the API to create a simulcast target for YouTube.
57
+ request = Models::Operations::CreateSimulcastOfStreamRequest.new(
58
+
59
+ stream_id: stream_id,
60
+ simulcast_request: simulcast_request
61
+ )
62
+ url, params = @sdk_configuration.get_server_details
63
+ base_url = Utils.template_url(url, params)
64
+ url = Utils.generate_url(
65
+ Models::Operations::CreateSimulcastOfStreamRequest,
66
+ base_url,
67
+ '/streams/{streamId}/simulcast',
68
+ request
69
+ )
70
+ headers = {}
71
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :simulcast_request, :json)
72
+ headers['content-type'] = req_content_type
73
+
74
+ if form
75
+ body = Utils.encode_form(form)
76
+ elsif Utils.match_content_type(req_content_type, 'application/x-www-form-urlencoded')
77
+ body = URI.encode_www_form(data)
78
+ else
79
+ body = data
80
+ end
81
+ headers['Accept'] = 'application/json'
82
+ headers['user-agent'] = @sdk_configuration.user_agent
83
+
84
+ security = !@sdk_configuration.nil? && !@sdk_configuration.security_source.nil? ? @sdk_configuration.security_source.call : nil
85
+
86
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
87
+ timeout ||= @sdk_configuration.timeout
88
+
89
+ connection = @sdk_configuration.client
90
+
91
+ hook_ctx = SDKHooks::HookContext.new(
92
+ config: @sdk_configuration,
93
+ base_url: base_url,
94
+ oauth2_scopes: [],
95
+ operation_id: 'create-simulcast-of-stream',
96
+ security_source: @sdk_configuration.security_source
97
+ )
98
+
99
+ error = T.let(nil, T.nilable(StandardError))
100
+ http_response = T.let(nil, T.nilable(Faraday::Response))
101
+
102
+
103
+ begin
104
+ http_response = connection.post(url) do |req|
105
+ req.body = body
106
+ req.headers.merge!(headers)
107
+ req.options.timeout = timeout unless timeout.nil?
108
+ Utils.configure_request_security(req, security)
109
+
110
+ @sdk_configuration.hooks.before_request(
111
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
112
+ hook_ctx: hook_ctx
113
+ ),
114
+ request: req
115
+ )
116
+ end
117
+ rescue StandardError => e
118
+ error = e
119
+ ensure
120
+ if http_response.nil? || Utils.error_status?(http_response.status)
121
+ http_response = @sdk_configuration.hooks.after_error(
122
+ error: error,
123
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
124
+ hook_ctx: hook_ctx
125
+ ),
126
+ response: http_response
127
+ )
128
+ else
129
+ http_response = @sdk_configuration.hooks.after_success(
130
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
131
+ hook_ctx: hook_ctx
132
+ ),
133
+ response: http_response
134
+ )
135
+ end
136
+
137
+ if http_response.nil?
138
+ raise error if !error.nil?
139
+ raise 'no response'
140
+ end
141
+ end
142
+
143
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
144
+ if Utils.match_status_code(http_response.status, ['201'])
145
+ if Utils.match_content_type(content_type, 'application/json')
146
+ http_response = @sdk_configuration.hooks.after_success(
147
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
148
+ hook_ctx: hook_ctx
149
+ ),
150
+ response: http_response
151
+ )
152
+ response_data = http_response.env.response_body
153
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::SimulcastResponse)
154
+ response = Models::Operations::CreateSimulcastOfStreamResponse.new(
155
+ status_code: http_response.status,
156
+ content_type: content_type,
157
+ raw_response: http_response,
158
+ simulcast_response: obj
159
+ )
160
+
161
+ return response
162
+ else
163
+ 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'
164
+ end
165
+ elsif Utils.match_status_code(http_response.status, ['400'])
166
+ if Utils.match_content_type(content_type, 'application/json')
167
+ http_response = @sdk_configuration.hooks.after_success(
168
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
169
+ hook_ctx: hook_ctx
170
+ ),
171
+ response: http_response
172
+ )
173
+ response_data = http_response.env.response_body
174
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::SimulcastUnavailableError)
175
+ throw obj
176
+ else
177
+ 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'
178
+ end
179
+ elsif Utils.match_status_code(http_response.status, ['401'])
180
+ if Utils.match_content_type(content_type, 'application/json')
181
+ http_response = @sdk_configuration.hooks.after_success(
182
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
183
+ hook_ctx: hook_ctx
184
+ ),
185
+ response: http_response
186
+ )
187
+ response_data = http_response.env.response_body
188
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::UnauthorizedError)
189
+ throw obj
190
+ else
191
+ 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'
192
+ end
193
+ elsif Utils.match_status_code(http_response.status, ['403'])
194
+ if Utils.match_content_type(content_type, 'application/json')
195
+ http_response = @sdk_configuration.hooks.after_success(
196
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
197
+ hook_ctx: hook_ctx
198
+ ),
199
+ response: http_response
200
+ )
201
+ response_data = http_response.env.response_body
202
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::InvalidPermissionError)
203
+ throw obj
204
+ else
205
+ 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'
206
+ end
207
+ elsif Utils.match_status_code(http_response.status, ['404'])
208
+ if Utils.match_content_type(content_type, 'application/json')
209
+ http_response = @sdk_configuration.hooks.after_success(
210
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
211
+ hook_ctx: hook_ctx
212
+ ),
213
+ response: http_response
214
+ )
215
+ response_data = http_response.env.response_body
216
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::NotFoundError)
217
+ throw obj
218
+ else
219
+ 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'
220
+ end
221
+ elsif Utils.match_status_code(http_response.status, ['422'])
222
+ if Utils.match_content_type(content_type, 'application/json')
223
+ http_response = @sdk_configuration.hooks.after_success(
224
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
225
+ hook_ctx: hook_ctx
226
+ ),
227
+ response: http_response
228
+ )
229
+ response_data = http_response.env.response_body
230
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ValidationErrorResponse)
231
+ throw obj
232
+ else
233
+ 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'
234
+ end
235
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
236
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
237
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
238
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
239
+ else
240
+ 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'
241
+
242
+ end
243
+ end
244
+
245
+
246
+ sig { params(stream_id: ::String, simulcast_id: ::String, timeout_ms: T.nilable(Integer)).returns(Models::Operations::DeleteSimulcastOfStreamResponse) }
247
+ def delete_simulcast_of_stream(stream_id:, simulcast_id:, timeout_ms: nil)
248
+ # delete_simulcast_of_stream - Delete a simulcast
249
+ # Allows you to delete a simulcast using its unique simulcastId, which was returned during the simulcast creation process. Deleting a simulcast stops the broadcast to the associated platform, but the parent stream will continue to run if it is live. This action is irreversible, and a new simulcast would need to be created if you want to resume streaming to the same platform.
250
+ #
251
+ # **Use case:** A broadcaster needs to stop simulcasting to one platform due to technical difficulties while keeping the stream active on others. For example, a tech company is simulcasting a product launch on multiple platforms. Midway through the event, they decide to stop the simulcast on Facebook due to performance issues, but keep it running on YouTube. They call this API to delete the Facebook simulcast target.
252
+ request = Models::Operations::DeleteSimulcastOfStreamRequest.new(
253
+
254
+ stream_id: stream_id,
255
+ simulcast_id: simulcast_id
256
+ )
257
+ url, params = @sdk_configuration.get_server_details
258
+ base_url = Utils.template_url(url, params)
259
+ url = Utils.generate_url(
260
+ Models::Operations::DeleteSimulcastOfStreamRequest,
261
+ base_url,
262
+ '/streams/{streamId}/simulcast/{simulcastId}',
263
+ request
264
+ )
265
+ headers = {}
266
+ headers['Accept'] = 'application/json'
267
+ headers['user-agent'] = @sdk_configuration.user_agent
268
+
269
+ security = !@sdk_configuration.nil? && !@sdk_configuration.security_source.nil? ? @sdk_configuration.security_source.call : nil
270
+
271
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
272
+ timeout ||= @sdk_configuration.timeout
273
+
274
+ connection = @sdk_configuration.client
275
+
276
+ hook_ctx = SDKHooks::HookContext.new(
277
+ config: @sdk_configuration,
278
+ base_url: base_url,
279
+ oauth2_scopes: [],
280
+ operation_id: 'delete-simulcast-of-stream',
281
+ security_source: @sdk_configuration.security_source
282
+ )
283
+
284
+ error = T.let(nil, T.nilable(StandardError))
285
+ http_response = T.let(nil, T.nilable(Faraday::Response))
286
+
287
+
288
+ begin
289
+ http_response = connection.delete(url) do |req|
290
+ req.headers.merge!(headers)
291
+ req.options.timeout = timeout unless timeout.nil?
292
+ Utils.configure_request_security(req, security)
293
+
294
+ @sdk_configuration.hooks.before_request(
295
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
296
+ hook_ctx: hook_ctx
297
+ ),
298
+ request: req
299
+ )
300
+ end
301
+ rescue StandardError => e
302
+ error = e
303
+ ensure
304
+ if http_response.nil? || Utils.error_status?(http_response.status)
305
+ http_response = @sdk_configuration.hooks.after_error(
306
+ error: error,
307
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
308
+ hook_ctx: hook_ctx
309
+ ),
310
+ response: http_response
311
+ )
312
+ else
313
+ http_response = @sdk_configuration.hooks.after_success(
314
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
315
+ hook_ctx: hook_ctx
316
+ ),
317
+ response: http_response
318
+ )
319
+ end
320
+
321
+ if http_response.nil?
322
+ raise error if !error.nil?
323
+ raise 'no response'
324
+ end
325
+ end
326
+
327
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
328
+ if Utils.match_status_code(http_response.status, ['200'])
329
+ if Utils.match_content_type(content_type, 'application/json')
330
+ http_response = @sdk_configuration.hooks.after_success(
331
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
332
+ hook_ctx: hook_ctx
333
+ ),
334
+ response: http_response
335
+ )
336
+ response_data = http_response.env.response_body
337
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::SimulcastdeleteResponse)
338
+ response = Models::Operations::DeleteSimulcastOfStreamResponse.new(
339
+ status_code: http_response.status,
340
+ content_type: content_type,
341
+ raw_response: http_response,
342
+ simulcastdelete_response: obj
343
+ )
344
+
345
+ return response
346
+ else
347
+ 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'
348
+ end
349
+ elsif Utils.match_status_code(http_response.status, ['401'])
350
+ if Utils.match_content_type(content_type, 'application/json')
351
+ http_response = @sdk_configuration.hooks.after_success(
352
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
353
+ hook_ctx: hook_ctx
354
+ ),
355
+ response: http_response
356
+ )
357
+ response_data = http_response.env.response_body
358
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::UnauthorizedError)
359
+ throw obj
360
+ else
361
+ 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'
362
+ end
363
+ elsif Utils.match_status_code(http_response.status, ['403'])
364
+ if Utils.match_content_type(content_type, 'application/json')
365
+ http_response = @sdk_configuration.hooks.after_success(
366
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
367
+ hook_ctx: hook_ctx
368
+ ),
369
+ response: http_response
370
+ )
371
+ response_data = http_response.env.response_body
372
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::InvalidPermissionError)
373
+ throw obj
374
+ else
375
+ 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'
376
+ end
377
+ elsif Utils.match_status_code(http_response.status, ['404'])
378
+ if Utils.match_content_type(content_type, 'application/json')
379
+ http_response = @sdk_configuration.hooks.after_success(
380
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
381
+ hook_ctx: hook_ctx
382
+ ),
383
+ response: http_response
384
+ )
385
+ response_data = http_response.env.response_body
386
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::NotFoundErrorSimulcast)
387
+ throw obj
388
+ else
389
+ 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'
390
+ end
391
+ elsif Utils.match_status_code(http_response.status, ['422'])
392
+ if Utils.match_content_type(content_type, 'application/json')
393
+ http_response = @sdk_configuration.hooks.after_success(
394
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
395
+ hook_ctx: hook_ctx
396
+ ),
397
+ response: http_response
398
+ )
399
+ response_data = http_response.env.response_body
400
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ValidationErrorResponse)
401
+ throw obj
402
+ else
403
+ 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'
404
+ end
405
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
406
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
407
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
408
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
409
+ else
410
+ 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'
411
+
412
+ end
413
+ end
414
+
415
+
416
+ sig { params(stream_id: ::String, simulcast_id: ::String, timeout_ms: T.nilable(Integer)).returns(Models::Operations::GetSpecificSimulcastOfStreamResponse) }
417
+ def get_specific_simulcast_of_stream(stream_id:, simulcast_id:, timeout_ms: nil)
418
+ # get_specific_simulcast_of_stream - Get a specific simulcast of a stream
419
+ # Retrieves the details of a specific simulcast associated with a parent live stream. By providing both the streamId of the parent stream and the simulcastId, FastPix returns detailed information about the simulcast, such as the stream URL, the status of the simulcast (active or idle), and metadata.
420
+ #
421
+ # **Use case:** This endpoint can be used to verify the status of the simulcast on external platforms before the live stream begins. For instance, before starting a live gaming event, the organizer wants to ensure that the simulcast to Twitch is set up correctly. They retrieve the simulcast information to confirm that everything is properly configured.
422
+ request = Models::Operations::GetSpecificSimulcastOfStreamRequest.new(
423
+
424
+ stream_id: stream_id,
425
+ simulcast_id: simulcast_id
426
+ )
427
+ url, params = @sdk_configuration.get_server_details
428
+ base_url = Utils.template_url(url, params)
429
+ url = Utils.generate_url(
430
+ Models::Operations::GetSpecificSimulcastOfStreamRequest,
431
+ base_url,
432
+ '/streams/{streamId}/simulcast/{simulcastId}',
433
+ request
434
+ )
435
+ headers = {}
436
+ headers['Accept'] = 'application/json'
437
+ headers['user-agent'] = @sdk_configuration.user_agent
438
+
439
+ security = !@sdk_configuration.nil? && !@sdk_configuration.security_source.nil? ? @sdk_configuration.security_source.call : nil
440
+
441
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
442
+ timeout ||= @sdk_configuration.timeout
443
+
444
+ connection = @sdk_configuration.client
445
+
446
+ hook_ctx = SDKHooks::HookContext.new(
447
+ config: @sdk_configuration,
448
+ base_url: base_url,
449
+ oauth2_scopes: [],
450
+ operation_id: 'get-specific-simulcast-of-stream',
451
+ security_source: @sdk_configuration.security_source
452
+ )
453
+
454
+ error = T.let(nil, T.nilable(StandardError))
455
+ http_response = T.let(nil, T.nilable(Faraday::Response))
456
+
457
+
458
+ begin
459
+ http_response = connection.get(url) do |req|
460
+ req.headers.merge!(headers)
461
+ req.options.timeout = timeout unless timeout.nil?
462
+ Utils.configure_request_security(req, security)
463
+
464
+ @sdk_configuration.hooks.before_request(
465
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
466
+ hook_ctx: hook_ctx
467
+ ),
468
+ request: req
469
+ )
470
+ end
471
+ rescue StandardError => e
472
+ error = e
473
+ ensure
474
+ if http_response.nil? || Utils.error_status?(http_response.status)
475
+ http_response = @sdk_configuration.hooks.after_error(
476
+ error: error,
477
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
478
+ hook_ctx: hook_ctx
479
+ ),
480
+ response: http_response
481
+ )
482
+ else
483
+ http_response = @sdk_configuration.hooks.after_success(
484
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
485
+ hook_ctx: hook_ctx
486
+ ),
487
+ response: http_response
488
+ )
489
+ end
490
+
491
+ if http_response.nil?
492
+ raise error if !error.nil?
493
+ raise 'no response'
494
+ end
495
+ end
496
+
497
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
498
+ if Utils.match_status_code(http_response.status, ['200'])
499
+ if Utils.match_content_type(content_type, 'application/json')
500
+ http_response = @sdk_configuration.hooks.after_success(
501
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
502
+ hook_ctx: hook_ctx
503
+ ),
504
+ response: http_response
505
+ )
506
+ response_data = http_response.env.response_body
507
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::SimulcastResponse)
508
+ response = Models::Operations::GetSpecificSimulcastOfStreamResponse.new(
509
+ status_code: http_response.status,
510
+ content_type: content_type,
511
+ raw_response: http_response,
512
+ simulcast_response: obj
513
+ )
514
+
515
+ return response
516
+ else
517
+ 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'
518
+ end
519
+ elsif Utils.match_status_code(http_response.status, ['401'])
520
+ if Utils.match_content_type(content_type, 'application/json')
521
+ http_response = @sdk_configuration.hooks.after_success(
522
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
523
+ hook_ctx: hook_ctx
524
+ ),
525
+ response: http_response
526
+ )
527
+ response_data = http_response.env.response_body
528
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::UnauthorizedError)
529
+ throw obj
530
+ else
531
+ 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'
532
+ end
533
+ elsif Utils.match_status_code(http_response.status, ['403'])
534
+ if Utils.match_content_type(content_type, 'application/json')
535
+ http_response = @sdk_configuration.hooks.after_success(
536
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
537
+ hook_ctx: hook_ctx
538
+ ),
539
+ response: http_response
540
+ )
541
+ response_data = http_response.env.response_body
542
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::InvalidPermissionError)
543
+ throw obj
544
+ else
545
+ 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'
546
+ end
547
+ elsif Utils.match_status_code(http_response.status, ['404'])
548
+ if Utils.match_content_type(content_type, 'application/json')
549
+ http_response = @sdk_configuration.hooks.after_success(
550
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
551
+ hook_ctx: hook_ctx
552
+ ),
553
+ response: http_response
554
+ )
555
+ response_data = http_response.env.response_body
556
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::NotFoundErrorSimulcast)
557
+ throw obj
558
+ else
559
+ 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'
560
+ end
561
+ elsif Utils.match_status_code(http_response.status, ['422'])
562
+ if Utils.match_content_type(content_type, 'application/json')
563
+ http_response = @sdk_configuration.hooks.after_success(
564
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
565
+ hook_ctx: hook_ctx
566
+ ),
567
+ response: http_response
568
+ )
569
+ response_data = http_response.env.response_body
570
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ValidationErrorResponse)
571
+ throw obj
572
+ else
573
+ 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'
574
+ end
575
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
576
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
577
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
578
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
579
+ else
580
+ 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'
581
+
582
+ end
583
+ end
584
+
585
+
586
+ sig { params(stream_id: ::String, simulcast_id: ::String, simulcast_update_request: T.nilable(Models::Components::SimulcastUpdateRequest), timeout_ms: T.nilable(Integer)).returns(Models::Operations::UpdateSpecificSimulcastOfStreamResponse) }
587
+ def update_specific_simulcast_of_stream(stream_id:, simulcast_id:, simulcast_update_request: nil, timeout_ms: nil)
588
+ # update_specific_simulcast_of_stream - Update a specific simulcast of a stream
589
+ # Allows you to enable or disable a specific simulcast associated with a parent live stream. The status of the simulcast can be updated at any point, whether the live stream is active or idle. However, once the live stream is disabled, the simulcast can no longer be modified.
590
+ #
591
+ # **Use case:** When a PATCH request is made to this endpoint, the API updates the status of the simulcast. This can be useful for pausing or resuming a simulcast on a particular platform without stopping the parent live stream.
592
+ request = Models::Operations::UpdateSpecificSimulcastOfStreamRequest.new(
593
+
594
+ stream_id: stream_id,
595
+ simulcast_id: simulcast_id,
596
+ simulcast_update_request: simulcast_update_request
597
+ )
598
+ url, params = @sdk_configuration.get_server_details
599
+ base_url = Utils.template_url(url, params)
600
+ url = Utils.generate_url(
601
+ Models::Operations::UpdateSpecificSimulcastOfStreamRequest,
602
+ base_url,
603
+ '/streams/{streamId}/simulcast/{simulcastId}',
604
+ request
605
+ )
606
+ headers = {}
607
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :simulcast_update_request, :json)
608
+ headers['content-type'] = req_content_type
609
+
610
+ if form
611
+ body = Utils.encode_form(form)
612
+ elsif Utils.match_content_type(req_content_type, 'application/x-www-form-urlencoded')
613
+ body = URI.encode_www_form(data)
614
+ else
615
+ body = data
616
+ end
617
+ headers['Accept'] = 'application/json'
618
+ headers['user-agent'] = @sdk_configuration.user_agent
619
+
620
+ security = !@sdk_configuration.nil? && !@sdk_configuration.security_source.nil? ? @sdk_configuration.security_source.call : nil
621
+
622
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
623
+ timeout ||= @sdk_configuration.timeout
624
+
625
+ connection = @sdk_configuration.client
626
+
627
+ hook_ctx = SDKHooks::HookContext.new(
628
+ config: @sdk_configuration,
629
+ base_url: base_url,
630
+ oauth2_scopes: [],
631
+ operation_id: 'update-specific-simulcast-of-stream',
632
+ security_source: @sdk_configuration.security_source
633
+ )
634
+
635
+ error = T.let(nil, T.nilable(StandardError))
636
+ http_response = T.let(nil, T.nilable(Faraday::Response))
637
+
638
+
639
+ begin
640
+ http_response = connection.put(url) do |req|
641
+ req.body = body
642
+ req.headers.merge!(headers)
643
+ req.options.timeout = timeout unless timeout.nil?
644
+ Utils.configure_request_security(req, security)
645
+
646
+ @sdk_configuration.hooks.before_request(
647
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
648
+ hook_ctx: hook_ctx
649
+ ),
650
+ request: req
651
+ )
652
+ end
653
+ rescue StandardError => e
654
+ error = e
655
+ ensure
656
+ if http_response.nil? || Utils.error_status?(http_response.status)
657
+ http_response = @sdk_configuration.hooks.after_error(
658
+ error: error,
659
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
660
+ hook_ctx: hook_ctx
661
+ ),
662
+ response: http_response
663
+ )
664
+ else
665
+ http_response = @sdk_configuration.hooks.after_success(
666
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
667
+ hook_ctx: hook_ctx
668
+ ),
669
+ response: http_response
670
+ )
671
+ end
672
+
673
+ if http_response.nil?
674
+ raise error if !error.nil?
675
+ raise 'no response'
676
+ end
677
+ end
678
+
679
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
680
+ if Utils.match_status_code(http_response.status, ['200'])
681
+ if Utils.match_content_type(content_type, 'application/json')
682
+ http_response = @sdk_configuration.hooks.after_success(
683
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
684
+ hook_ctx: hook_ctx
685
+ ),
686
+ response: http_response
687
+ )
688
+ response_data = http_response.env.response_body
689
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::SimulcastUpdateResponse)
690
+ response = Models::Operations::UpdateSpecificSimulcastOfStreamResponse.new(
691
+ status_code: http_response.status,
692
+ content_type: content_type,
693
+ raw_response: http_response,
694
+ simulcast_update_response: obj
695
+ )
696
+
697
+ return response
698
+ else
699
+ 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'
700
+ end
701
+ elsif Utils.match_status_code(http_response.status, ['401'])
702
+ if Utils.match_content_type(content_type, 'application/json')
703
+ http_response = @sdk_configuration.hooks.after_success(
704
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
705
+ hook_ctx: hook_ctx
706
+ ),
707
+ response: http_response
708
+ )
709
+ response_data = http_response.env.response_body
710
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::UnauthorizedError)
711
+ throw obj
712
+ else
713
+ 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'
714
+ end
715
+ elsif Utils.match_status_code(http_response.status, ['403'])
716
+ if Utils.match_content_type(content_type, 'application/json')
717
+ http_response = @sdk_configuration.hooks.after_success(
718
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
719
+ hook_ctx: hook_ctx
720
+ ),
721
+ response: http_response
722
+ )
723
+ response_data = http_response.env.response_body
724
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::InvalidPermissionError)
725
+ throw obj
726
+ else
727
+ 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'
728
+ end
729
+ elsif Utils.match_status_code(http_response.status, ['404'])
730
+ if Utils.match_content_type(content_type, 'application/json')
731
+ http_response = @sdk_configuration.hooks.after_success(
732
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
733
+ hook_ctx: hook_ctx
734
+ ),
735
+ response: http_response
736
+ )
737
+ response_data = http_response.env.response_body
738
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::NotFoundErrorSimulcast)
739
+ throw obj
740
+ else
741
+ 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'
742
+ end
743
+ elsif Utils.match_status_code(http_response.status, ['422'])
744
+ if Utils.match_content_type(content_type, 'application/json')
745
+ http_response = @sdk_configuration.hooks.after_success(
746
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
747
+ hook_ctx: hook_ctx
748
+ ),
749
+ response: http_response
750
+ )
751
+ response_data = http_response.env.response_body
752
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ValidationErrorResponse)
753
+ throw obj
754
+ else
755
+ 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'
756
+ end
757
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
758
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
759
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
760
+ raise ::FastpixApiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
761
+ else
762
+ 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'
763
+
764
+ end
765
+ end
766
+ end
767
+ end