11""" Python wrapper for the PostNL API """
22
33import logging
4- from datetime import datetime
4+ from datetime import datetime , timedelta
55import requests
66
77BASE_URL = 'https://jouw.postnl.nl'
@@ -47,7 +47,8 @@ def __init__(self, user, password):
4747
4848 self ._access_token = data ['access_token' ]
4949 self ._refresh_token = data ['refresh_token' ]
50- self ._token_expires_in = data ['expires_in' ] # TODO Add logic to refresh on invalidate
50+ self ._token_expires_in = data ['expires_in' ]
51+ self ._token_expires_at = datetime .now () + timedelta (0 , data ['expires_in' ])
5152
5253 def refresh_token (self ):
5354 """ Refresh access_token """
@@ -69,13 +70,11 @@ def get_shipments(self):
6970 """ Retrieve shipments """
7071
7172 headers = {
72- 'api-version' : '4.7' ,
73- 'user-agent' : 'PostNL/1 CFNetwork/889.3 Darwin/17.2.0' ,
7473 'authorization' : 'Bearer ' + self ._access_token
7574 }
7675
7776 response = requests .request (
78- 'GET' , SHIPMENTS_URL , headers = headers )
77+ 'GET' , SHIPMENTS_URL , headers = { ** headers , ** DEFAULT_HEADER } )
7978
8079 if response .status_code == 401 :
8180 self .refresh_token ()
@@ -172,11 +171,13 @@ def get_letter(self, letter_id):
172171 response = requests .request (
173172 'GET' , LETTERS_URL + '/' + letter_id , headers = {** headers , ** DEFAULT_HEADER })
174173
175- if response .status_code == 401 :
174+ if response .status_code == 200 :
175+ letter = response .json ()
176+ elif response .status_code == 401 :
176177 self .refresh_token ()
177178 letter = self .get_letter (letter_id )
178- else :
179- letter = response . json ( )
179+ else :
180+ raise Exception ( 'Unknown Error' )
180181
181182 return letter
182183
0 commit comments