Source code for royal_mail_rest_api.tracking

import requests
from royal_mail_rest_api.api import RoyalMailBaseClass


[docs]class TrackingApi(RoyalMailBaseClass): """ Start class for royal mail shipping api """ summary_url = 'mailPieces/{}/summary' pod_url = 'mailPieces/{}/proofOfDelivery' history_url = 'mailPieces/{}/history' def __init__(self, client_id, client_secret): """ Instantiate, store client_id and secret, build headers :param client_id: :param client_secret: """ self.client_id = client_id self.client_secret = client_secret self._create_headers() def _create_headers(self): """ Create the required headers for interacting with the tracking api :return: Nothing """ self.header = {'X-IBM-Client-Id': self.client_id, 'X-IBM-Client-Secret': self.client_secret, 'accept': 'application/json'}
[docs] def summary(self, tracking_number): """ takes 13 digit tracking number and requests summary data :param tracking_number: :return: tracking_summary """ summary_url = self.summary_url.format(tracking_number) result = requests.get('{}/{}'.format(self.url, summary_url), headers=self.header) result.raise_for_status() return result.json()
[docs] def proof_of_delivery(self, tracking_number): """ recover proof of delivery :param tracking_number: :return: """ pod_url = self.summary_url.format(tracking_number) result = requests.get('{}/{}'.format(self.url, pod_url), headers=self.header) result.raise_for_status() return result.json()
[docs] def history(self, tracking_number): """ Return history for a tracked item :param tracking_number: :return: """ history_url = self.history_url.format(tracking_number) result = requests.get('{}/{}'.format(self.url, history_url), headers=self.header) result.raise_for_status() return result.json()