class ActiveShipping::AustraliaPost

Constants

HOST
PARCEL_ENDPOINTS

Public Instance Methods

calculate_rates(origin, destination, packages, service_code, options = {}) click to toggle source
# File lib/active_shipping/carriers/australia_post.rb, line 38
def calculate_rates(origin, destination, packages, service_code, options = {})
  packages = Array(packages)

  calculate_requests = packages.map do |package|
    calculate_request = CalculateRequest.new(origin, destination, package, service_code, options)

    calculate_request.parse(commit(calculate_request.url))
    calculate_request
  end

  combined_response = CombinedResponse.new(origin, destination, packages, calculate_requests)

  RateResponse.new(true, 'success', combined_response.params, combined_response.options)
end
find_rates(origin, destination, packages, options = {}) click to toggle source
# File lib/active_shipping/carriers/australia_post.rb, line 23
def find_rates(origin, destination, packages, options = {})
  packages = Array(packages)

  service_requests = packages.map do |package|
    service_request = ServiceRequest.new(origin, destination, package, options)

    service_request.parse(commit(service_request.url))
    service_request
  end

  combined_response = CombinedResponse.new(origin, destination, packages, service_requests)

  RateResponse.new(true, 'success', combined_response.params, combined_response.options)
end
requirements() click to toggle source
# File lib/active_shipping/carriers/australia_post.rb, line 19
def requirements
  [:api_key]
end

Private Instance Methods

commit(request_url) click to toggle source
# File lib/active_shipping/carriers/australia_post.rb, line 55
def commit(request_url)
  ssl_get(request_url, headers)

rescue ActiveUtils::ResponseError, ActiveShipping::ResponseError => e
  data          = JSON.parse(e.response.body)
  error_message = data['error'] && data['error']['errorMessage'] ? data['error']['errorMessage'] : 'unknown'

  RateResponse.new(false, error_message, data)
end
headers() click to toggle source
# File lib/active_shipping/carriers/australia_post.rb, line 65
def headers
  {
    'Content-type' => 'application/json',
    'auth-key'     => @options[:api_key]
  }
end