|
require 'uri'
module Agents
class AftershipAgent < Agent
API_URL = 'https://api.aftership.com/v4'
HEADERS = {"aftership-api-key"=> "apikey", "Content-Type"=>"application/json"}
description <<-MD
The Aftership agent allows you to track your shipment data from aftership and emit them into events.
To be able to use the Aftership API, you need to generate an `API Key`.
You can generate an api key by visiting `apps > app and click add` on aftership website.
The agent is limited to 600 reqs/min per account. You do need a paying plan to use their tracking feature.
If you are requesting tracking data from aftership. You have to put in a specific url for get_url in default options.
The options are `/trackings/export` to get tracking results for backup purposes, `/trackings/:slug/:tracking_number` to get tracking
for a single tracking number and `trackings` to get all of your trackings.
Required Options:
* `Content-Type` application/json
* `aftership_api_key` - YOUR_API_KEY.
* `a certain request whether it be get or put or post`
MD
event_description <<-MD
Events look like this:
{
"meta": {
"code": 200
},
"data": {
"couriers": [
{ ... },
{ ... },
{ ... }
]
}
}
MD
def default_options
{ 'api_key' => 'YOUR_API_KEY',
'Content_Type' => 'application/json',
'get_url' => '/trackings'
}
end
def uri
#there may be an updated version
uri = URI.parse('https://api.aftership.com/v4')
#uri.query = [uri.query, '/trackings' ].compact.join()
uri.query = [uri.query, interpolated['get_url'] ].compact.join()
uri.to_s.gsub('?','')
end
def working?
!recent_error_logs?
end
def validate_options
#errors.add(:base, "You need to specify a aftership api key") unless options['aftership-api-key'].present?
errors.add(:base, "Content-Type must be set to application/json") unless options['Content_Type'].present? && options['Content_Type'] == 'application/json'
#only one put or request can be requested
end
def request
HTTParty.get(uri, :headers => HEADERS)
end
def check
data = {"body" => request.body, "message" => request.message}
create_event :payload => data
end
end
end
|