class Attache::Tus
Constants
- LENGTH_KEYS
- METADATA_KEYS
- OFFSET_KEYS
Attributes
config[RW]
env[RW]
Public Class Methods
new(env, config)
click to toggle source
# File lib/attache/tus.rb, line 8 def initialize(env, config) @env = env @config = config end
Public Instance Methods
header_value(keys)
click to toggle source
# File lib/attache/tus.rb, line 13 def header_value(keys) value = nil keys.find {|k| value = env["HTTP_#{k.gsub('-', '_').upcase}"]} value end
headers_with_cors(headers = {}, offset: nil)
click to toggle source
# File lib/attache/tus.rb, line 38 def headers_with_cors(headers = {}, offset: nil) tus_headers = { "Access-Control-Allow-Methods" => "PATCH", "Access-Control-Allow-Headers" => "Tus-Resumable, #{LENGTH_KEYS.join(', ')}, #{METADATA_KEYS.join(', ')}, #{OFFSET_KEYS.join(', ')}", "Access-Control-Expose-Headers" => "Location, #{OFFSET_KEYS.join(', ')}", } OFFSET_KEYS.each do |k| tus_headers[k] = offset end if offset # append tus_headers.inject(config.headers_with_cors.merge(headers)) do |sum, (k, v)| sum.merge(k => [*sum[k], v].join(', ')) end end
resumable_version()
click to toggle source
# File lib/attache/tus.rb, line 34 def resumable_version header_value ["Tus-Resumable"] end
upload_length()
click to toggle source
# File lib/attache/tus.rb, line 19 def upload_length header_value LENGTH_KEYS end
upload_metadata()
click to toggle source
# File lib/attache/tus.rb, line 27 def upload_metadata value = header_value METADATA_KEYS Hash[*value.split(/[, ]/)].inject({}) do |h, (k, v)| h.merge(k => Base64.decode64(v)) end end
upload_offset()
click to toggle source
# File lib/attache/tus.rb, line 23 def upload_offset header_value OFFSET_KEYS end