Ruby w BC64 rapper for the Postmates API.
gem install 'postmates' or add gem 'postmates' to your Gemfile and bundle.
You'll need an API key and your customer ID. You can sign up to register your app here. Just want to test things out? Postmates has you covered with a test key and customer account.
# Create a new Postmates client
@client = Postmates.new
# Set basic config variables
@client.configure do |config|
config.api_key = 'YOUR_API_KEY'
config.customer_id = 'YOUR_CUSTOMER_ID'
end
# Or do some more advanced stuff
@client.configure do |config|
# Get full Faraday responses instead of Ruby objects representing the body
config.raw_response = true
# Ensure consistent fields & formats by specifying a version in the header
config.headers.merge!('X-Postmates-Version' => 20140825)
# Work with a possible future version of the API
config.api_url = 'https://api.postmates.com/v2/'
end
# And switch back to the defaults easily
@client.resetDescriptions and examples of the supported actions are below. For a more detailed explanation of available endpoints and an exhaustive list of the properties each response returns, check out the official Postmates developer documentation.
Get a delivery quote. Returns a Postmates::Quote object.
from = "20 McAllister St, San Francisco, CA"
to = "101 Market St, San Francisco, CA"
quote = @client.quote(pickup_address: from, dropoff_address: to)
quote.fee # => 1350
quote.currency # => "usd"
format = '%m/%d/%Y %I:%M:%S%p' # all times are returned in UTC
quote.expires_at.strftime(format) # => "01/05/2015 09:35:28PM"
quote.expired? # => falseCreate a delivery. Returns a Postmates::Delivery object.
# all fields required except where noted
package = {
manifest: "a box of kittens",
pickup_name: "The Warehouse",
pickup_address: "20 McAllister St, San Francisco, CA",
pickup_phone_number: "555-555-5555",
pickup_business_name: "Optional Pickup Business Name, Inc.",
pickup_notes: "Optional note that this is Invoice #123",
dropoff_name: "Alice",
dropoff_address: "101 Market St, San Francisco, CA",
dropoff_phone_number: "415-555-1234",
dropoff_business_name: "Optional Dropoff Business Name, Inc.",
dropoff_notes: "Optional note to ring the bell",
quote_id: "dqt_K9LFfpSZCdAJsk" # optional
}
delivery = @client.create(package)
delivery.id # => "del_K9gEsDNuPJ-lLV"
delivery.status # => "pending"
delivery.delivered? # => false
delivery.pickup # a hash representing pickup information
delivery.dropoff # a hash representing dropoff informationFetch a list of all deliveries for a customer. Returns an array of Postmates::Delivery objects.
my_deliveries = @client.list
my_ongoing_deliveries = @client.list(filter: 'pending')
# If the result is too large for one response
# there are a few meta-attributes you can call on the returned array
# Here's a simulated example of a paginated response:
deliveries = @client.list(limit: 2)
deliveries.size # => 2 (number of deliveries in the returned array)
deliveries.total_count # => 6 (number of total deliveries)
deliveries.next_href # a URI object representing the path to the next pageFetch a single delivery by id. Returns a Postmates::Delivery object.
@client.retrieve('del_K9gEsDNuPJ-lLV')Cancel an ongoing delivery prior to pickup. Returns a Postmates::Delivery object.
@client.cancel('del_K9gEsDNuPJ-lLV')Cancel an ongoing delivery that was already picked up and create a delivery that is a reverse of the original. The items will get returned to the original pickup location. Returns a Postmates::Delivery object.
@client.cancel('del_K9gEsDNuPJ-lLV')- Fork it ( https://github.com/[my-github-username]/postmates/fork )
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request