Class: Rubytus::API

Inherits:
Goliath::API
  • Object
show all
Includes:
Goliath::Constants, Constants, Helpers
Defined in:
lib/rubytus/api.rb

Direct Known Subclasses

Command

Constant Summary

Constants included from Constants

Constants::BASE_PATH_REGEX, Constants::COMMON_HEADERS, Constants::DEFAULT_BASE_PATH, Constants::DEFAULT_DATA_DIR, Constants::DEFAULT_MAX_SIZE, Constants::DEFAULT_STORAGE, Constants::ENV_BASE_PATH, Constants::ENV_DATA_DIR, Constants::ENV_MAX_SIZE, Constants::ENV_STORAGE, Constants::RESOURCE_UID_REGEX, Constants::RESUMABLE_CONTENT_TYPE, Constants::STATUS_BAD_REQUEST, Constants::STATUS_CREATED, Constants::STATUS_FORBIDDEN, Constants::STATUS_INTERNAL_ERROR, Constants::STATUS_NOT_ALLOWED, Constants::STATUS_NOT_FOUND, Constants::STATUS_OK

Instance Method Summary collapse

Methods included from Helpers

#prepare_headers, #validates_base_path, #validates_length, #validates_max_size, #validates_offset

Methods included from Common

#error!, #generate_uid

Instance Method Details

#default_optionsObject



43
44
45
46
47
48
# File 'lib/rubytus/api.rb', line 43

def default_options
  {
    :base_path => ENV[ENV_BASE_PATH] || DEFAULT_BASE_PATH,
    :max_size  => ENV[ENV_MAX_SIZE]  || DEFAULT_MAX_SIZE
  }
end

#default_parser(opts, options) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/rubytus/api.rb', line 50

def default_parser(opts, options)
  opts.separator ""
  opts.separator "TUSD options:"

  args = [
    {
      :name  => :base_path,
      :short => '-b',
      :long  => '--base-path BASE_PATH',
      :desc  => "Url path used for handling uploads (default: #{options[:base_path]})"
    },
    {
      :name  => :max_size,
      :short => '-m',
      :long  => '--max-size MAX_SIZE',
      :desc  => "Maximum bytes may be stored inside storage (default: #{options[:max_size]})"
    }
  ]

  args.each do |arg|
    opts.on(arg[:short], arg[:long], arg[:desc]) do |value|
      options[arg[:name]] = value
    end
  end

  # save into global options
  @options = options
end

#default_setupObject



38
39
40
41
# File 'lib/rubytus/api.rb', line 38

def default_setup
  @options[:max_size]  = validates_max_size(@options[:max_size])
  @options[:base_path] = validates_base_path(@options[:base_path])
end

#on_body(env, data) ⇒ Object



21
22
23
24
25
26
27
28
# File 'lib/rubytus/api.rb', line 21

def on_body(env, data)
  if env['api.action'] == :patch
    env['api.buffers'] << data
  else
    body = StringIO.new(data)
    env[RACK_INPUT] = body
  end
end

#on_headers(env, headers) ⇒ Object



15
16
17
18
19
# File 'lib/rubytus/api.rb', line 15

def on_headers(env, headers)
  env['api.options'] = @options
  env['api.headers'] = COMMON_HEADERS.merge({ 'Date' => Time.now.httpdate })
  prepare_headers(env, headers)
end

#response(env) ⇒ Object



30
31
32
33
34
35
36
# File 'lib/rubytus/api.rb', line 30

def response(env)
  status  = STATUS_OK
  headers = env['api.headers']
  body    = []

  [status, headers, body]
end