diff --git a/examples/letter.py b/examples/letter.py new file mode 100644 index 0000000..6395330 --- /dev/null +++ b/examples/letter.py @@ -0,0 +1,46 @@ +import lob +lob.api_key = "test_0dc8d51e0acffcb1880e0f19c79b2f5b0cc" # Replace this API key with your own. + +# Creating an Address Object + +example_address = lob.Address.create( + name = 'Julia Sanchez', + address_line1 = '104 Printing Boulevard', + address_city = 'Boston', + address_state = 'MA', + address_country = 'US', + address_zip = '12345' +) +print "\n" +print "Address Response" +print "\n" +print "=======================================================" +print "\n" +print example_address +print "\n" +print "=======================================================" +print "\n" + +# Creating a Letter + +example_letter = lob.Letter.create( + name = 'Test Letter', + to_address = { + 'name': 'Antoinette Reynolds', + 'address_line1': '1859 Kinney St', + 'address_city': 'Agawam', + 'address_zip': '01001', + 'address_state': 'MA' + }, + from_address = example_address, + file = '
Hello Julia
' +) + +print "Letter Response" +print "\n" +print "=======================================================" +print "\n" +print example_letter +print "\n" +print "=======================================================" +print "\n" diff --git a/lob/__init__.py b/lob/__init__.py index 30afe66..651ef2b 100644 --- a/lob/__init__.py +++ b/lob/__init__.py @@ -3,6 +3,7 @@ #Resources from lob.resource import (Address, Area, BankAccount, Check, Country, Job, - Object, Packaging, Postcard, Route, Service, Setting, State, Verification) + Letter, Object, Packaging, Postcard, Route, Service, Setting, State, + Verification) from lob.version import VERSION diff --git a/lob/resource.py b/lob/resource.py index 00d8497..9309fb1 100644 --- a/lob/resource.py +++ b/lob/resource.py @@ -10,6 +10,7 @@ def lob_format(resp): 'check': Check, 'country': Country, 'job': Job, + 'letter' : Letter, 'object': Object, 'postcard': Postcard, 'state': State @@ -170,6 +171,19 @@ def create(cls, **params): params.pop('objects', None) return super(Job, cls).create(**params) +class Letter(ListableAPIResource, CreateableAPIResource): + endpoint = '/letters' + @classmethod + def create(cls, **params): + if isinstance(params, dict): + if 'from_address' in params: + params['from'] = params['from_address'] + params.pop('from_address') + if 'to_address' in params: + params['to'] = params['to_address'] + params.pop('to_address') + return super(Letter, cls).create(**params) + class Object(ListableAPIResource, DeleteableAPIResource, CreateableAPIResource): endpoint = '/objects' diff --git a/tests/test_letter.py b/tests/test_letter.py new file mode 100644 index 0000000..60f78a9 --- /dev/null +++ b/tests/test_letter.py @@ -0,0 +1,34 @@ +import unittest +import lob +# Setting the API key +lob.api_key = 'test_0dc8d51e0acffcb1880e0f19c79b2f5b0cc' + +class LetterFunctions(unittest.TestCase): + def setUp(self): + lob.api_key = 'test_0dc8d51e0acffcb1880e0f19c79b2f5b0cc' + self.addr = lob.Address.list(count=1).data[0] + + def test_list_letters(self): + letters = lob.Letter.list() + self.assertTrue(isinstance(letters.data[0], lob.Letter)) + self.assertEqual(letters.object, 'list') + + def test_retrieve_letter(self): + letter = lob.Letter.retrieve(id=lob.Letter.list().data[0].id) + self.assertTrue(isinstance(letter, lob.Letter)) + + def test_create_letter(self): + letter = lob.Letter.create( + from_address = { + 'name': 'Antoinette Reynolds', + 'address_line1': '1859 Kinney St', + 'address_city': 'Agawam', + 'address_zip': '01001', + 'address_state': 'MA' + }, + to_address = self.addr.id, + file = 'https://lob.com/goblue.pdf' + ) + self.assertEqual(letter.to_address.id, self.addr.id) + self.assertTrue(isinstance(letter, lob.Letter)) +