class Squall::Base

All OnApp API classes subclass Base to get access to HTTP methods and other convenience methods.

Attributes

result[R]

Public: Faraday response body

success[R]

Public: Returns true/false for successful/unsuccessful requests

Public Instance Methods

check_config() click to toggle source

Public: Ensures `Squall.config` is set.

Raises Squall::NoConfig if a request is made without first calling Squall.config.

Returns nothing.

# File lib/squall/support/base.rb, line 66
def check_config
  raise NoConfig, "Squall.config must be specified" if Squall.config.empty?
end
default_params(*options) click to toggle source

Public: Sets the default URL params for requests and merges `options`

*options - One or more options

Example

default_params(something: 1)

Returns a Hash.

# File lib/squall/support/base.rb, line 20
def default_params(*options)
  options.empty? ? {} : { query: { key_for_class => options.first } }
end
key_for_class() click to toggle source

Public: Sets the default param container for request. It is derived from the class name. Given the class name `Sandwich` and a param `bread` the resulting params would be `bob=wheat`.

Returns a String

# File lib/squall/support/base.rb, line 75
def key_for_class
  word = self.class.name.split("::").last.to_s.dup
  word.gsub!(/::/, '/')
  word.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
  word.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
  word.tr!("-", "_")
  word.downcase!
  word.to_sym
end
request(request_method, path, options = {}) click to toggle source

Public: Performs an HTTP Request

request_method - The HTTP verb for the request, one of

:get/:post/:delete/:put, etc

path - URL path options - HTTP query params

Example

# GET /something.json
request :get, '/something.json'

# PUT /something.json?something=1
request :put, '/something.json', something: 1

Returns the JSON response.

# File lib/squall/support/base.rb, line 40
def request(request_method, path, options = {})
  check_config

  conn = Faraday.new(url: Squall.config[:base_uri]) do |c|
    c.basic_auth Squall.config[:username], Squall.config[:password]
    c.params = (options[:query] || {})
    c.request :url_encoded
    c.response :json
    c.adapter :net_http
    if Squall.config[:debug]
     c.use Faraday::Response::Logger
    end
  end

  response = conn.send(request_method, path)

  @success = (200..207).include?(response.env[:status])
  @result  = response.body
end