Sha256: 74cfdf815e490e3b82e4417572917ec38a9f4de27aef4ffc588c6dd86396d4f2

Contents?: true

Size: 1.51 KB

Versions: 1

Compression:

Stored size: 1.51 KB

Contents

module VoiceBase
  module V3
    module Client
      include VoiceBase::V2::Client

      def self.extended(client, args = {})
        client.api_host     = client.args[:host] || ENV.fetch('VOICEBASE_V3_API_HOST', 'https://apis.voicebase.com')
        client.api_endpoint = client.args[:api_endpoint] || ENV.fetch('VOICEBASE_V3_API_ENDPOINT', '/v3')
      end

      def upload_media(args = {}, headers = {})
        require_media_file_or_url!(args)
        r = ::VoiceBase::Request::MultipartBuilder.new(headers: default_headers(headers))

        if args[:config]
          r.add(VoiceBase::Request::HashPart.new(name: "configuration", hash: args[:config]))
        end

        if args[:media_url]
          r.add(VoiceBase::Request::TextPart.new(name: "mediaUrl", body: args[:media_url]))
        end

        if args[:media_file]
          r.add(VoiceBase::Request::FilePart.new(name: "media", file: args[:media_file]))
        end

        #TODO: make metadata an object
        if args[:metadata]
          r.add(VoiceBase::Request::HashPart.new(name: "metadata", hash: args[:metadata]))
        end

        response = self.class.post(
            uri + '/media',
            headers: r.headers,
            body: r.body
        )
        VoiceBase::Response.new(response, api_version)
      end

      private

      def require_media_file_or_url!(args = {})
        if args[:media_url].nil? && args[:media_file].nil?
          raise ArgumentError, "Missing argument :media_url or :media_file"
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
voicebase-client-ruby-1.3.0 lib/voicebase/v3/client.rb