- iOS 9.0+ / Mac OS X 10.11+
- Xcode 10.2+
- Swift 5.0+
EasyPostApi is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'EasyPostApi', '~> 1.2'
This library uses the EasyPost JSON api. Details about interacting with the EasyPost api can be found at http://www.easypost.com/docs
Call the set credentials method on a shared instance of the API manager before any susequent calls. You only need to call this method once a shared instance as it maintains the credentials across calls.
let apiToken = "YOUR-TOKEN"
EasyPostApi.sharedInstance.setCredentials(apiToken, baseUrl: "https://api.easypost.com/v2/")
Save an address record and get back an id
let address = EasyPostAddress()
address.name = "Johnny Appleseed"
address.company = "Apple"
address.street1 = "1 Infinite Loop"
address.street2 = "Suite 1"
address.city = "Cupertino"
address.state = "CA"
EasyPostApi.sharedInstance.postAddress(address) { (result) -> () in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
switch(result) {
case .Success(let value):
print("Successfully posted address.")
case .Failure(let error):
print("Error posting address: \((error as NSError).localizedDescription)")
}
})
}
After posting an address to the API, use the verify call to verify the address with the address id that has been passed back from the API.
let addressId = "address-id-from-posting-address"
EasyPostApi.sharedInstance.verifyAddress(addressId, completion: { (verifyResult) -> () in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
switch(verifyResult) {
case .Success(let easyPostAddress):
print("Successfully verified address.")
case .Failure(let error):
print("Error verifying address: \((error as NSError).localizedDescription)")
}
})
})
Save a shipment record with a to address, from address, and parcel
let toAddress = EasyPostAddress()
toAddress.name = "Johnny Appleseed"
toAddress.company = "Apple"
toAddress.street1 = "1 Infinite Loop"
toAddress.street2 = "Suite 1"
toAddress.city = "Cupertino"
toAddress.state = "CA"
let fromAddress = EasyPostAddress()
fromAddress.name = "Johnny Appleseed"
fromAddress.company = "Apple"
fromAddress.street1 = "1 Infinite Loop"
fromAddress.street2 = "Suite 1"
fromAddress.city = "Cupertino"
fromAddress.state = "CA"
let parcel = EasyPostParcel()
parcel.length = NSNumber(value:10.0) //inches
parcel.width = NSNumber(value:10.0) //inches
parcel.height = NSNumber(value:10.0) //inches
parcel.weight = NSNumber(value:10.0) //ounces
EasyPostApi.sharedInstance.postShipment(toAddress, fromAddress: fromAddress, parcel: parcel) { (result) -> () in
DispatchQueue.main.async {
switch(result) {
case .success(let shipment):
print("Successfully posted shipment.")
if let id = shipment.id {
print("Shipment id: \(id)")
}
case .failure(let error):
print("Error posting shipment: \((error as NSError).localizedDescription)")
}
}
}
Once you've created a shipment record, the rates records are returned inside the shipment object. You can buy the shipping and get a url to a label with a call to buy the shipment.
EasyPostApi.sharedInstance.buyShipment("shipment-id", rateId: "rate-id", completion: { (result) -> () in
//Handle results
DispatchQueue.main.async {
if(result.isSuccess) {
print("Successfully bought shipment.")
if let buyResponse = result.value {
if let postageLabel = buyResponse.postageLabel {
if let labelUrl = postageLabel.labelUrl {
print("Label url: \(labelUrl)")
}
}
}
} else {
print("Error buying shipment: \((result.error! as NSError).localizedDescription)")
}
}
})
EasyPostApi is available under the MIT license. See the LICENSE file for more info.
This repository contains the public CocoaPods specifications.