# frozen_string_literal: true module Uricp::CurlPrimitives ORBIT_HOSTS = %w[orbit.brightbox.com orbit.gb1s.brightbox.com] attr_reader :options def from options['from_uri'] end def from=(target) options['from_uri'] = target end def to options['to_uri'] end def to=(target) options['to_uri'] = target end def curl_command 'curl --fail --silent --location ' end def authentication "-H 'X-Auth-Token:#{options['authenticator'].call}'" if http_authentication? end def http_authentication? options['authenticator'] end def orbit?(source) return unless source.respond_to?(:host) ORBIT_HOSTS.include?(source.host) end def temp_url? from && from.query.to_s.include?('temp_url') end def curl_upload_from(source, destination = to) "#{curl_command} #{authentication} -H 'Content-Type: application/octet-stream' -T '#{source}' '#{destination}';" end def curl_download_to_pipe "#{curl_command} #{authentication if orbit?(from) && !temp_url?} '#{from}' |" end def curl_manifest(object_manifest, destination = to) "#{curl_command} #{authentication} -X PUT -H 'Content-Type: application/octet-stream' -H 'X-Object-Manifest: #{object_manifest}' '#{destination}' --data-binary ''" end end