Module: MP4::Source

Defined in:
lib/mp4/source.rb,
lib/mp4/source/s3.rb,
lib/mp4/source/url.rb,
lib/mp4/source/base.rb,
lib/mp4/source/local.rb

Defined Under Namespace

Modules: Base Classes: Local, S3, Url

Constant Summary collapse

SCHEMES =
{
  'local' => 'MP4::Source::Local',
  'http'  => 'MP4::Source::Url',
  'https' => 'MP4::Source::Url',
  's3'    => 'MP4::Source::S3',
}.freeze

Class Method Summary collapse

Class Method Details

.build(uri, base_dir: nil) ⇒ Object

Raises:

  • (ArgumentError)


9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/mp4/source.rb', line 9

def self.build(uri, base_dir: nil)
  raise ArgumentError, 'uri must be a String' unless uri.is_a?(String)

  scheme = uri.split(':', 2).first
  klass_name = SCHEMES[scheme]
  raise ArgumentError, "unknown source scheme: #{scheme.inspect}" unless klass_name

  klass = Object.const_get(klass_name)
  if scheme == 'local'
    klass.from_uri(uri, base_dir: base_dir)
  else
    klass.from_uri(uri)
  end
end