class DDcloud::API::Core

Attributes

client[R]

Public Class Methods

new(client) click to toggle source
# File lib/ddcloud/api/core.rb, line 4
def initialize(client)
  @client = client
end

Public Instance Methods

endpoint(e) click to toggle source

request options

# File lib/ddcloud/api/core.rb, line 22
def endpoint(e)
  @endpoint = e
end
get() click to toggle source

perform request

# File lib/ddcloud/api/core.rb, line 44
def get
  perform :get
end
get_simple() click to toggle source
# File lib/ddcloud/api/core.rb, line 52
def get_simple
    perform :get, true
end
log(*args) click to toggle source

client methods

# File lib/ddcloud/api/core.rb, line 11
def log(*args)
  @client.log(*args)
end
org_endpoint(e) click to toggle source
# File lib/ddcloud/api/core.rb, line 26
def org_endpoint(e)
  endpoint("/#{org_id}" + e)
end
org_id() click to toggle source
# File lib/ddcloud/api/core.rb, line 15
def org_id
  @client.org_id
end
perform(method, simple=false) click to toggle source

do not parse response if simple if simple, post body is also simple…

# File lib/ddcloud/api/core.rb, line 62
def perform(method, simple=false)
  if simple
    request = @client.build_request(method, @endpoint, request_query_string, request_simple_body, false)
  else
    request = @client.build_request(method, @endpoint, request_query_string, request_xml_body)
  end
  response = @client.perform_request(request)

  @client.log_response(request, response)

  # return parsed object if it's good
  if response.success?
    if simple
      result = response.body
    else
      result = @client.parse_response_xml_body(response.body)
      if result['total_count']
        log "#{result['total_count']} total", :yellow, :bold
        result.delete('page_size')
        result.delete('total_count')
        result.delete('page_count')
        result.delete('page_number')
      end
      # unwind some arrays of elements
      result.values.count == 1 ? result.values.first : result
    end
  else
    {}
  end
end
post() click to toggle source
# File lib/ddcloud/api/core.rb, line 48
def post
  perform :post
end
post_simple() click to toggle source
# File lib/ddcloud/api/core.rb, line 56
def post_simple
    perform :post, true
end
query_params(q) click to toggle source
# File lib/ddcloud/api/core.rb, line 30
def query_params(q)
  @query_params = q
end
request_query_string() click to toggle source

build request

# File lib/ddcloud/api/core.rb, line 104
def request_query_string
  fparams = @client.filter_params || {}
  qparams = @query_params || {}
  params = fparams.merge(qparams)
  @client.url_query(params) if params.present?
end
request_simple_body() click to toggle source
# File lib/ddcloud/api/core.rb, line 120
def request_simple_body
  return if @simple_params.blank?
  body = @client.build_request_simple_body(@simple_params)
  log(body, :green)
  body
end
request_xml_body() click to toggle source
# File lib/ddcloud/api/core.rb, line 111
def request_xml_body
  return if @xml_params.blank?
  schema = @xml_params.delete(:schema)
  tag = @xml_params.delete(:tag)

  body = @client.build_request_xml_body(schema, tag, @xml_params)
  log(body, :green)
  body
end
simple_params(x) click to toggle source
# File lib/ddcloud/api/core.rb, line 38
def simple_params(x)
  @simple_params = x
end
single(results) click to toggle source
# File lib/ddcloud/api/core.rb, line 93
def single(results)
  if results.is_a? Array
    results.first
  else
    results
  end
end
xml_params(x) click to toggle source
# File lib/ddcloud/api/core.rb, line 34
def xml_params(x)
  @xml_params = x
end