Module: Crystalline::MetadataFields

Extended by:
T::Sig
Included in:
FastpixApiSDK::Models::Components::AudioInput, FastpixApiSDK::Models::Components::CreateLiveStreamRequest, FastpixApiSDK::Models::Components::CreateLiveStreamRequestMetadata, FastpixApiSDK::Models::Components::CreateMediaRequest, FastpixApiSDK::Models::Components::CreateMediaRequestAccessRestrictions, FastpixApiSDK::Models::Components::CreateMediaRequestDomains, FastpixApiSDK::Models::Components::CreateMediaRequestMetadata, FastpixApiSDK::Models::Components::CreateMediaRequestUserAgents, FastpixApiSDK::Models::Components::CreateMediaResponse, FastpixApiSDK::Models::Components::CreateMediaResponseMetadata, FastpixApiSDK::Models::Components::DirectUpload, FastpixApiSDK::Models::Components::DirectUploadResponse, FastpixApiSDK::Models::Components::DirectUploadResponseMetadata, FastpixApiSDK::Models::Components::GetCreateLiveStreamResponseDTO, FastpixApiSDK::Models::Components::GetCreateLiveStreamResponseDTOMetadata, FastpixApiSDK::Models::Components::GetCreateLiveStreamResponseDTOSrtPlaybackResponse, FastpixApiSDK::Models::Components::GetStreamsResponse, FastpixApiSDK::Models::Components::ImposeTrack, FastpixApiSDK::Models::Components::Input, FastpixApiSDK::Models::Components::InputMediaSettings, FastpixApiSDK::Models::Components::LiveStreamDeleteResponse, FastpixApiSDK::Models::Components::LiveStreamResponseDTO, FastpixApiSDK::Models::Components::LivestreamgetResponse, FastpixApiSDK::Models::Components::Media, FastpixApiSDK::Models::Components::MediaMetadata, FastpixApiSDK::Models::Components::Moderation, FastpixApiSDK::Models::Components::Pagination, FastpixApiSDK::Models::Components::PatchLiveStreamRequest, FastpixApiSDK::Models::Components::PatchLiveStreamRequestMetadata, FastpixApiSDK::Models::Components::PatchResponseDTO, FastpixApiSDK::Models::Components::PatchResponseData, FastpixApiSDK::Models::Components::PatchResponseDataMetadata, FastpixApiSDK::Models::Components::PatchResponseDataSrtPlaybackResponse, FastpixApiSDK::Models::Components::Placement, FastpixApiSDK::Models::Components::PlaybackId, FastpixApiSDK::Models::Components::PlaybackIdAccessRestrictions, FastpixApiSDK::Models::Components::PlaybackIdDomains, FastpixApiSDK::Models::Components::PlaybackIdRequest, FastpixApiSDK::Models::Components::PlaybackIdResponse, FastpixApiSDK::Models::Components::PlaybackIdResponseData, FastpixApiSDK::Models::Components::PlaybackIdUserAgents, FastpixApiSDK::Models::Components::PlaybackIds, FastpixApiSDK::Models::Components::PlaybackSettings, FastpixApiSDK::Models::Components::Security, FastpixApiSDK::Models::Components::Segment1, FastpixApiSDK::Models::Components::Segment2, FastpixApiSDK::Models::Components::SegmentUnion, FastpixApiSDK::Models::Components::SimulcastRequest, FastpixApiSDK::Models::Components::SimulcastResponse, FastpixApiSDK::Models::Components::SimulcastResponseData, FastpixApiSDK::Models::Components::SimulcastResponseMetadata, FastpixApiSDK::Models::Components::SimulcastUpdateRequest, FastpixApiSDK::Models::Components::SimulcastUpdateRequestMetadata, FastpixApiSDK::Models::Components::SimulcastUpdateResponse, FastpixApiSDK::Models::Components::SimulcastUpdateResponseData, FastpixApiSDK::Models::Components::SimulcastUpdateResponseMetadata, FastpixApiSDK::Models::Components::SimulcastdeleteResponse, FastpixApiSDK::Models::Components::Subtitle, FastpixApiSDK::Models::Components::SubtitleInput, FastpixApiSDK::Models::Components::SubtitleMetadata, FastpixApiSDK::Models::Components::Summary, FastpixApiSDK::Models::Components::Track, FastpixApiSDK::Models::Components::VideoInput, FastpixApiSDK::Models::Components::WatermarkInput, FastpixApiSDK::Models::Errors::APIError, FastpixApiSDK::Models::Errors::BadRequestError, FastpixApiSDK::Models::Errors::BadRequestErrorError, FastpixApiSDK::Models::Errors::Field, FastpixApiSDK::Models::Errors::ForbiddenError, FastpixApiSDK::Models::Errors::ForbiddenErrorError, FastpixApiSDK::Models::Errors::InvalidPermissionError, FastpixApiSDK::Models::Errors::InvalidPermissionErrorError, FastpixApiSDK::Models::Errors::MediaNotFoundError, FastpixApiSDK::Models::Errors::MediaNotFoundErrorError, FastpixApiSDK::Models::Errors::MediaOrPlaybackNotFoundError, FastpixApiSDK::Models::Errors::MediaOrPlaybackNotFoundErrorError, FastpixApiSDK::Models::Errors::NotFoundError, FastpixApiSDK::Models::Errors::NotFoundErrorError, FastpixApiSDK::Models::Errors::NotFoundErrorPlaybackId, FastpixApiSDK::Models::Errors::NotFoundErrorPlaybackIdError, FastpixApiSDK::Models::Errors::NotFoundErrorSimulcast, FastpixApiSDK::Models::Errors::NotFoundErrorSimulcastError, FastpixApiSDK::Models::Errors::SimulcastUnavailableError, FastpixApiSDK::Models::Errors::SimulcastUnavailableErrorError, FastpixApiSDK::Models::Errors::UnauthorizedError, FastpixApiSDK::Models::Errors::UnauthorizedErrorError, FastpixApiSDK::Models::Errors::ValidationErrorResponse, FastpixApiSDK::Models::Errors::ValidationErrorResponseError, FastpixApiSDK::Models::Operations::CreateMediaPlaybackIdAccessRestrictions, FastpixApiSDK::Models::Operations::CreateMediaPlaybackIdDomains, FastpixApiSDK::Models::Operations::CreateMediaPlaybackIdRequest, FastpixApiSDK::Models::Operations::CreateMediaPlaybackIdRequestBody, FastpixApiSDK::Models::Operations::CreateMediaPlaybackIdResponse, FastpixApiSDK::Models::Operations::CreateMediaPlaybackIdResponseBody, FastpixApiSDK::Models::Operations::CreateMediaPlaybackIdUserAgents, FastpixApiSDK::Models::Operations::CreateMediaResponse, FastpixApiSDK::Models::Operations::CreateMediaResponseBody, FastpixApiSDK::Models::Operations::CreateNewStreamResponse, FastpixApiSDK::Models::Operations::CreatePlaybackIdOfStreamRequest, FastpixApiSDK::Models::Operations::CreatePlaybackIdOfStreamResponse, FastpixApiSDK::Models::Operations::CreateSimulcastOfStreamRequest, FastpixApiSDK::Models::Operations::CreateSimulcastOfStreamResponse, FastpixApiSDK::Models::Operations::Data, FastpixApiSDK::Models::Operations::DeleteLiveStreamRequest, FastpixApiSDK::Models::Operations::DeleteLiveStreamResponse, FastpixApiSDK::Models::Operations::DeleteMediaPlaybackIdRequest, FastpixApiSDK::Models::Operations::DeleteMediaPlaybackIdResponse, FastpixApiSDK::Models::Operations::DeleteMediaPlaybackIdResponseBody, FastpixApiSDK::Models::Operations::DeleteMediaRequest, FastpixApiSDK::Models::Operations::DeleteMediaResponse, FastpixApiSDK::Models::Operations::DeleteMediaResponseBody, FastpixApiSDK::Models::Operations::DeletePlaybackIdOfStreamRequest, FastpixApiSDK::Models::Operations::DeletePlaybackIdOfStreamResponse, FastpixApiSDK::Models::Operations::DeleteSimulcastOfStreamRequest, FastpixApiSDK::Models::Operations::DeleteSimulcastOfStreamResponse, FastpixApiSDK::Models::Operations::DirectUploadVideoMediaAccessRestrictions, FastpixApiSDK::Models::Operations::DirectUploadVideoMediaDomains, FastpixApiSDK::Models::Operations::DirectUploadVideoMediaMetadata, FastpixApiSDK::Models::Operations::DirectUploadVideoMediaRequest, FastpixApiSDK::Models::Operations::DirectUploadVideoMediaResponse, FastpixApiSDK::Models::Operations::DirectUploadVideoMediaResponseBody, FastpixApiSDK::Models::Operations::DirectUploadVideoMediaUserAgents, FastpixApiSDK::Models::Operations::GetAllStreamsRequest, FastpixApiSDK::Models::Operations::GetAllStreamsResponse, FastpixApiSDK::Models::Operations::GetLiveStreamByIdRequest, FastpixApiSDK::Models::Operations::GetLiveStreamByIdResponse, FastpixApiSDK::Models::Operations::GetLiveStreamPlaybackIdRequest, FastpixApiSDK::Models::Operations::GetLiveStreamPlaybackIdResponse, FastpixApiSDK::Models::Operations::GetMediaRequest, FastpixApiSDK::Models::Operations::GetMediaResponse, FastpixApiSDK::Models::Operations::GetMediaResponseBody, FastpixApiSDK::Models::Operations::GetSpecificSimulcastOfStreamRequest, FastpixApiSDK::Models::Operations::GetSpecificSimulcastOfStreamResponse, FastpixApiSDK::Models::Operations::Input, FastpixApiSDK::Models::Operations::ListMediaRequest, FastpixApiSDK::Models::Operations::ListMediaResponse, FastpixApiSDK::Models::Operations::ListMediaResponseBody, FastpixApiSDK::Models::Operations::Moderation, FastpixApiSDK::Models::Operations::PushMediaSettings, FastpixApiSDK::Models::Operations::RetrieveMediaInputInfoRequest, FastpixApiSDK::Models::Operations::RetrieveMediaInputInfoResponse, FastpixApiSDK::Models::Operations::RetrieveMediaInputInfoResponseBody, FastpixApiSDK::Models::Operations::Subtitles, FastpixApiSDK::Models::Operations::SubtitlesMetadata, FastpixApiSDK::Models::Operations::Summary, FastpixApiSDK::Models::Operations::UpdateLiveStreamRequest, FastpixApiSDK::Models::Operations::UpdateLiveStreamResponse, FastpixApiSDK::Models::Operations::UpdateSpecificSimulcastOfStreamRequest, FastpixApiSDK::Models::Operations::UpdateSpecificSimulcastOfStreamResponse, FastpixApiSDK::Models::Operations::UpdatedMediaMetadata, FastpixApiSDK::Models::Operations::UpdatedMediaRequest, FastpixApiSDK::Models::Operations::UpdatedMediaRequestBody, FastpixApiSDK::Models::Operations::UpdatedMediaResponse, FastpixApiSDK::Models::Operations::UpdatedMediaResponseBody, FastpixApiSDK::SDKConfiguration
Defined in:
lib/crystalline/metadata_fields.rb

Defined Under Namespace

Modules: ClassMethods Classes: Field

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



156
157
158
# File 'lib/crystalline/metadata_fields.rb', line 156

def self.included(base)
  base.extend(ClassMethods)
end

Instance Method Details

#field(field_name) ⇒ Object



164
165
166
167
168
# File 'lib/crystalline/metadata_fields.rb', line 164

def field(field_name)
  fields.each do |f|
    return f if f.name == field_name
  end
end

#fieldsObject



160
161
162
# File 'lib/crystalline/metadata_fields.rb', line 160

def fields
  self.class.fields
end

#initializeObject



150
151
152
153
154
# File 'lib/crystalline/metadata_fields.rb', line 150

def initialize
  instance = allocate
  fields.each { |mod| instance.singleton_class.include(mod) }
  instance.send(:initialize)
end

#marshal_single(field) ⇒ Object



170
171
172
173
174
175
176
# File 'lib/crystalline/metadata_fields.rb', line 170

def marshal_single(field)
  if field.class.include? ::Crystalline::MetadataFields
    field.to_dict
  else
    ::Crystalline.val_to_string(field, primitives: false)
  end
end

#to_dictObject



178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
# File 'lib/crystalline/metadata_fields.rb', line 178

def to_dict
  result = {}
  fields.sort_by(&:name).each do |field|
    format_json_meta = field.[:format_json]
    required = !format_json_meta.nil? && format_json_meta.include?(:required)
    if !format_json_meta.nil? && format_json_meta.include?(:letter_case)
      key = format_json_meta[:letter_case].call(field.name)
    else
      key = field.name
    end

    f = send(field.name)
    next if f.nil? && !required
    result[key] = nil if f.nil? && required

    if f.is_a? Array
      result[key] = f.map { |o| marshal_single(o) }
    elsif f.is_a? Hash
      result[key] = f.map { |k, v| [k, marshal_single(v)] }
    else
      result[key] = marshal_single(f)
    end
  end
  result
end

#to_json(*args) ⇒ Object



204
205
206
# File 'lib/crystalline/metadata_fields.rb', line 204

def to_json(*args)
  JSON.generate(to_dict, *args)
end