Class: S3MediaServerApi::Media::CommonMediaApi

Inherits:
Object
  • Object
show all
Defined in:
lib/s3_media_server_api/media/common_media_api.rb

Overview

Parent module for all media api, implements common methods for all media files To use methods from this module new module must be inherited from this module and media_type method with existing media type must be overwritten

Direct Known Subclasses

Audio, Collection, Document, Image, Video

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(response) ⇒ CommonMediaApi

Returns a new instance of CommonMediaApi.



12
13
14
# File 'lib/s3_media_server_api/media/common_media_api.rb', line 12

def initialize(response)
  @params = response[:data].nil? ? {} : response[:data]
end

Class Method Details

.create(uuid) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/s3_media_server_api/media/common_media_api.rb', line 37

def create(uuid)
  params = {}
  case media_type
  when 'video'
    params = {uuid: uuid}
  when 'collection'
    params = {owner_uuid: uuid}
  else
    params = { aws_file_uuid: uuid }
  end
  return empty_object unless uuid

  response = AsynkRequest.sync_request(base_path, :create, params)
  raise CreationError.message_from_asynk_response(response) unless response.success?
  self.new(response)
end

.create_from_path(path) ⇒ Object

creates media file parameters: path - file path in file system

returns: response with created AwsFile information



59
60
61
62
63
# File 'lib/s3_media_server_api/media/common_media_api.rb', line 59

def create_from_path(path)
  aws_file = S3MediaServerApi::Config.mocked ? Mocked::Uploader.upload(path) : Uploader.upload(path)
  uuid = aws_file.uuid
  create(uuid)
end

.custom_async_request(action, params) ⇒ Object

this method should be used to send custom asynchronous request to s3_media_server. For example, to cut audio file parameters: action - method that should be called

params - parameters for specified method

Example:

custom_async_request (:cut, 'image')


104
105
106
# File 'lib/s3_media_server_api/media/common_media_api.rb', line 104

def custom_async_request(action, params)
  AsynkRequest.async_request(base_path, action, params)
end

.custom_sync_request(action, params) ⇒ Object

this method should be used to send custom synchronous request to s3_media_server. For example, to copy image file parameters: action - method that should be called

params - parameters for specified method

Example:

custom_sync_request (:copy, 'image')


93
94
95
# File 'lib/s3_media_server_api/media/common_media_api.rb', line 93

def custom_sync_request(action, params)
  AsynkRequest.sync_request(base_path, action, params)
end

.destroy(uuid) ⇒ Object

destroys media file parameters: uuid - uuid of file



68
69
70
71
# File 'lib/s3_media_server_api/media/common_media_api.rb', line 68

def destroy(uuid)
  return unless uuid
  AsynkRequest.async_request(base_path, :destroy, uuid: uuid)
end

.resolve(uuid) ⇒ Object

fetches media file parameters: uuid - uuid of file

returns: response with file information



78
79
80
81
82
83
84
# File 'lib/s3_media_server_api/media/common_media_api.rb', line 78

def resolve(uuid)
  return empty_object unless uuid
  cache_key = "#{media_type}/#{uuid}"
  Config.cache_class.fetch(cache_key) do
    self.new(AsynkRequest.sync_request(base_path, :resolve, uuid: uuid))
  end
end

Instance Method Details

#as_hashObject



28
29
30
# File 'lib/s3_media_server_api/media/common_media_api.rb', line 28

def as_hash
  @params
end

#exist?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/s3_media_server_api/media/common_media_api.rb', line 32

def exist?
  !@params.empty?
end

#nameObject



20
21
22
# File 'lib/s3_media_server_api/media/common_media_api.rb', line 20

def name
  @params[:name]
end

#sizeObject



24
25
26
# File 'lib/s3_media_server_api/media/common_media_api.rb', line 24

def size
  @params[:size]
end

#uuidObject



16
17
18
# File 'lib/s3_media_server_api/media/common_media_api.rb', line 16

def uuid
  @params[:uuid]
end