Sha256: 7ada2ffb8f3464af84c435a4cd2fcab27de9e2d247c9d262e56a75063388fec4
Contents?: true
Size: 1.74 KB
Versions: 3
Compression:
Stored size: 1.74 KB
Contents
module ParcelApi # This module provides API requests to label parcels, get existing label details # and download labels. class Label LABEL_URL = '/ParcelLabel/2.0/labels' # Creates a new ParcelApi::Label instance. def initialize(connection=nil) @connection ||= connection || ParcelApi::Client.connection end # Create a label with the specified options # @param label_options [Hash] # @return Single or array of label objects def create(label_options) domestic_url = File.join(LABEL_URL, 'domestic') response = @connection.post domestic_url, label_options labels = response.body['labels'].map {|label| OpenStruct.new(label)} labels.first if labels.count == 1 end # Create an international label with the specified options # @param label_options [Hash] # @return Single or array of label objects def international_create(label_options) international_url = File.join(LABEL_URL, 'international') response = @connection.post international_url, label_options labels = response.body['labels'].map {|label| OpenStruct.new(label)} labels.first if labels.count == 1 end # Get label details # @param label_id [String] # @return Object of label details def details(label_id) details_url = File.join(LABEL_URL, "#{label_id}.json") response = @connection.get details_url details = response.body.tap {|d| d.delete('success')} OpenStruct.new(details) end # Download label # @param label_id [String] # @return Object of label def download(label_id) download_url = File.join(LABEL_URL, "#{label_id}.pdf") response = @connection.get download_url StringIO.new(response.body) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
parcel_api-0.4.1 | lib/parcel_api/label.rb |
parcel_api-0.3.0 | lib/parcel_api/label.rb |
parcel_api-0.2.0 | lib/parcel_api/label.rb |