Module: Quickmail

Defined in:
lib/quickmail.rb,
lib/quickmail/order.rb,
lib/quickmail/version.rb,
lib/quickmail/tracking.rb,
lib/quickmail/inventory.rb,
lib/quickmail/authentication.rb

Defined Under Namespace

Classes: ApiRequestError, Authentication, AuthenticationError, ConfigurationError, Inventory, Order, QuickmailError, Tracking

Constant Summary collapse

VERSION =
"0.15.0"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.access_tokenObject



33
34
35
36
37
# File 'lib/quickmail.rb', line 33

def access_token
  defined? @access_token and @access_token or raise(
    ConfigurationError, "Quickmail access token not configured"
  )
end

.api_baseObject



49
50
51
# File 'lib/quickmail.rb', line 49

def api_base
  Quickmail.test_mode ? "https://quickmailonline.com.au/api/test/" : "https://quickmailonline.com.au/api/"
end

.api_versionObject



39
40
41
42
43
# File 'lib/quickmail.rb', line 39

def api_version
  defined? @api_version and @api_version or raise(
    ConfigurationError, "Quickmail api version not configured"
  )
end

.test_modeObject



45
46
47
# File 'lib/quickmail.rb', line 45

def test_mode
  @test_mode.nil? ? false : @test_mode
end

Class Method Details

.datetime_format(datetime) ⇒ Object



88
89
90
# File 'lib/quickmail.rb', line 88

def datetime_format(datetime)
  datetime.strftime("%Y-%m-%d %T")
end

.request(method, resource, params = {}, access_token = nil) ⇒ Object



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
78
79
80
81
82
83
84
85
86
# File 'lib/quickmail.rb', line 53

def request(method, resource, params = {}, access_token=nil)
  ss_access_token = access_token || Quickmail.access_token
  ss_api_version = Quickmail.api_version

  defined? method or raise(
    ArgumentError, "Request method has not been specified"
  )
  defined? resource or raise(
    ArgumentError, "Request resource has not been specified"
  )
  if method == :get
    headers = {accept: :json, content_type: :json, Authorization: "Bearer #{ss_access_token}"}.merge({params: params})
    payload = nil
  else
    headers = {accept: :json, content_type: :json, Authorization: "Bearer #{ss_access_token}"}
    payload = params
  end
  RestClient::Request.new({
                            method: method,
                            url: Quickmail.api_base + ss_api_version + '/' + resource,
                            payload: payload.to_json,
                            headers: headers
                          }).execute do |response, request, result|
    if response.code != 201 || response.code != 200
      raise ApiRequestError.new(
        response_code: response.code,
        response_headers: response.headers,
        response_body: response.to_str
      )
    end
    str_response = response.to_str
    str_response.blank? ? '' : JSON.parse(str_response)
  end
end