mux_ruby 1.8.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +3 -1
- data/Gemfile.lock +26 -37
- data/README.md +37 -13
- data/docs/AbridgedVideoView.md +33 -13
- data/docs/Asset.md +59 -25
- data/docs/AssetErrors.md +15 -4
- data/docs/AssetMaster.md +15 -4
- data/docs/AssetNonStandardInputReasons.md +29 -11
- data/docs/AssetRecordingTimes.md +15 -4
- data/docs/AssetResponse.md +13 -3
- data/docs/AssetStaticRenditions.md +15 -4
- data/docs/AssetStaticRenditionsFiles.md +23 -8
- data/docs/AssetsApi.md +396 -161
- data/docs/BreakdownValue.md +21 -7
- data/docs/CreateAssetRequest.md +27 -10
- data/docs/CreateLiveStreamRequest.md +27 -9
- data/docs/CreatePlaybackIDRequest.md +13 -3
- data/docs/CreatePlaybackIDResponse.md +13 -3
- data/docs/CreateSimulcastTargetRequest.md +17 -5
- data/docs/CreateTrackRequest.md +25 -9
- data/docs/CreateTrackResponse.md +13 -3
- data/docs/CreateUploadRequest.md +19 -6
- data/docs/DeliveryReport.md +27 -9
- data/docs/DeliveryUsageApi.md +41 -23
- data/docs/DimensionValue.md +15 -4
- data/docs/DimensionsApi.md +72 -34
- data/docs/DirectUploadsApi.md +131 -56
- data/docs/DisableLiveStreamResponse.md +13 -3
- data/docs/EnableLiveStreamResponse.md +13 -3
- data/docs/Error.md +27 -10
- data/docs/ErrorsApi.md +38 -20
- data/docs/ExportDate.md +20 -0
- data/docs/ExportFile.md +22 -0
- data/docs/ExportsApi.md +99 -12
- data/docs/FilterValue.md +15 -4
- data/docs/FiltersApi.md +71 -33
- data/docs/GetAssetInputInfoResponse.md +13 -3
- data/docs/GetAssetOrLiveStreamIdResponse.md +18 -0
- data/docs/GetAssetOrLiveStreamIdResponseData.md +22 -0
- data/docs/GetAssetOrLiveStreamIdResponseDataObject.md +20 -0
- data/docs/GetAssetPlaybackIDResponse.md +13 -3
- data/docs/GetMetricTimeseriesDataResponse.md +17 -5
- data/docs/GetOverallValuesResponse.md +17 -5
- data/docs/GetRealTimeBreakdownResponse.md +17 -5
- data/docs/GetRealTimeHistogramTimeseriesResponse.md +19 -6
- data/docs/GetRealTimeHistogramTimeseriesResponseMeta.md +13 -3
- data/docs/GetRealTimeTimeseriesResponse.md +17 -5
- data/docs/Incident.md +53 -23
- data/docs/IncidentBreakdown.md +17 -5
- data/docs/IncidentNotification.md +17 -5
- data/docs/IncidentNotificationRule.md +21 -7
- data/docs/IncidentResponse.md +15 -4
- data/docs/IncidentsApi.md +118 -62
- data/docs/InputFile.md +15 -4
- data/docs/InputInfo.md +15 -4
- data/docs/InputSettings.md +31 -10
- data/docs/InputSettingsOverlaySettings.md +25 -9
- data/docs/InputTrack.md +29 -11
- data/docs/Insight.md +23 -8
- data/docs/ListAllMetricValuesResponse.md +17 -5
- data/docs/ListAssetsResponse.md +13 -3
- data/docs/ListBreakdownValuesResponse.md +17 -5
- data/docs/ListDeliveryUsageResponse.md +19 -6
- data/docs/ListDimensionValuesResponse.md +17 -5
- data/docs/ListDimensionsResponse.md +17 -5
- data/docs/ListErrorsResponse.md +17 -5
- data/docs/ListExportsResponse.md +17 -5
- data/docs/ListFilterValuesResponse.md +17 -5
- data/docs/ListFiltersResponse.md +17 -5
- data/docs/ListFiltersResponseData.md +15 -4
- data/docs/ListIncidentsResponse.md +17 -5
- data/docs/ListInsightsResponse.md +17 -5
- data/docs/ListLiveStreamsResponse.md +13 -3
- data/docs/ListRealTimeDimensionsResponse.md +17 -5
- data/docs/ListRealTimeDimensionsResponseData.md +15 -4
- data/docs/ListRealTimeMetricsResponse.md +17 -5
- data/docs/ListRelatedIncidentsResponse.md +17 -5
- data/docs/ListSigningKeysResponse.md +13 -3
- data/docs/ListUploadsResponse.md +13 -3
- data/docs/ListVideoViewExportsResponse.md +22 -0
- data/docs/ListVideoViewsResponse.md +17 -5
- data/docs/LiveStream.md +39 -15
- data/docs/LiveStreamResponse.md +13 -3
- data/docs/LiveStreamsApi.md +418 -170
- data/docs/Metric.md +21 -7
- data/docs/MetricsApi.md +211 -117
- data/docs/NotificationRule.md +17 -5
- data/docs/OverallValues.md +19 -6
- data/docs/PlaybackID.md +15 -4
- data/docs/PlaybackIDApi.md +78 -0
- data/docs/PlaybackPolicy.md +10 -2
- data/docs/RealTimeApi.md +177 -81
- data/docs/RealTimeBreakdownValue.md +21 -7
- data/docs/RealTimeHistogramTimeseriesBucket.md +15 -4
- data/docs/RealTimeHistogramTimeseriesBucketValues.md +15 -4
- data/docs/RealTimeHistogramTimeseriesDatapoint.md +25 -9
- data/docs/RealTimeTimeseriesDatapoint.md +17 -5
- data/docs/Score.md +23 -8
- data/docs/SignalLiveStreamCompleteResponse.md +13 -3
- data/docs/SigningKey.md +17 -5
- data/docs/SigningKeyResponse.md +13 -3
- data/docs/SimulcastTarget.md +21 -7
- data/docs/SimulcastTargetResponse.md +13 -3
- data/docs/Track.md +37 -15
- data/docs/URLSigningKeysApi.md +130 -54
- data/docs/UpdateAssetMP4SupportRequest.md +13 -3
- data/docs/UpdateAssetMasterAccessRequest.md +13 -3
- data/docs/Upload.md +29 -11
- data/docs/UploadError.md +15 -4
- data/docs/UploadResponse.md +13 -3
- data/docs/VideoView.md +251 -114
- data/docs/VideoViewEvent.md +19 -6
- data/docs/VideoViewResponse.md +15 -4
- data/docs/VideoViewsApi.md +78 -41
- data/examples/video/exercise-assets.rb +21 -0
- data/examples/video/exercise-live-streams.rb +8 -0
- data/gen/.gitignore +7 -0
- data/gen/Makefile +31 -0
- data/gen/generator-config.json +11 -0
- data/gen/openapitools.json +7 -0
- data/gen/package.json +17 -0
- data/gen/templates/Gemfile.mustache +11 -0
- data/gen/templates/README.mustache +158 -0
- data/gen/templates/Rakefile.mustache +10 -0
- data/gen/templates/api.mustache +206 -0
- data/gen/templates/api_client.mustache +264 -0
- data/gen/templates/api_client_faraday_partial.mustache +138 -0
- data/gen/templates/api_client_spec.mustache +220 -0
- data/gen/templates/api_client_typhoeus_partial.mustache +183 -0
- data/gen/templates/api_doc.mustache +118 -0
- data/gen/templates/api_error.mustache +67 -0
- data/gen/templates/api_info.mustache +12 -0
- data/gen/templates/api_test.mustache +47 -0
- data/gen/templates/base_object.mustache +120 -0
- data/gen/templates/configuration.mustache +349 -0
- data/gen/templates/configuration_spec.mustache +34 -0
- data/gen/templates/configuration_tls_faraday_partial.mustache +29 -0
- data/gen/templates/configuration_tls_typhoeus_partial.mustache +34 -0
- data/gen/templates/gem.mustache +40 -0
- data/gen/templates/gemspec.mustache +35 -0
- data/gen/templates/gitignore.mustache +39 -0
- data/gen/templates/model.mustache +26 -0
- data/gen/templates/model_doc.mustache +12 -0
- data/gen/templates/model_test.mustache +77 -0
- data/gen/templates/partial_model_enum_class.mustache +20 -0
- data/gen/templates/partial_model_generic.mustache +371 -0
- data/gen/templates/partial_model_generic_doc.mustache +28 -0
- data/gen/templates/partial_oneof_module.mustache +137 -0
- data/gen/templates/partial_oneof_module_doc.mustache +92 -0
- data/gen/templates/rspec.mustache +2 -0
- data/gen/templates/rubocop.mustache +148 -0
- data/gen/templates/spec_helper.mustache +103 -0
- data/gen/templates/version.mustache +7 -0
- data/gen/yarn.lock +1878 -0
- data/lib/mux_ruby.rb +16 -2
- data/lib/mux_ruby/api/assets_api.rb +291 -152
- data/lib/mux_ruby/api/delivery_usage_api.rb +32 -16
- data/lib/mux_ruby/api/dimensions_api.rb +55 -29
- data/lib/mux_ruby/api/direct_uploads_api.rb +90 -44
- data/lib/mux_ruby/api/errors_api.rb +34 -18
- data/lib/mux_ruby/api/exports_api.rb +86 -13
- data/lib/mux_ruby/api/filters_api.rb +53 -27
- data/lib/mux_ruby/api/incidents_api.rb +94 -52
- data/lib/mux_ruby/api/live_streams_api.rb +299 -157
- data/lib/mux_ruby/api/metrics_api.rb +193 -122
- data/lib/mux_ruby/api/playback_id_api.rb +85 -0
- data/lib/mux_ruby/api/real_time_api.rb +149 -87
- data/lib/mux_ruby/api/url_signing_keys_api.rb +95 -48
- data/lib/mux_ruby/api/video_views_api.rb +60 -33
- data/lib/mux_ruby/api_client.rb +106 -91
- data/lib/mux_ruby/api_error.rb +35 -7
- data/lib/mux_ruby/configuration.rb +50 -14
- data/lib/mux_ruby/models/abridged_video_view.rb +58 -24
- data/lib/mux_ruby/models/asset.rb +129 -58
- data/lib/mux_ruby/models/asset_errors.rb +52 -15
- data/lib/mux_ruby/models/asset_master.rb +85 -15
- data/lib/mux_ruby/models/asset_non_standard_input_reasons.rb +78 -43
- data/lib/mux_ruby/models/asset_recording_times.rb +52 -18
- data/lib/mux_ruby/models/asset_response.rb +48 -14
- data/lib/mux_ruby/models/asset_static_renditions.rb +55 -19
- data/lib/mux_ruby/models/asset_static_renditions_files.rb +60 -25
- data/lib/mux_ruby/models/breakdown_value.rb +52 -18
- data/lib/mux_ruby/models/create_asset_request.rb +70 -30
- data/lib/mux_ruby/models/create_live_stream_request.rb +68 -23
- data/lib/mux_ruby/models/create_playback_id_request.rb +48 -14
- data/lib/mux_ruby/models/create_playback_id_response.rb +48 -14
- data/lib/mux_ruby/models/create_simulcast_target_request.rb +50 -16
- data/lib/mux_ruby/models/create_track_request.rb +65 -27
- data/lib/mux_ruby/models/create_track_response.rb +48 -14
- data/lib/mux_ruby/models/create_upload_request.rb +52 -18
- data/lib/mux_ruby/models/delivery_report.rb +106 -21
- data/lib/mux_ruby/models/dimension_value.rb +49 -15
- data/lib/mux_ruby/models/disable_live_stream_response.rb +48 -14
- data/lib/mux_ruby/models/enable_live_stream_response.rb +48 -14
- data/lib/mux_ruby/models/error.rb +63 -21
- data/lib/mux_ruby/models/export_date.rb +229 -0
- data/lib/mux_ruby/models/export_file.rb +236 -0
- data/lib/mux_ruby/models/filter_value.rb +49 -15
- data/lib/mux_ruby/models/get_asset_input_info_response.rb +48 -14
- data/lib/mux_ruby/models/get_asset_or_live_stream_id_response.rb +218 -0
- data/lib/mux_ruby/models/get_asset_or_live_stream_id_response_data.rb +237 -0
- data/lib/mux_ruby/models/get_asset_or_live_stream_id_response_data_object.rb +264 -0
- data/lib/mux_ruby/models/get_asset_playback_id_response.rb +48 -14
- data/lib/mux_ruby/models/get_metric_timeseries_data_response.rb +50 -16
- data/lib/mux_ruby/models/get_overall_values_response.rb +50 -16
- data/lib/mux_ruby/models/get_real_time_breakdown_response.rb +50 -16
- data/lib/mux_ruby/models/get_real_time_histogram_timeseries_response.rb +51 -17
- data/lib/mux_ruby/models/get_real_time_histogram_timeseries_response_meta.rb +48 -14
- data/lib/mux_ruby/models/get_real_time_timeseries_response.rb +50 -16
- data/lib/mux_ruby/models/incident.rb +68 -34
- data/lib/mux_ruby/models/incident_breakdown.rb +50 -16
- data/lib/mux_ruby/models/incident_notification.rb +50 -16
- data/lib/mux_ruby/models/incident_notification_rule.rb +52 -18
- data/lib/mux_ruby/models/incident_response.rb +49 -15
- data/lib/mux_ruby/models/input_file.rb +49 -15
- data/lib/mux_ruby/models/input_info.rb +49 -15
- data/lib/mux_ruby/models/input_settings.rb +91 -30
- data/lib/mux_ruby/models/input_settings_overlay_settings.rb +68 -26
- data/lib/mux_ruby/models/input_track.rb +56 -22
- data/lib/mux_ruby/models/insight.rb +53 -19
- data/lib/mux_ruby/models/list_all_metric_values_response.rb +50 -16
- data/lib/mux_ruby/models/list_assets_response.rb +48 -14
- data/lib/mux_ruby/models/list_breakdown_values_response.rb +50 -16
- data/lib/mux_ruby/models/list_delivery_usage_response.rb +51 -17
- data/lib/mux_ruby/models/list_dimension_values_response.rb +50 -16
- data/lib/mux_ruby/models/list_dimensions_response.rb +50 -16
- data/lib/mux_ruby/models/list_errors_response.rb +50 -16
- data/lib/mux_ruby/models/list_exports_response.rb +50 -16
- data/lib/mux_ruby/models/list_filter_values_response.rb +50 -16
- data/lib/mux_ruby/models/list_filters_response.rb +50 -16
- data/lib/mux_ruby/models/list_filters_response_data.rb +49 -15
- data/lib/mux_ruby/models/list_incidents_response.rb +50 -16
- data/lib/mux_ruby/models/list_insights_response.rb +50 -16
- data/lib/mux_ruby/models/list_live_streams_response.rb +48 -14
- data/lib/mux_ruby/models/list_real_time_dimensions_response.rb +50 -16
- data/lib/mux_ruby/models/list_real_time_dimensions_response_data.rb +49 -15
- data/lib/mux_ruby/models/list_real_time_metrics_response.rb +50 -16
- data/lib/mux_ruby/models/list_related_incidents_response.rb +50 -16
- data/lib/mux_ruby/models/list_signing_keys_response.rb +48 -14
- data/lib/mux_ruby/models/list_uploads_response.rb +48 -14
- data/lib/mux_ruby/models/list_video_view_exports_response.rb +240 -0
- data/lib/mux_ruby/models/list_video_views_response.rb +50 -16
- data/lib/mux_ruby/models/live_stream.rb +121 -29
- data/lib/mux_ruby/models/live_stream_response.rb +48 -14
- data/lib/mux_ruby/models/metric.rb +52 -18
- data/lib/mux_ruby/models/notification_rule.rb +50 -16
- data/lib/mux_ruby/models/overall_values.rb +51 -17
- data/lib/mux_ruby/models/playback_id.rb +50 -15
- data/lib/mux_ruby/models/playback_policy.rb +12 -6
- data/lib/mux_ruby/models/real_time_breakdown_value.rb +52 -18
- data/lib/mux_ruby/models/real_time_histogram_timeseries_bucket.rb +50 -16
- data/lib/mux_ruby/models/real_time_histogram_timeseries_bucket_values.rb +49 -15
- data/lib/mux_ruby/models/real_time_histogram_timeseries_datapoint.rb +54 -20
- data/lib/mux_ruby/models/real_time_timeseries_datapoint.rb +50 -16
- data/lib/mux_ruby/models/score.rb +53 -19
- data/lib/mux_ruby/models/signal_live_stream_complete_response.rb +48 -14
- data/lib/mux_ruby/models/signing_key.rb +53 -16
- data/lib/mux_ruby/models/signing_key_response.rb +48 -14
- data/lib/mux_ruby/models/simulcast_target.rb +55 -21
- data/lib/mux_ruby/models/simulcast_target_response.rb +48 -14
- data/lib/mux_ruby/models/track.rb +92 -33
- data/lib/mux_ruby/models/update_asset_master_access_request.rb +51 -17
- data/lib/mux_ruby/models/update_asset_mp4_support_request.rb +51 -17
- data/lib/mux_ruby/models/upload.rb +62 -26
- data/lib/mux_ruby/models/upload_error.rb +51 -15
- data/lib/mux_ruby/models/upload_response.rb +48 -14
- data/lib/mux_ruby/models/video_view.rb +242 -136
- data/lib/mux_ruby/models/video_view_event.rb +51 -17
- data/lib/mux_ruby/models/video_view_response.rb +49 -15
- data/lib/mux_ruby/version.rb +10 -3
- data/mux_ruby.gemspec +15 -15
- data/spec/api/assets_api_spec.rb +2 -0
- data/spec/api/playback_id_api_spec.rb +40 -0
- data/spec/api_client_spec.rb +10 -3
- data/spec/configuration_spec.rb +9 -2
- data/spec/models/asset_master_spec.rb +4 -0
- data/spec/models/asset_spec.rb +10 -0
- data/spec/models/export_date_spec.rb +40 -0
- data/spec/models/export_file_spec.rb +46 -0
- data/spec/models/get_asset_or_live_stream_id_response_data_object_spec.rb +44 -0
- data/spec/models/get_asset_or_live_stream_id_response_data_spec.rb +46 -0
- data/spec/models/get_asset_or_live_stream_id_response_spec.rb +34 -0
- data/spec/models/input_settings_spec.rb +12 -0
- data/spec/models/list_video_view_exports_response_spec.rb +46 -0
- data/spec/models/track_spec.rb +4 -0
- data/spec/spec_helper.rb +9 -2
- metadata +161 -235
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
=begin
|
|
2
|
-
#
|
|
3
|
-
|
|
2
|
+
#Mux API
|
|
3
|
+
|
|
4
|
+
#Mux is how developers build online video. This API encompasses both Mux Video and Mux Data functionality to help you build your video-related projects better and faster than ever before.
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: v1
|
|
7
|
+
Contact: devex@mux.com
|
|
8
|
+
Generated by: https://openapi-generator.tech
|
|
9
|
+
OpenAPI Generator version: 5.0.1
|
|
10
|
+
|
|
4
11
|
=end
|
|
5
12
|
|
|
6
13
|
require 'date'
|
|
14
|
+
require 'time'
|
|
7
15
|
|
|
8
16
|
module MuxRuby
|
|
9
17
|
class SimulcastTargetResponse
|
|
@@ -16,6 +24,11 @@ module MuxRuby
|
|
|
16
24
|
}
|
|
17
25
|
end
|
|
18
26
|
|
|
27
|
+
# Returns all the JSON keys this model knows about
|
|
28
|
+
def self.acceptable_attributes
|
|
29
|
+
attribute_map.values
|
|
30
|
+
end
|
|
31
|
+
|
|
19
32
|
# Attribute type mapping.
|
|
20
33
|
def self.openapi_types
|
|
21
34
|
{
|
|
@@ -23,15 +36,28 @@ module MuxRuby
|
|
|
23
36
|
}
|
|
24
37
|
end
|
|
25
38
|
|
|
39
|
+
# List of attributes with nullable: true
|
|
40
|
+
def self.openapi_nullable
|
|
41
|
+
Set.new([
|
|
42
|
+
])
|
|
43
|
+
end
|
|
44
|
+
|
|
26
45
|
# Initializes the object
|
|
27
46
|
# @param [Hash] attributes Model attributes in the form of hash
|
|
28
47
|
def initialize(attributes = {})
|
|
29
|
-
|
|
48
|
+
if (!attributes.is_a?(Hash))
|
|
49
|
+
fail ArgumentError, "The input argument (attributes) must be a hash in `MuxRuby::SimulcastTargetResponse` initialize method"
|
|
50
|
+
end
|
|
30
51
|
|
|
31
|
-
# convert string to symbol for hash key
|
|
32
|
-
attributes = attributes.each_with_object({}) { |(k, v), h|
|
|
52
|
+
# check to see if the attribute exists and convert string to symbol for hash key
|
|
53
|
+
attributes = attributes.each_with_object({}) { |(k, v), h|
|
|
54
|
+
if (!self.class.attribute_map.key?(k.to_sym))
|
|
55
|
+
fail ArgumentError, "`#{k}` is not a valid attribute in `MuxRuby::SimulcastTargetResponse`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
|
|
56
|
+
end
|
|
57
|
+
h[k.to_sym] = v
|
|
58
|
+
}
|
|
33
59
|
|
|
34
|
-
if attributes.
|
|
60
|
+
if attributes.key?(:'data')
|
|
35
61
|
self.data = attributes[:'data']
|
|
36
62
|
end
|
|
37
63
|
end
|
|
@@ -64,7 +90,7 @@ module MuxRuby
|
|
|
64
90
|
end
|
|
65
91
|
|
|
66
92
|
# Calculates hash code according to all attributes.
|
|
67
|
-
# @return [
|
|
93
|
+
# @return [Integer] Hash code
|
|
68
94
|
def hash
|
|
69
95
|
[data].hash
|
|
70
96
|
end
|
|
@@ -82,7 +108,9 @@ module MuxRuby
|
|
|
82
108
|
def build_from_hash(attributes)
|
|
83
109
|
return nil unless attributes.is_a?(Hash)
|
|
84
110
|
self.class.openapi_types.each_pair do |key, type|
|
|
85
|
-
if
|
|
111
|
+
if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
|
|
112
|
+
self.send("#{key}=", nil)
|
|
113
|
+
elsif type =~ /\AArray<(.*)>/i
|
|
86
114
|
# check to ensure the input is an array given that the attribute
|
|
87
115
|
# is documented as an array but the input is not
|
|
88
116
|
if attributes[self.class.attribute_map[key]].is_a?(Array)
|
|
@@ -90,7 +118,7 @@ module MuxRuby
|
|
|
90
118
|
end
|
|
91
119
|
elsif !attributes[self.class.attribute_map[key]].nil?
|
|
92
120
|
self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
|
|
93
|
-
end
|
|
121
|
+
end
|
|
94
122
|
end
|
|
95
123
|
|
|
96
124
|
self
|
|
@@ -102,8 +130,8 @@ module MuxRuby
|
|
|
102
130
|
# @return [Object] Deserialized data
|
|
103
131
|
def _deserialize(type, value)
|
|
104
132
|
case type.to_sym
|
|
105
|
-
when :
|
|
106
|
-
|
|
133
|
+
when :Time
|
|
134
|
+
Time.parse(value)
|
|
107
135
|
when :Date
|
|
108
136
|
Date.parse(value)
|
|
109
137
|
when :String
|
|
@@ -112,7 +140,7 @@ module MuxRuby
|
|
|
112
140
|
value.to_i
|
|
113
141
|
when :Float
|
|
114
142
|
value.to_f
|
|
115
|
-
when :
|
|
143
|
+
when :Boolean
|
|
116
144
|
if value.to_s =~ /\A(true|t|yes|y|1)\z/i
|
|
117
145
|
true
|
|
118
146
|
else
|
|
@@ -133,7 +161,9 @@ module MuxRuby
|
|
|
133
161
|
end
|
|
134
162
|
end
|
|
135
163
|
else # model
|
|
136
|
-
|
|
164
|
+
# models (e.g. Pet) or oneOf
|
|
165
|
+
klass = MuxRuby.const_get(type)
|
|
166
|
+
klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
|
|
137
167
|
end
|
|
138
168
|
end
|
|
139
169
|
|
|
@@ -155,7 +185,11 @@ module MuxRuby
|
|
|
155
185
|
hash = {}
|
|
156
186
|
self.class.attribute_map.each_pair do |attr, param|
|
|
157
187
|
value = self.send(attr)
|
|
158
|
-
|
|
188
|
+
if value.nil?
|
|
189
|
+
is_nullable = self.class.openapi_nullable.include?(attr)
|
|
190
|
+
next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
|
|
191
|
+
end
|
|
192
|
+
|
|
159
193
|
hash[param] = _to_hash(value)
|
|
160
194
|
end
|
|
161
195
|
hash
|
|
@@ -1,36 +1,57 @@
|
|
|
1
1
|
=begin
|
|
2
|
-
#
|
|
3
|
-
|
|
2
|
+
#Mux API
|
|
3
|
+
|
|
4
|
+
#Mux is how developers build online video. This API encompasses both Mux Video and Mux Data functionality to help you build your video-related projects better and faster than ever before.
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: v1
|
|
7
|
+
Contact: devex@mux.com
|
|
8
|
+
Generated by: https://openapi-generator.tech
|
|
9
|
+
OpenAPI Generator version: 5.0.1
|
|
10
|
+
|
|
4
11
|
=end
|
|
5
12
|
|
|
6
13
|
require 'date'
|
|
14
|
+
require 'time'
|
|
7
15
|
|
|
8
16
|
module MuxRuby
|
|
9
17
|
class Track
|
|
18
|
+
# Unique identifier for the Track
|
|
10
19
|
attr_accessor :id
|
|
11
20
|
|
|
21
|
+
# The type of track
|
|
12
22
|
attr_accessor :type
|
|
13
23
|
|
|
24
|
+
# The duration in seconds of the track media. This parameter is not set for the `text` type track. This field is optional and may not be set. The top level `duration` field of an asset will always be set.
|
|
14
25
|
attr_accessor :duration
|
|
15
26
|
|
|
27
|
+
# The maximum width in pixels available for the track. Only set for the `video` type track.
|
|
16
28
|
attr_accessor :max_width
|
|
17
29
|
|
|
30
|
+
# The maximum height in pixels available for the track. Only set for the `video` type track.
|
|
18
31
|
attr_accessor :max_height
|
|
19
32
|
|
|
33
|
+
# The maximum frame rate available for the track. Only set for the `video` type track. This field may return `-1` if the frame rate of the input cannot be reliably determined.
|
|
20
34
|
attr_accessor :max_frame_rate
|
|
21
35
|
|
|
36
|
+
# The maximum number of audio channels the track supports. Only set for the `audio` type track.
|
|
22
37
|
attr_accessor :max_channels
|
|
23
38
|
|
|
39
|
+
# Only set for the `audio` type track.
|
|
24
40
|
attr_accessor :max_channel_layout
|
|
25
41
|
|
|
42
|
+
# This parameter is set only for the `text` type track.
|
|
26
43
|
attr_accessor :text_type
|
|
27
44
|
|
|
45
|
+
# The language code value represents [BCP 47](https://tools.ietf.org/html/bcp47) specification compliant value. For example, `en` for English or `en-US` for the US version of English. This parameter is set for `text` type and `subtitles` text type track.
|
|
28
46
|
attr_accessor :language_code
|
|
29
47
|
|
|
48
|
+
# The name of the track containing a human-readable description. The hls manifest will associate a subtitle text track with this value. For example, the value is \"English\" for subtitles text track for the `language_code` value of `en-US`. This parameter is set for the `text` type and `subtitles` text type track.
|
|
30
49
|
attr_accessor :name
|
|
31
50
|
|
|
51
|
+
# Indicates the track provides Subtitles for the Deaf or Hard-of-hearing (SDH). This parameter is set for the `text` type and `subtitles` text type track.
|
|
32
52
|
attr_accessor :closed_captions
|
|
33
53
|
|
|
54
|
+
# Arbitrary metadata set for the track either when creating the asset or track. This parameter is set for `text` type and `subtitles` text type track. Max 255 characters.
|
|
34
55
|
attr_accessor :passthrough
|
|
35
56
|
|
|
36
57
|
class EnumAttributeValidator
|
|
@@ -74,6 +95,11 @@ module MuxRuby
|
|
|
74
95
|
}
|
|
75
96
|
end
|
|
76
97
|
|
|
98
|
+
# Returns all the JSON keys this model knows about
|
|
99
|
+
def self.acceptable_attributes
|
|
100
|
+
attribute_map.values
|
|
101
|
+
end
|
|
102
|
+
|
|
77
103
|
# Attribute type mapping.
|
|
78
104
|
def self.openapi_types
|
|
79
105
|
{
|
|
@@ -88,68 +114,81 @@ module MuxRuby
|
|
|
88
114
|
:'text_type' => :'String',
|
|
89
115
|
:'language_code' => :'String',
|
|
90
116
|
:'name' => :'String',
|
|
91
|
-
:'closed_captions' => :'
|
|
117
|
+
:'closed_captions' => :'Boolean',
|
|
92
118
|
:'passthrough' => :'String'
|
|
93
119
|
}
|
|
94
120
|
end
|
|
95
121
|
|
|
122
|
+
# List of attributes with nullable: true
|
|
123
|
+
def self.openapi_nullable
|
|
124
|
+
Set.new([
|
|
125
|
+
])
|
|
126
|
+
end
|
|
127
|
+
|
|
96
128
|
# Initializes the object
|
|
97
129
|
# @param [Hash] attributes Model attributes in the form of hash
|
|
98
130
|
def initialize(attributes = {})
|
|
99
|
-
|
|
131
|
+
if (!attributes.is_a?(Hash))
|
|
132
|
+
fail ArgumentError, "The input argument (attributes) must be a hash in `MuxRuby::Track` initialize method"
|
|
133
|
+
end
|
|
100
134
|
|
|
101
|
-
# convert string to symbol for hash key
|
|
102
|
-
attributes = attributes.each_with_object({}) { |(k, v), h|
|
|
135
|
+
# check to see if the attribute exists and convert string to symbol for hash key
|
|
136
|
+
attributes = attributes.each_with_object({}) { |(k, v), h|
|
|
137
|
+
if (!self.class.attribute_map.key?(k.to_sym))
|
|
138
|
+
fail ArgumentError, "`#{k}` is not a valid attribute in `MuxRuby::Track`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
|
|
139
|
+
end
|
|
140
|
+
h[k.to_sym] = v
|
|
141
|
+
}
|
|
103
142
|
|
|
104
|
-
if attributes.
|
|
143
|
+
if attributes.key?(:'id')
|
|
105
144
|
self.id = attributes[:'id']
|
|
106
145
|
end
|
|
107
146
|
|
|
108
|
-
if attributes.
|
|
147
|
+
if attributes.key?(:'type')
|
|
109
148
|
self.type = attributes[:'type']
|
|
110
149
|
end
|
|
111
150
|
|
|
112
|
-
if attributes.
|
|
151
|
+
if attributes.key?(:'duration')
|
|
113
152
|
self.duration = attributes[:'duration']
|
|
114
153
|
end
|
|
115
154
|
|
|
116
|
-
if attributes.
|
|
155
|
+
if attributes.key?(:'max_width')
|
|
117
156
|
self.max_width = attributes[:'max_width']
|
|
118
157
|
end
|
|
119
158
|
|
|
120
|
-
if attributes.
|
|
159
|
+
if attributes.key?(:'max_height')
|
|
121
160
|
self.max_height = attributes[:'max_height']
|
|
122
161
|
end
|
|
123
162
|
|
|
124
|
-
if attributes.
|
|
163
|
+
if attributes.key?(:'max_frame_rate')
|
|
125
164
|
self.max_frame_rate = attributes[:'max_frame_rate']
|
|
126
165
|
end
|
|
127
166
|
|
|
128
|
-
if attributes.
|
|
167
|
+
if attributes.key?(:'max_channels')
|
|
129
168
|
self.max_channels = attributes[:'max_channels']
|
|
130
169
|
end
|
|
131
170
|
|
|
132
|
-
if attributes.
|
|
171
|
+
if attributes.key?(:'max_channel_layout')
|
|
133
172
|
self.max_channel_layout = attributes[:'max_channel_layout']
|
|
134
173
|
end
|
|
135
174
|
|
|
136
|
-
if attributes.
|
|
175
|
+
if attributes.key?(:'text_type')
|
|
137
176
|
self.text_type = attributes[:'text_type']
|
|
138
177
|
end
|
|
139
178
|
|
|
140
|
-
if attributes.
|
|
179
|
+
if attributes.key?(:'language_code')
|
|
141
180
|
self.language_code = attributes[:'language_code']
|
|
142
181
|
end
|
|
143
182
|
|
|
144
|
-
if attributes.
|
|
183
|
+
if attributes.key?(:'name')
|
|
145
184
|
self.name = attributes[:'name']
|
|
146
185
|
end
|
|
147
186
|
|
|
148
|
-
if attributes.
|
|
187
|
+
if attributes.key?(:'closed_captions')
|
|
149
188
|
self.closed_captions = attributes[:'closed_captions']
|
|
150
189
|
end
|
|
151
190
|
|
|
152
|
-
if attributes.
|
|
191
|
+
if attributes.key?(:'passthrough')
|
|
153
192
|
self.passthrough = attributes[:'passthrough']
|
|
154
193
|
end
|
|
155
194
|
end
|
|
@@ -164,9 +203,11 @@ module MuxRuby
|
|
|
164
203
|
# Check to see if the all the properties in the model are valid
|
|
165
204
|
# @return true if the model is valid
|
|
166
205
|
def valid?
|
|
167
|
-
type_validator = EnumAttributeValidator.new('String', [
|
|
206
|
+
type_validator = EnumAttributeValidator.new('String', ["video", "audio", "text"])
|
|
168
207
|
return false unless type_validator.valid?(@type)
|
|
169
|
-
|
|
208
|
+
max_channel_layout_validator = EnumAttributeValidator.new('String', ["mono", "stereo", "5.2", "7.1"])
|
|
209
|
+
return false unless max_channel_layout_validator.valid?(@max_channel_layout)
|
|
210
|
+
text_type_validator = EnumAttributeValidator.new('String', ["subtitles"])
|
|
170
211
|
return false unless text_type_validator.valid?(@text_type)
|
|
171
212
|
true
|
|
172
213
|
end
|
|
@@ -174,19 +215,29 @@ module MuxRuby
|
|
|
174
215
|
# Custom attribute writer method checking allowed values (enum).
|
|
175
216
|
# @param [Object] type Object to be assigned
|
|
176
217
|
def type=(type)
|
|
177
|
-
validator = EnumAttributeValidator.new('String', [
|
|
218
|
+
validator = EnumAttributeValidator.new('String', ["video", "audio", "text"])
|
|
178
219
|
unless validator.valid?(type)
|
|
179
|
-
fail ArgumentError,
|
|
220
|
+
fail ArgumentError, "invalid value for \"type\", must be one of #{validator.allowable_values}."
|
|
180
221
|
end
|
|
181
222
|
@type = type
|
|
182
223
|
end
|
|
183
224
|
|
|
225
|
+
# Custom attribute writer method checking allowed values (enum).
|
|
226
|
+
# @param [Object] max_channel_layout Object to be assigned
|
|
227
|
+
def max_channel_layout=(max_channel_layout)
|
|
228
|
+
validator = EnumAttributeValidator.new('String', ["mono", "stereo", "5.2", "7.1"])
|
|
229
|
+
unless validator.valid?(max_channel_layout)
|
|
230
|
+
fail ArgumentError, "invalid value for \"max_channel_layout\", must be one of #{validator.allowable_values}."
|
|
231
|
+
end
|
|
232
|
+
@max_channel_layout = max_channel_layout
|
|
233
|
+
end
|
|
234
|
+
|
|
184
235
|
# Custom attribute writer method checking allowed values (enum).
|
|
185
236
|
# @param [Object] text_type Object to be assigned
|
|
186
237
|
def text_type=(text_type)
|
|
187
|
-
validator = EnumAttributeValidator.new('String', [
|
|
238
|
+
validator = EnumAttributeValidator.new('String', ["subtitles"])
|
|
188
239
|
unless validator.valid?(text_type)
|
|
189
|
-
fail ArgumentError,
|
|
240
|
+
fail ArgumentError, "invalid value for \"text_type\", must be one of #{validator.allowable_values}."
|
|
190
241
|
end
|
|
191
242
|
@text_type = text_type
|
|
192
243
|
end
|
|
@@ -218,7 +269,7 @@ module MuxRuby
|
|
|
218
269
|
end
|
|
219
270
|
|
|
220
271
|
# Calculates hash code according to all attributes.
|
|
221
|
-
# @return [
|
|
272
|
+
# @return [Integer] Hash code
|
|
222
273
|
def hash
|
|
223
274
|
[id, type, duration, max_width, max_height, max_frame_rate, max_channels, max_channel_layout, text_type, language_code, name, closed_captions, passthrough].hash
|
|
224
275
|
end
|
|
@@ -236,7 +287,9 @@ module MuxRuby
|
|
|
236
287
|
def build_from_hash(attributes)
|
|
237
288
|
return nil unless attributes.is_a?(Hash)
|
|
238
289
|
self.class.openapi_types.each_pair do |key, type|
|
|
239
|
-
if
|
|
290
|
+
if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
|
|
291
|
+
self.send("#{key}=", nil)
|
|
292
|
+
elsif type =~ /\AArray<(.*)>/i
|
|
240
293
|
# check to ensure the input is an array given that the attribute
|
|
241
294
|
# is documented as an array but the input is not
|
|
242
295
|
if attributes[self.class.attribute_map[key]].is_a?(Array)
|
|
@@ -244,7 +297,7 @@ module MuxRuby
|
|
|
244
297
|
end
|
|
245
298
|
elsif !attributes[self.class.attribute_map[key]].nil?
|
|
246
299
|
self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
|
|
247
|
-
end
|
|
300
|
+
end
|
|
248
301
|
end
|
|
249
302
|
|
|
250
303
|
self
|
|
@@ -256,8 +309,8 @@ module MuxRuby
|
|
|
256
309
|
# @return [Object] Deserialized data
|
|
257
310
|
def _deserialize(type, value)
|
|
258
311
|
case type.to_sym
|
|
259
|
-
when :
|
|
260
|
-
|
|
312
|
+
when :Time
|
|
313
|
+
Time.parse(value)
|
|
261
314
|
when :Date
|
|
262
315
|
Date.parse(value)
|
|
263
316
|
when :String
|
|
@@ -266,7 +319,7 @@ module MuxRuby
|
|
|
266
319
|
value.to_i
|
|
267
320
|
when :Float
|
|
268
321
|
value.to_f
|
|
269
|
-
when :
|
|
322
|
+
when :Boolean
|
|
270
323
|
if value.to_s =~ /\A(true|t|yes|y|1)\z/i
|
|
271
324
|
true
|
|
272
325
|
else
|
|
@@ -287,7 +340,9 @@ module MuxRuby
|
|
|
287
340
|
end
|
|
288
341
|
end
|
|
289
342
|
else # model
|
|
290
|
-
|
|
343
|
+
# models (e.g. Pet) or oneOf
|
|
344
|
+
klass = MuxRuby.const_get(type)
|
|
345
|
+
klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
|
|
291
346
|
end
|
|
292
347
|
end
|
|
293
348
|
|
|
@@ -309,7 +364,11 @@ module MuxRuby
|
|
|
309
364
|
hash = {}
|
|
310
365
|
self.class.attribute_map.each_pair do |attr, param|
|
|
311
366
|
value = self.send(attr)
|
|
312
|
-
|
|
367
|
+
if value.nil?
|
|
368
|
+
is_nullable = self.class.openapi_nullable.include?(attr)
|
|
369
|
+
next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
|
|
370
|
+
end
|
|
371
|
+
|
|
313
372
|
hash[param] = _to_hash(value)
|
|
314
373
|
end
|
|
315
374
|
hash
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
=begin
|
|
2
|
-
#
|
|
3
|
-
|
|
2
|
+
#Mux API
|
|
3
|
+
|
|
4
|
+
#Mux is how developers build online video. This API encompasses both Mux Video and Mux Data functionality to help you build your video-related projects better and faster than ever before.
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: v1
|
|
7
|
+
Contact: devex@mux.com
|
|
8
|
+
Generated by: https://openapi-generator.tech
|
|
9
|
+
OpenAPI Generator version: 5.0.1
|
|
10
|
+
|
|
4
11
|
=end
|
|
5
12
|
|
|
6
13
|
require 'date'
|
|
14
|
+
require 'time'
|
|
7
15
|
|
|
8
16
|
module MuxRuby
|
|
9
17
|
class UpdateAssetMasterAccessRequest
|
|
@@ -39,6 +47,11 @@ module MuxRuby
|
|
|
39
47
|
}
|
|
40
48
|
end
|
|
41
49
|
|
|
50
|
+
# Returns all the JSON keys this model knows about
|
|
51
|
+
def self.acceptable_attributes
|
|
52
|
+
attribute_map.values
|
|
53
|
+
end
|
|
54
|
+
|
|
42
55
|
# Attribute type mapping.
|
|
43
56
|
def self.openapi_types
|
|
44
57
|
{
|
|
@@ -46,15 +59,28 @@ module MuxRuby
|
|
|
46
59
|
}
|
|
47
60
|
end
|
|
48
61
|
|
|
62
|
+
# List of attributes with nullable: true
|
|
63
|
+
def self.openapi_nullable
|
|
64
|
+
Set.new([
|
|
65
|
+
])
|
|
66
|
+
end
|
|
67
|
+
|
|
49
68
|
# Initializes the object
|
|
50
69
|
# @param [Hash] attributes Model attributes in the form of hash
|
|
51
70
|
def initialize(attributes = {})
|
|
52
|
-
|
|
71
|
+
if (!attributes.is_a?(Hash))
|
|
72
|
+
fail ArgumentError, "The input argument (attributes) must be a hash in `MuxRuby::UpdateAssetMasterAccessRequest` initialize method"
|
|
73
|
+
end
|
|
53
74
|
|
|
54
|
-
# convert string to symbol for hash key
|
|
55
|
-
attributes = attributes.each_with_object({}) { |(k, v), h|
|
|
75
|
+
# check to see if the attribute exists and convert string to symbol for hash key
|
|
76
|
+
attributes = attributes.each_with_object({}) { |(k, v), h|
|
|
77
|
+
if (!self.class.attribute_map.key?(k.to_sym))
|
|
78
|
+
fail ArgumentError, "`#{k}` is not a valid attribute in `MuxRuby::UpdateAssetMasterAccessRequest`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
|
|
79
|
+
end
|
|
80
|
+
h[k.to_sym] = v
|
|
81
|
+
}
|
|
56
82
|
|
|
57
|
-
if attributes.
|
|
83
|
+
if attributes.key?(:'master_access')
|
|
58
84
|
self.master_access = attributes[:'master_access']
|
|
59
85
|
end
|
|
60
86
|
end
|
|
@@ -69,7 +95,7 @@ module MuxRuby
|
|
|
69
95
|
# Check to see if the all the properties in the model are valid
|
|
70
96
|
# @return true if the model is valid
|
|
71
97
|
def valid?
|
|
72
|
-
master_access_validator = EnumAttributeValidator.new('String', [
|
|
98
|
+
master_access_validator = EnumAttributeValidator.new('String', ["temporary", "none"])
|
|
73
99
|
return false unless master_access_validator.valid?(@master_access)
|
|
74
100
|
true
|
|
75
101
|
end
|
|
@@ -77,9 +103,9 @@ module MuxRuby
|
|
|
77
103
|
# Custom attribute writer method checking allowed values (enum).
|
|
78
104
|
# @param [Object] master_access Object to be assigned
|
|
79
105
|
def master_access=(master_access)
|
|
80
|
-
validator = EnumAttributeValidator.new('String', [
|
|
106
|
+
validator = EnumAttributeValidator.new('String', ["temporary", "none"])
|
|
81
107
|
unless validator.valid?(master_access)
|
|
82
|
-
fail ArgumentError,
|
|
108
|
+
fail ArgumentError, "invalid value for \"master_access\", must be one of #{validator.allowable_values}."
|
|
83
109
|
end
|
|
84
110
|
@master_access = master_access
|
|
85
111
|
end
|
|
@@ -99,7 +125,7 @@ module MuxRuby
|
|
|
99
125
|
end
|
|
100
126
|
|
|
101
127
|
# Calculates hash code according to all attributes.
|
|
102
|
-
# @return [
|
|
128
|
+
# @return [Integer] Hash code
|
|
103
129
|
def hash
|
|
104
130
|
[master_access].hash
|
|
105
131
|
end
|
|
@@ -117,7 +143,9 @@ module MuxRuby
|
|
|
117
143
|
def build_from_hash(attributes)
|
|
118
144
|
return nil unless attributes.is_a?(Hash)
|
|
119
145
|
self.class.openapi_types.each_pair do |key, type|
|
|
120
|
-
if
|
|
146
|
+
if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
|
|
147
|
+
self.send("#{key}=", nil)
|
|
148
|
+
elsif type =~ /\AArray<(.*)>/i
|
|
121
149
|
# check to ensure the input is an array given that the attribute
|
|
122
150
|
# is documented as an array but the input is not
|
|
123
151
|
if attributes[self.class.attribute_map[key]].is_a?(Array)
|
|
@@ -125,7 +153,7 @@ module MuxRuby
|
|
|
125
153
|
end
|
|
126
154
|
elsif !attributes[self.class.attribute_map[key]].nil?
|
|
127
155
|
self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
|
|
128
|
-
end
|
|
156
|
+
end
|
|
129
157
|
end
|
|
130
158
|
|
|
131
159
|
self
|
|
@@ -137,8 +165,8 @@ module MuxRuby
|
|
|
137
165
|
# @return [Object] Deserialized data
|
|
138
166
|
def _deserialize(type, value)
|
|
139
167
|
case type.to_sym
|
|
140
|
-
when :
|
|
141
|
-
|
|
168
|
+
when :Time
|
|
169
|
+
Time.parse(value)
|
|
142
170
|
when :Date
|
|
143
171
|
Date.parse(value)
|
|
144
172
|
when :String
|
|
@@ -147,7 +175,7 @@ module MuxRuby
|
|
|
147
175
|
value.to_i
|
|
148
176
|
when :Float
|
|
149
177
|
value.to_f
|
|
150
|
-
when :
|
|
178
|
+
when :Boolean
|
|
151
179
|
if value.to_s =~ /\A(true|t|yes|y|1)\z/i
|
|
152
180
|
true
|
|
153
181
|
else
|
|
@@ -168,7 +196,9 @@ module MuxRuby
|
|
|
168
196
|
end
|
|
169
197
|
end
|
|
170
198
|
else # model
|
|
171
|
-
|
|
199
|
+
# models (e.g. Pet) or oneOf
|
|
200
|
+
klass = MuxRuby.const_get(type)
|
|
201
|
+
klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
|
|
172
202
|
end
|
|
173
203
|
end
|
|
174
204
|
|
|
@@ -190,7 +220,11 @@ module MuxRuby
|
|
|
190
220
|
hash = {}
|
|
191
221
|
self.class.attribute_map.each_pair do |attr, param|
|
|
192
222
|
value = self.send(attr)
|
|
193
|
-
|
|
223
|
+
if value.nil?
|
|
224
|
+
is_nullable = self.class.openapi_nullable.include?(attr)
|
|
225
|
+
next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
|
|
226
|
+
end
|
|
227
|
+
|
|
194
228
|
hash[param] = _to_hash(value)
|
|
195
229
|
end
|
|
196
230
|
hash
|