class Dag::Client::API::RestParameter

Attributes

bucket[R]
cano_resource[R]
content_type[R]
headers[R]
method[R]
parameters[R]
query_params[R]
resource[R]

Public Class Methods

new(method, resource, cano_resource: nil, query_params: {}, parameters: {}, bucket: '', content_type: nil, import: false, raw_data: false, blank_body: false, headers: {}, multipart: false) click to toggle source
# File lib/dag/client/api/rest_parameter.rb, line 5
def initialize(method, resource, cano_resource: nil, query_params: {},
               parameters: {}, bucket: '', content_type: nil, import: false,
               raw_data: false, blank_body: false, headers: {}, multipart: false)

  @method = method
  @resource = resource
  @cano_resource = cano_resource
  @query_params = query_params
  @parameters = parameters
  @bucket = bucket
  @content_type = content_type
  @import = import
  @raw_data = raw_data
  @blank_body = blank_body
  @headers = headers
  @multipart = multipart
end

Public Instance Methods

authentication(apikey, secret, force_path_style) click to toggle source
# File lib/dag/client/api/rest_parameter.rb, line 74
def authentication(apikey, secret, force_path_style)

  "IIJGIO" + " " + apikey + ":" + signature(secret, force_path_style)
end
blank_body?() click to toggle source
# File lib/dag/client/api/rest_parameter.rb, line 131
def blank_body?
  @blank_body
end
calc_date() click to toggle source
# File lib/dag/client/api/rest_parameter.rb, line 112
def calc_date
  return @date if @date
  @date = Time.now.httpdate

  @date
end
canonicalized_resource(force_path_style = false) click to toggle source
# File lib/dag/client/api/rest_parameter.rb, line 94
def canonicalized_resource(force_path_style = false)
  result = ''

  if @bucket.present?
    result = '/'
    result += "#{@bucket}/"
  end

  if @bucket.blank? || @resource != '/'
    result = File.join(result, @resource)
  end

  result += '?' if @cano_resource.present?
  result += @cano_resource if @cano_resource

  result
end
http_verb() click to toggle source
# File lib/dag/client/api/rest_parameter.rb, line 59
def http_verb
  @method.to_s.upcase
end
import?() click to toggle source
# File lib/dag/client/api/rest_parameter.rb, line 119
def import?
  @import
end
multipart?() click to toggle source
# File lib/dag/client/api/rest_parameter.rb, line 123
def multipart?
  @multipart
end
raw_data?() click to toggle source
# File lib/dag/client/api/rest_parameter.rb, line 127
def raw_data?
  @raw_data
end
signature(secret, force_path_style = false) click to toggle source
# File lib/dag/client/api/rest_parameter.rb, line 79
def signature(secret, force_path_style = false)
  http_verb = "#{self.http_verb}\n"
  content_md5 = "\n"
  content_type = signature_content_type
  date = "#{calc_date}\n"

  canonicalized_iijgio_headers = ""

  string_to_sign = http_verb + content_md5 + content_type + date +
      canonicalized_iijgio_headers + canonicalized_resource(force_path_style)

  digest = OpenSSL::HMAC.digest(OpenSSL::Digest.new('sha1'), secret, string_to_sign)
  Base64.encode64(digest).strip
end
signature_content_type() click to toggle source
# File lib/dag/client/api/rest_parameter.rb, line 63
def signature_content_type
  result = ""
  if @content_type.present?
    result << @content_type
  end

  result << "\n"

  result
end
to_s() click to toggle source
# File lib/dag/client/api/rest_parameter.rb, line 135
def to_s
  [
    "method:#{@method}",
    "resource: #{@resource}",
    "cano_resource: #{@cano_resource}",
    "query_params: #{@query_params}",
    "bucket: #{@bucket}",
    "parameters: #{@parameters}",
    "headers: #{@headers}"
  ].join(", ")
end
url(uri, force_path_style = false) click to toggle source
# File lib/dag/client/api/rest_parameter.rb, line 32
def url(uri, force_path_style = false)
  url = uri.host
  url += ":#{uri.port}" unless uri.port == 80 || uri.port == 443

  if @bucket.present?
    if force_path_style
      url += '/' unless url.end_with? "/"
      url += @bucket
    else
      url = [@bucket, url].join('.')
      url += '/' unless url.end_with? "/"
    end
  end

  if @bucket.blank? || @resource != '/'
    url = File.join(url, @resource)
  end

  url += '/' if url.split('/').last == @bucket
  url += '?' if @cano_resource.present? || @query_params.present?
  url += @cano_resource if @cano_resource
  url += '&' if @cano_resource.present? && @query_params.present?
  url += "#{@query_params.to_param}" if @query_params.present?

  uri.scheme + '://' + url
end