livepeer 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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