livepeer 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 (91) hide show
  1. checksums.yaml +7 -0
  2. data/lib/livepeer.rb +96 -0
  3. data/lib/sdk/access_control.rb +195 -0
  4. data/lib/sdk/asset.rb +248 -0
  5. data/lib/sdk/metrics.rb +158 -0
  6. data/lib/sdk/models/operations/createmultistreamtarget.rb +34 -0
  7. data/lib/sdk/models/operations/createsigningkey.rb +35 -0
  8. data/lib/sdk/models/operations/createstream.rb +34 -0
  9. data/lib/sdk/models/operations/createwebhook.rb +35 -0
  10. data/lib/sdk/models/operations/deleteasset.rb +45 -0
  11. data/lib/sdk/models/operations/deletemultistreamtarget.rb +45 -0
  12. data/lib/sdk/models/operations/deletesigningkey.rb +45 -0
  13. data/lib/sdk/models/operations/deletestream.rb +45 -0
  14. data/lib/sdk/models/operations/deletewebhook.rb +49 -0
  15. data/lib/sdk/models/operations/get_session_id_clips.rb +48 -0
  16. data/lib/sdk/models/operations/get_stream_id_clips.rb +48 -0
  17. data/lib/sdk/models/operations/getasset.rb +49 -0
  18. data/lib/sdk/models/operations/getassets.rb +34 -0
  19. data/lib/sdk/models/operations/getcreatormetrics.rb +98 -0
  20. data/lib/sdk/models/operations/getmultistreamtarget.rb +49 -0
  21. data/lib/sdk/models/operations/getmultistreamtargets.rb +34 -0
  22. data/lib/sdk/models/operations/getplaybackinfo.rb +53 -0
  23. data/lib/sdk/models/operations/getpublictotalviewsmetrics.rb +76 -0
  24. data/lib/sdk/models/operations/getrecordedsessions.rb +53 -0
  25. data/lib/sdk/models/operations/getsession.rb +49 -0
  26. data/lib/sdk/models/operations/getsessions.rb +34 -0
  27. data/lib/sdk/models/operations/getsigningkey.rb +49 -0
  28. data/lib/sdk/models/operations/getsigningkeys.rb +34 -0
  29. data/lib/sdk/models/operations/getstream.rb +49 -0
  30. data/lib/sdk/models/operations/getstreams.rb +48 -0
  31. data/lib/sdk/models/operations/gettask.rb +49 -0
  32. data/lib/sdk/models/operations/gettasks.rb +34 -0
  33. data/lib/sdk/models/operations/getusagemetrics.rb +72 -0
  34. data/lib/sdk/models/operations/getviewershipsmetrics.rb +107 -0
  35. data/lib/sdk/models/operations/getwebhook.rb +49 -0
  36. data/lib/sdk/models/operations/getwebhooks.rb +34 -0
  37. data/lib/sdk/models/operations/patch_asset_assetid_.rb +53 -0
  38. data/lib/sdk/models/operations/post_clip.rb +66 -0
  39. data/lib/sdk/models/operations/requestupload.rb +72 -0
  40. data/lib/sdk/models/operations/transcode.rb +35 -0
  41. data/lib/sdk/models/operations/updatemultistreamtarget.rb +49 -0
  42. data/lib/sdk/models/operations/updatesigningkey.rb +65 -0
  43. data/lib/sdk/models/operations/updatestream.rb +49 -0
  44. data/lib/sdk/models/operations/updatewebhook.rb +49 -0
  45. data/lib/sdk/models/operations/uploadassetviaurl.rb +66 -0
  46. data/lib/sdk/models/shared/asset.rb +312 -0
  47. data/lib/sdk/models/shared/asset_patch_payload.rb +38 -0
  48. data/lib/sdk/models/shared/attestation.rb +178 -0
  49. data/lib/sdk/models/shared/clip_payload.rb +37 -0
  50. data/lib/sdk/models/shared/encryption.rb +25 -0
  51. data/lib/sdk/models/shared/encryption_output.rb +21 -0
  52. data/lib/sdk/models/shared/error.rb +25 -0
  53. data/lib/sdk/models/shared/ffmpeg_profile.rb +71 -0
  54. data/lib/sdk/models/shared/ipfs_export_params.rb +41 -0
  55. data/lib/sdk/models/shared/ipfs_file_info.rb +31 -0
  56. data/lib/sdk/models/shared/multistream.rb +75 -0
  57. data/lib/sdk/models/shared/multistream_target.rb +36 -0
  58. data/lib/sdk/models/shared/multistream_target_input.rb +33 -0
  59. data/lib/sdk/models/shared/multistream_target_patch_payload.rb +33 -0
  60. data/lib/sdk/models/shared/new_asset_payload.rb +79 -0
  61. data/lib/sdk/models/shared/new_stream_payload.rb +44 -0
  62. data/lib/sdk/models/shared/nftmetadata.rb +24 -0
  63. data/lib/sdk/models/shared/nftmetadatatemplate.rb +23 -0
  64. data/lib/sdk/models/shared/playback_info.rb +115 -0
  65. data/lib/sdk/models/shared/playback_policy.rb +41 -0
  66. data/lib/sdk/models/shared/security.rb +25 -0
  67. data/lib/sdk/models/shared/session.rb +99 -0
  68. data/lib/sdk/models/shared/signing_key.rb +40 -0
  69. data/lib/sdk/models/shared/signing_key_response_payload.rb +43 -0
  70. data/lib/sdk/models/shared/storage.rb +28 -0
  71. data/lib/sdk/models/shared/storage_status.rb +70 -0
  72. data/lib/sdk/models/shared/stream.rb +142 -0
  73. data/lib/sdk/models/shared/stream_patch_payload.rb +41 -0
  74. data/lib/sdk/models/shared/task.rb +626 -0
  75. data/lib/sdk/models/shared/upload.rb +34 -0
  76. data/lib/sdk/models/shared/upload_output.rb +34 -0
  77. data/lib/sdk/models/shared/usage_metric.rb +38 -0
  78. data/lib/sdk/models/shared/viewership_metric.rb +97 -0
  79. data/lib/sdk/models/shared/webhook.rb +112 -0
  80. data/lib/sdk/multistream_target.rb +205 -0
  81. data/lib/sdk/playback.rb +63 -0
  82. data/lib/sdk/sdk.rb +89 -0
  83. data/lib/sdk/sdkconfiguration.rb +54 -0
  84. data/lib/sdk/session.rb +166 -0
  85. data/lib/sdk/stream.rb +290 -0
  86. data/lib/sdk/task.rb +87 -0
  87. data/lib/sdk/transcode.rb +59 -0
  88. data/lib/sdk/utils/metadata_fields.rb +154 -0
  89. data/lib/sdk/utils/utils.rb +774 -0
  90. data/lib/sdk/webhook.rb +192 -0
  91. metadata +260 -0
@@ -0,0 +1,34 @@
1
+ # Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+ require 'sorbet-runtime'
7
+ require 'faraday'
8
+ require_relative '../shared/encryption'
9
+
10
+ module Livepeer
11
+ module Shared
12
+ # Parameters for the upload task
13
+ class UploadOutput < Livepeer::Utils::FieldAugmented
14
+ extend T::Sig
15
+
16
+
17
+ field :encryption, T.nilable(Shared::EncryptionOutput), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('encryption') } }
18
+ # ID of the original recorded session to avoid re-transcoding
19
+ # of the same content. Only used for import task.
20
+ #
21
+ field :recorded_session_id, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('recordedSessionId') } }
22
+ # URL of the asset to "upload"
23
+ field :url, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('url') } }
24
+
25
+
26
+ sig { params(encryption: T.nilable(Shared::EncryptionOutput), recorded_session_id: T.nilable(String), url: T.nilable(String)).void }
27
+ def initialize(encryption: nil, recorded_session_id: nil, url: nil)
28
+ @encryption = encryption
29
+ @recorded_session_id = recorded_session_id
30
+ @url = url
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,38 @@
1
+ # Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+ require 'sorbet-runtime'
7
+ require 'faraday'
8
+
9
+ module Livepeer
10
+ module Shared
11
+ # An individual metric about usage of a user.
12
+ #
13
+ class UsageMetric < Livepeer::Utils::FieldAugmented
14
+ extend T::Sig
15
+
16
+ # The creator ID associated with the metric
17
+ field :creator_id, String, { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('CreatorID') } }
18
+ # The number of minutes of delivery usage
19
+ field :delivery_usage_mins, Float, { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('DeliveryUsageMins') } }
20
+ # The number of minutes of storage usage
21
+ field :storage_usage_mins, Float, { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('StorageUsageMins') } }
22
+ # The number of minutes of total usage
23
+ field :total_usage_mins, Float, { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('TotalUsageMins') } }
24
+ # The user ID associated with the metric
25
+ field :user_id, String, { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('UserID') } }
26
+
27
+
28
+ sig { params(creator_id: String, delivery_usage_mins: Float, storage_usage_mins: Float, total_usage_mins: Float, user_id: String).void }
29
+ def initialize(creator_id: nil, delivery_usage_mins: nil, storage_usage_mins: nil, total_usage_mins: nil, user_id: nil)
30
+ @creator_id = creator_id
31
+ @delivery_usage_mins = delivery_usage_mins
32
+ @storage_usage_mins = storage_usage_mins
33
+ @total_usage_mins = total_usage_mins
34
+ @user_id = user_id
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,97 @@
1
+ # Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+ require 'sorbet-runtime'
7
+ require 'faraday'
8
+
9
+ module Livepeer
10
+ module Shared
11
+ # An individual metric about viewership of an asset. Necessarily, at least
12
+ # 1 of playbackId and dStorageUrl will be present, depending on the query.
13
+ #
14
+ class ViewershipMetric < Livepeer::Utils::FieldAugmented
15
+ extend T::Sig
16
+
17
+ # The total playtime in minutes for the asset
18
+ field :playtime_mins, Float, { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('playtimeMins') } }
19
+ # The number of views for the asset
20
+ field :view_count, Integer, { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('viewCount') } }
21
+ # The browser used by the viewer
22
+ field :browser, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('browser') } }
23
+ # The browser engine used by the viewer's browser
24
+ field :browser_engine, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('browserEngine') } }
25
+ # The continent where the viewer is located
26
+ field :continent, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('continent') } }
27
+ # The country where the viewer is located
28
+ field :country, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('country') } }
29
+ # The CPU used by the viewer's device
30
+ field :cpu, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('cpu') } }
31
+ # The ID of the creator associated with the metric
32
+ field :creator_id, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('creatorId') } }
33
+ # The device used by the viewer
34
+ field :device, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('device') } }
35
+ # The type of the device used by the viewer
36
+ field :device_type, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('deviceType') } }
37
+ # The URL of the distributed storage used for the asset
38
+ field :d_storage_url, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('dStorageUrl') } }
39
+ # The error rate for the asset
40
+ field :error_rate, T.nilable(Float), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('errorRate') } }
41
+ # The percentage of sessions that existed before the asset started
42
+ # playing
43
+ #
44
+ field :exits_before_start, T.nilable(Float), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('exitsBeforeStart') } }
45
+ # Geographic encoding of the viewers location. Accurate to 3 digits.
46
+ field :geohas, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('geohas') } }
47
+ # The operating system used by the viewer
48
+ field :os, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('os') } }
49
+ # The playback ID associated with the metric
50
+ field :playback_id, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('playbackId') } }
51
+ # The rebuffering ratio for the asset
52
+ field :rebuffer_ratio, T.nilable(Float), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('rebufferRatio') } }
53
+ # The subdivision (e.g., state or province) where the viewer is
54
+ # located
55
+ #
56
+ field :subdivision, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('subdivision') } }
57
+ # Timestamp (in milliseconds) when the metric was recorded. If the
58
+ # query contains a time step, this timestamp will point to the
59
+ # beginning of the time step period.
60
+ #
61
+ field :timestamp, T.nilable(Float), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('timestamp') } }
62
+ # The timezone where the viewer is located
63
+ field :timezone, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('timezone') } }
64
+ # The time-to-first-frame (TTFF) in milliseconds
65
+ field :ttff_ms, T.nilable(Float), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('ttffMs') } }
66
+ # The ID of the viewer associated with the metric
67
+ field :viewer_id, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('viewerId') } }
68
+
69
+
70
+ sig { params(playtime_mins: Float, view_count: Integer, browser: T.nilable(String), browser_engine: T.nilable(String), continent: T.nilable(String), country: T.nilable(String), cpu: T.nilable(String), creator_id: T.nilable(String), device: T.nilable(String), device_type: T.nilable(String), d_storage_url: T.nilable(String), error_rate: T.nilable(Float), exits_before_start: T.nilable(Float), geohas: T.nilable(String), os: T.nilable(String), playback_id: T.nilable(String), rebuffer_ratio: T.nilable(Float), subdivision: T.nilable(String), timestamp: T.nilable(Float), timezone: T.nilable(String), ttff_ms: T.nilable(Float), viewer_id: T.nilable(String)).void }
71
+ def initialize(playtime_mins: nil, view_count: nil, browser: nil, browser_engine: nil, continent: nil, country: nil, cpu: nil, creator_id: nil, device: nil, device_type: nil, d_storage_url: nil, error_rate: nil, exits_before_start: nil, geohas: nil, os: nil, playback_id: nil, rebuffer_ratio: nil, subdivision: nil, timestamp: nil, timezone: nil, ttff_ms: nil, viewer_id: nil)
72
+ @playtime_mins = playtime_mins
73
+ @view_count = view_count
74
+ @browser = browser
75
+ @browser_engine = browser_engine
76
+ @continent = continent
77
+ @country = country
78
+ @cpu = cpu
79
+ @creator_id = creator_id
80
+ @device = device
81
+ @device_type = device_type
82
+ @d_storage_url = d_storage_url
83
+ @error_rate = error_rate
84
+ @exits_before_start = exits_before_start
85
+ @geohas = geohas
86
+ @os = os
87
+ @playback_id = playback_id
88
+ @rebuffer_ratio = rebuffer_ratio
89
+ @subdivision = subdivision
90
+ @timestamp = timestamp
91
+ @timezone = timezone
92
+ @ttff_ms = ttff_ms
93
+ @viewer_id = viewer_id
94
+ end
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,112 @@
1
+ # Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+ require 'sorbet-runtime'
7
+ require 'faraday'
8
+
9
+ module Livepeer
10
+ module Shared
11
+
12
+ class Events < T::Enum
13
+ enums do
14
+ STREAM_STARTED = new('stream.started')
15
+ STREAM_DETECTION = new('stream.detection')
16
+ STREAM_IDLE = new('stream.idle')
17
+ RECORDING_READY = new('recording.ready')
18
+ RECORDING_STARTED = new('recording.started')
19
+ RECORDING_WAITING = new('recording.waiting')
20
+ MULTISTREAM_CONNECTED = new('multistream.connected')
21
+ MULTISTREAM_ERROR = new('multistream.error')
22
+ MULTISTREAM_DISCONNECTED = new('multistream.disconnected')
23
+ PLAYBACK_USER_NEW = new('playback.user.new')
24
+ PLAYBACK_ACCESS_CONTROL = new('playback.accessControl')
25
+ ASSET_CREATED = new('asset.created')
26
+ ASSET_UPDATED = new('asset.updated')
27
+ ASSET_FAILED = new('asset.failed')
28
+ ASSET_READY = new('asset.ready')
29
+ ASSET_DELETED = new('asset.deleted')
30
+ TASK_SPAWNED = new('task.spawned')
31
+ TASK_UPDATED = new('task.updated')
32
+ TASK_COMPLETED = new('task.completed')
33
+ TASK_FAILED = new('task.failed')
34
+ end
35
+ end
36
+
37
+
38
+ # failure timestamp and error message with status code
39
+ class LastFailure < Livepeer::Utils::FieldAugmented
40
+ extend T::Sig
41
+
42
+ # Webhook failure error message
43
+ field :error, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('error') } }
44
+ # Webhook failure response
45
+ field :response, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('response') } }
46
+ # Webhook failure status code
47
+ field :status_code, T.nilable(Float), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('statusCode') } }
48
+ # Timestamp (in milliseconds) at which the webhook last failed
49
+ field :timestamp, T.nilable(Float), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('timestamp') } }
50
+
51
+
52
+ sig { params(error: T.nilable(String), response: T.nilable(String), status_code: T.nilable(Float), timestamp: T.nilable(Float)).void }
53
+ def initialize(error: nil, response: nil, status_code: nil, timestamp: nil)
54
+ @error = error
55
+ @response = response
56
+ @status_code = status_code
57
+ @timestamp = timestamp
58
+ end
59
+ end
60
+
61
+ # status of webhook
62
+ class Status < Livepeer::Utils::FieldAugmented
63
+ extend T::Sig
64
+
65
+ # failure timestamp and error message with status code
66
+ field :last_failure, T.nilable(Shared::LastFailure), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('lastFailure') } }
67
+ # Timestamp (in milliseconds) at which the webhook last was
68
+ # triggered
69
+ #
70
+ field :last_triggered_at, T.nilable(Float), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('lastTriggeredAt') } }
71
+
72
+
73
+ sig { params(last_failure: T.nilable(Shared::LastFailure), last_triggered_at: T.nilable(Float)).void }
74
+ def initialize(last_failure: nil, last_triggered_at: nil)
75
+ @last_failure = last_failure
76
+ @last_triggered_at = last_triggered_at
77
+ end
78
+ end
79
+
80
+
81
+ class Webhook < Livepeer::Utils::FieldAugmented
82
+ extend T::Sig
83
+
84
+
85
+ field :name, String, { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('name') } }
86
+
87
+ field :url, String, { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('url') } }
88
+ # Timestamp (in milliseconds) at which stream object was created
89
+ field :created_at, T.nilable(Float), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('createdAt') } }
90
+
91
+ field :events, T.nilable(T::Array[Shared::Events]), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('events') } }
92
+
93
+ field :id, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('id') } }
94
+ # status of webhook
95
+ field :status, T.nilable(Shared::Status), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('status') } }
96
+ # streamId of the stream on which the webhook is applied
97
+ field :stream_id, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('streamId') } }
98
+
99
+
100
+ sig { params(name: String, url: String, created_at: T.nilable(Float), events: T.nilable(T::Array[Shared::Events]), id: T.nilable(String), status: T.nilable(Shared::Status), stream_id: T.nilable(String)).void }
101
+ def initialize(name: nil, url: nil, created_at: nil, events: nil, id: nil, status: nil, stream_id: nil)
102
+ @name = name
103
+ @url = url
104
+ @created_at = created_at
105
+ @events = events
106
+ @id = id
107
+ @status = status
108
+ @stream_id = stream_id
109
+ end
110
+ end
111
+ end
112
+ end
@@ -0,0 +1,205 @@
1
+ # Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+ require 'faraday'
7
+ require 'faraday/multipart'
8
+ require 'sorbet-runtime'
9
+
10
+ module Livepeer
11
+ extend T::Sig
12
+ class MultistreamTarget
13
+
14
+ extend T::Sig
15
+ sig { params(sdk_config: SDKConfiguration).void }
16
+ def initialize(sdk_config)
17
+ @sdk_configuration = sdk_config
18
+ end
19
+
20
+ sig { returns(Utils::FieldAugmented) }
21
+ def get_all
22
+ # get_all - Retrieve Multistream Targets
23
+ url, params = @sdk_configuration.get_server_details
24
+ base_url = Utils.template_url(url, params)
25
+ url = "#{base_url}/multistream/target"
26
+ headers = {}
27
+ headers['Accept'] = 'application/json'
28
+ headers['user-agent'] = @sdk_configuration.user_agent
29
+
30
+ r = @sdk_configuration.client.get(url) do |req|
31
+ req.headers = headers
32
+ Utils.configure_request_security(req, @sdk_configuration.security) if !@sdk_configuration.nil? && !@sdk_configuration.security.nil?
33
+ end
34
+
35
+ content_type = r.headers.fetch('Content-Type', 'application/octet-stream')
36
+
37
+ res = Operations::GetMultistreamTargetsResponse.new(
38
+ status_code: r.status, content_type: content_type, raw_response: r
39
+ )
40
+ if r.status == 200
41
+ if Utils.match_content_type(content_type, 'application/json')
42
+ out = Utils.unmarshal_complex(r.env.response_body, T::Array[Shared::MultistreamTarget])
43
+ res.data = out
44
+ end
45
+ end
46
+ res
47
+ end
48
+
49
+ sig { params(request: Shared::MultistreamTargetInput).returns(Utils::FieldAugmented) }
50
+ def create(request)
51
+ # create - Create a multistream target
52
+ url, params = @sdk_configuration.get_server_details
53
+ base_url = Utils.template_url(url, params)
54
+ url = "#{base_url}/multistream/target"
55
+ headers = {}
56
+ req_content_type, data, form = Utils.serialize_request_body(request, :request, :json)
57
+ headers['content-type'] = req_content_type
58
+ raise StandardError, 'request body is required' if data.nil? && form.nil?
59
+ headers['Accept'] = 'application/json'
60
+ headers['user-agent'] = @sdk_configuration.user_agent
61
+
62
+ r = @sdk_configuration.client.post(url) do |req|
63
+ req.headers = headers
64
+ Utils.configure_request_security(req, @sdk_configuration.security) if !@sdk_configuration.nil? && !@sdk_configuration.security.nil?
65
+ if form
66
+ req.body = Utils.encode_form(form)
67
+ elsif Utils.match_content_type(req_content_type, 'application/x-www-form-urlencoded')
68
+ req.body = URI.encode_www_form(data)
69
+ else
70
+ req.body = data
71
+ end
72
+ end
73
+
74
+ content_type = r.headers.fetch('Content-Type', 'application/octet-stream')
75
+
76
+ res = Operations::CreateMultistreamTargetResponse.new(
77
+ status_code: r.status, content_type: content_type, raw_response: r
78
+ )
79
+ if r.status == 201
80
+ if Utils.match_content_type(content_type, 'application/json')
81
+ out = Utils.unmarshal_complex(r.env.response_body, T::Array[Shared::MultistreamTarget])
82
+ res.classes = out
83
+ end
84
+ end
85
+ res
86
+ end
87
+
88
+ sig { params(id: String).returns(Utils::FieldAugmented) }
89
+ def delete(id)
90
+ # delete - Delete a multistream target
91
+ request = Operations::DeleteMultistreamTargetRequest.new(
92
+
93
+ id: id
94
+ )
95
+ url, params = @sdk_configuration.get_server_details
96
+ base_url = Utils.template_url(url, params)
97
+ url = Utils.generate_url(
98
+ Operations::DeleteMultistreamTargetRequest,
99
+ base_url,
100
+ '/multistream/target/{id}',
101
+ request
102
+ )
103
+ headers = {}
104
+ headers['Accept'] = '*/*'
105
+ headers['user-agent'] = @sdk_configuration.user_agent
106
+
107
+ r = @sdk_configuration.client.delete(url) do |req|
108
+ req.headers = headers
109
+ Utils.configure_request_security(req, @sdk_configuration.security) if !@sdk_configuration.nil? && !@sdk_configuration.security.nil?
110
+ end
111
+
112
+ content_type = r.headers.fetch('Content-Type', 'application/octet-stream')
113
+
114
+ res = Operations::DeleteMultistreamTargetResponse.new(
115
+ status_code: r.status, content_type: content_type, raw_response: r
116
+ )
117
+ if r.status == 204
118
+ end
119
+ res
120
+ end
121
+
122
+ sig { params(id: String).returns(Utils::FieldAugmented) }
123
+ def get(id)
124
+ # get - Retrieve a multistream target
125
+ request = Operations::GetMultistreamTargetRequest.new(
126
+
127
+ id: id
128
+ )
129
+ url, params = @sdk_configuration.get_server_details
130
+ base_url = Utils.template_url(url, params)
131
+ url = Utils.generate_url(
132
+ Operations::GetMultistreamTargetRequest,
133
+ base_url,
134
+ '/multistream/target/{id}',
135
+ request
136
+ )
137
+ headers = {}
138
+ headers['Accept'] = 'application/json'
139
+ headers['user-agent'] = @sdk_configuration.user_agent
140
+
141
+ r = @sdk_configuration.client.get(url) do |req|
142
+ req.headers = headers
143
+ Utils.configure_request_security(req, @sdk_configuration.security) if !@sdk_configuration.nil? && !@sdk_configuration.security.nil?
144
+ end
145
+
146
+ content_type = r.headers.fetch('Content-Type', 'application/octet-stream')
147
+
148
+ res = Operations::GetMultistreamTargetResponse.new(
149
+ status_code: r.status, content_type: content_type, raw_response: r
150
+ )
151
+ if r.status == 200
152
+ if Utils.match_content_type(content_type, 'application/json')
153
+ out = Utils.unmarshal_complex(r.env.response_body, Shared::MultistreamTarget)
154
+ res.multistream_target = out
155
+ end
156
+ end
157
+ res
158
+ end
159
+
160
+ sig { params(id: String, multistream_target_patch_payload: Shared::MultistreamTargetPatchPayload).returns(Utils::FieldAugmented) }
161
+ def update(id, multistream_target_patch_payload)
162
+ # update - Update Multistream Target
163
+ request = Operations::UpdateMultistreamTargetRequest.new(
164
+
165
+ id: id,
166
+ multistream_target_patch_payload: multistream_target_patch_payload
167
+ )
168
+ url, params = @sdk_configuration.get_server_details
169
+ base_url = Utils.template_url(url, params)
170
+ url = Utils.generate_url(
171
+ Operations::UpdateMultistreamTargetRequest,
172
+ base_url,
173
+ '/multistream/target/{id}',
174
+ request
175
+ )
176
+ headers = {}
177
+ req_content_type, data, form = Utils.serialize_request_body(request, :multistream_target_patch_payload, :json)
178
+ headers['content-type'] = req_content_type
179
+ raise StandardError, 'request body is required' if data.nil? && form.nil?
180
+ headers['Accept'] = '*/*'
181
+ headers['user-agent'] = @sdk_configuration.user_agent
182
+
183
+ r = @sdk_configuration.client.patch(url) do |req|
184
+ req.headers = headers
185
+ Utils.configure_request_security(req, @sdk_configuration.security) if !@sdk_configuration.nil? && !@sdk_configuration.security.nil?
186
+ if form
187
+ req.body = Utils.encode_form(form)
188
+ elsif Utils.match_content_type(req_content_type, 'application/x-www-form-urlencoded')
189
+ req.body = URI.encode_www_form(data)
190
+ else
191
+ req.body = data
192
+ end
193
+ end
194
+
195
+ content_type = r.headers.fetch('Content-Type', 'application/octet-stream')
196
+
197
+ res = Operations::UpdateMultistreamTargetResponse.new(
198
+ status_code: r.status, content_type: content_type, raw_response: r
199
+ )
200
+ if r.status == 204
201
+ end
202
+ res
203
+ end
204
+ end
205
+ end
@@ -0,0 +1,63 @@
1
+ # Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+ require 'faraday'
7
+ require 'faraday/multipart'
8
+ require 'sorbet-runtime'
9
+
10
+ module Livepeer
11
+ extend T::Sig
12
+ class Playback
13
+
14
+ extend T::Sig
15
+ sig { params(sdk_config: SDKConfiguration).void }
16
+ def initialize(sdk_config)
17
+ @sdk_configuration = sdk_config
18
+ end
19
+
20
+ sig { params(id: String).returns(Utils::FieldAugmented) }
21
+ def get(id)
22
+ # get - Retrieve Playback Info
23
+ request = Operations::GetPlaybackInfoRequest.new(
24
+
25
+ id: id
26
+ )
27
+ url, params = @sdk_configuration.get_server_details
28
+ base_url = Utils.template_url(url, params)
29
+ url = Utils.generate_url(
30
+ Operations::GetPlaybackInfoRequest,
31
+ base_url,
32
+ '/playback/{id}',
33
+ request
34
+ )
35
+ headers = {}
36
+ headers['Accept'] = 'application/json'
37
+ headers['user-agent'] = @sdk_configuration.user_agent
38
+
39
+ r = @sdk_configuration.client.get(url) do |req|
40
+ req.headers = headers
41
+ Utils.configure_request_security(req, @sdk_configuration.security) if !@sdk_configuration.nil? && !@sdk_configuration.security.nil?
42
+ end
43
+
44
+ content_type = r.headers.fetch('Content-Type', 'application/octet-stream')
45
+
46
+ res = Operations::GetPlaybackInfoResponse.new(
47
+ status_code: r.status, content_type: content_type, raw_response: r
48
+ )
49
+ if r.status == 200
50
+ if Utils.match_content_type(content_type, 'application/json')
51
+ out = Utils.unmarshal_complex(r.env.response_body, Shared::PlaybackInfo)
52
+ res.playback_info = out
53
+ end
54
+ elsif r.status == 404
55
+ if Utils.match_content_type(content_type, 'application/json')
56
+ out = Utils.unmarshal_complex(r.env.response_body, Shared::Error)
57
+ res.error = out
58
+ end
59
+ end
60
+ res
61
+ end
62
+ end
63
+ end
data/lib/sdk/sdk.rb ADDED
@@ -0,0 +1,89 @@
1
+ # Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+ require 'faraday'
7
+ require 'faraday/multipart'
8
+ require 'sorbet-runtime'
9
+ module Livepeer
10
+ extend T::Sig
11
+
12
+ class SDK
13
+ extend T::Sig
14
+
15
+ attr_accessor :stream, :multistream_target, :webhook, :asset, :metrics, :session, :access_control, :task, :transcode, :playback
16
+
17
+ attr_accessor :security, :language, :sdk_version, :gen_version
18
+
19
+ sig do
20
+ params(security: T.nilable(Shared::Security),
21
+ server_idx: Integer,
22
+ server_url: String,
23
+ url_params: T::Hash[Symbol, String],
24
+ client: Faraday::Request).void
25
+ end
26
+ def initialize(security: nil,
27
+ server_idx: nil,
28
+ server_url: nil,
29
+ url_params: nil,
30
+ client: nil)
31
+
32
+ ## Instantiates the SDK configuring it with the provided parameters.
33
+ # @param [Shared::Security] security The security details required for authentication
34
+ # @param [Integer] server_idx The index of the server to use for all operations
35
+ # @param [String] server_url The server URL to use for all operations
36
+ # @param [Hash<Symbol, String>] url_params Parameters to optionally template the server URL with
37
+ # @param [Faraday::Request] client The faraday HTTP client to use for all operations
38
+
39
+ if client.nil?
40
+ client = Faraday.new(request: {
41
+ params_encoder: Faraday::FlatParamsEncoder
42
+ }) do |f|
43
+ f.request :multipart, {}
44
+ # f.response :logger
45
+ end
46
+ end
47
+
48
+ if !server_url.nil?
49
+ if !url_params.nil?
50
+ server_url = Utils.template_url(server_url, url_params)
51
+ end
52
+ end
53
+ server_idx = 0 if server_idx.nil?
54
+
55
+
56
+
57
+ @sdk_configuration = SDKConfiguration.new(client, security, server_url, server_idx)
58
+ init_sdks
59
+ end
60
+
61
+ sig { params(params: T.nilable(T::Hash[Symbol, String])).void }
62
+ def config_server_url(params)
63
+ if !params.nil?
64
+ @server_url = Utils.template_url(@server_url, params)
65
+ end
66
+ init_sdks
67
+ end
68
+
69
+ sig { params(security: Shared::Security).void }
70
+ def config_security(security)
71
+ @security = security
72
+ @sdk_configuration.security = security
73
+ end
74
+
75
+ sig { void }
76
+ def init_sdks
77
+ @stream = Stream.new(@sdk_configuration)
78
+ @multistream_target = MultistreamTarget.new(@sdk_configuration)
79
+ @webhook = Webhook.new(@sdk_configuration)
80
+ @asset = Asset.new(@sdk_configuration)
81
+ @metrics = Metrics.new(@sdk_configuration)
82
+ @session = Session.new(@sdk_configuration)
83
+ @access_control = AccessControl.new(@sdk_configuration)
84
+ @task = Task.new(@sdk_configuration)
85
+ @transcode = Transcode.new(@sdk_configuration)
86
+ @playback = Playback.new(@sdk_configuration)
87
+ end
88
+ end
89
+ end