diff --git a/example.py b/example.py index 7bd1c20..1adf22c 100644 --- a/example.py +++ b/example.py @@ -1,78 +1,78 @@ -from infusionsoft.library import Infusionsoft - -infusionsoft = Infusionsoft('Infusionsoft Account Name', 'API Key Goes Here') - -# Example 1: Add Contact -#---------------------------------------------------------------------------------------- -contact = {'FirstName' : 'John', 'LastName' : 'Doe', 'Email' : 'johndoe@email.com'} -print infusionsoft.ContactService('add', contact) - -# Example 2: Merge two duplicate contacts -#---------------------------------------------------------------------------------------- -contactId = 56 -duplicateContactId = 57 -print infusionsoft.ContactService('merge', contactId, duplicateContactId) - -# Example 3: Query a contact using data service -#---------------------------------------------------------------------------------------- -table = 'Contact' -returnFields = ['Id', 'FirstName'] -query = {'FirstName' : 'John'} -limit = 10 -page = 0 -print infusionsoft.DataService('query', table, limit, page, query, returnFields) - -# Example 4: Return a products inventory using product service -#---------------------------------------------------------------------------------------- -productId = 1 -print infusionsoft.ProductService('getInventory', productId) - -# Example 5: Charge an invoice using the invoice service -#---------------------------------------------------------------------------------------- -invoiceId = 16 -notes = 'API Upsell Payment' -creditCardId = 2 -merchantAccountId = 1 -bypassCommissions = False -print infusionsoft.InvoiceService('chargeInvoice', invoiceId, notes, creditCardId, merchantAccountId, bypassCommissions) - -# Example 6: Send an email using the email service -#---------------------------------------------------------------------------------------- -contactList = [123, 456, 789] -fromAddress = 'john@test.com' -toAddress = '~Contact.Email~' -ccAddress = '' -bccAddress = '' -contentType = 'Text' -subject = 'This is just a test email, relax!' -htmlBody = '' -textBody = 'This is the contant for the email' -print infusionsoft.APIEmailService('sendEmail', contactList, fromAddress, toAddress, ccAddress, bccAddress, contentType, subject, htmlBody, textBody) - -# Example 7: Get all report columns using the search service -#---------------------------------------------------------------------------------------- -savedSearchId = 3 -userId = 1 -print infusionsoft.SearchService('getAllReportColumns', savedSearchId, userId) - -# Example 8: Get all shipping options with the shipping service -#---------------------------------------------------------------------------------------- -print infusionsoft.ShippingService('getAllShippingOptions') - -# Example 9: Get affiliate payouts info using filter with the affiliate service -#---------------------------------------------------------------------------------------- -from datetime import datetime -affiliateId = 2 -filterStartDate = datetime(2012, 10, 18) -filterEndDate = datetime(2012, 10, 23) -print infusionsoft.APIAffiliateService('affPayouts', affiliateId, filterStartDate, filterEndDate) - -# Example 10: Get the download URL of a particular file -#---------------------------------------------------------------------------------------- -fileId = 23 -print infusionsoft.FileService('getDownloadUrl', fileId) - -# Example 11: Using the library server method to access the API : Create a contact -#---------------------------------------------------------------------------------------- -contact = {'FirstName' : 'John', 'LastName' : 'Doe', 'Email' : 'johndoe@email.com'} -print infusionsoft.server().ContactService.add(infusionsoft.key, contact) +from infusionsoft.library import Infusionsoft + +infusionsoft = Infusionsoft('Infusionsoft Account Name', 'API Key Goes Here') + +# Example 1: Add Contact +#---------------------------------------------------------------------------------------- +contact = {'FirstName' : 'John', 'LastName' : 'Doe', 'Email' : 'johndoe@email.com'} +print(infusionsoft.ContactService('add', contact)) + +# Example 2: Merge two duplicate contacts +#---------------------------------------------------------------------------------------- +contactId = 56 +duplicateContactId = 57 +print(infusionsoft.ContactService('merge', contactId, duplicateContactId)) + +# Example 3: Query a contact using data service +#---------------------------------------------------------------------------------------- +table = 'Contact' +returnFields = ['Id', 'FirstName'] +query = {'FirstName' : 'John'} +limit = 10 +page = 0 +print(infusionsoft.DataService('query', table, limit, page, query, returnFields)) + +# Example 4: Return a products inventory using product service +#---------------------------------------------------------------------------------------- +productId = 1 +print(infusionsoft.ProductService('getInventory', productId)) + +# Example 5: Charge an invoice using the invoice service +#---------------------------------------------------------------------------------------- +invoiceId = 16 +notes = 'API Upsell Payment' +creditCardId = 2 +merchantAccountId = 1 +bypassCommissions = False +print(infusionsoft.InvoiceService('chargeInvoice', invoiceId, notes, creditCardId, merchantAccountId, bypassCommissions)) + +# Example 6: Send an email using the email service +#---------------------------------------------------------------------------------------- +contactList = [123, 456, 789] +fromAddress = 'john@test.com' +toAddress = '~Contact.Email~' +ccAddress = '' +bccAddress = '' +contentType = 'Text' +subject = 'This is just a test email, relax!' +htmlBody = '' +textBody = 'This is the contant for the email' +print(infusionsoft.APIEmailService('sendEmail', contactList, fromAddress, toAddress, ccAddress, bccAddress, contentType, subject, htmlBody, textBody)) + +# Example 7: Get all report columns using the search service +#---------------------------------------------------------------------------------------- +savedSearchId = 3 +userId = 1 +print(infusionsoft.SearchService('getAllReportColumns', savedSearchId, userId)) + +# Example 8: Get all shipping options with the shipping service +#---------------------------------------------------------------------------------------- +print(infusionsoft.ShippingService('getAllShippingOptions')) + +# Example 9: Get affiliate payouts info using filter with the affiliate service +#---------------------------------------------------------------------------------------- +from datetime import datetime +affiliateId = 2 +filterStartDate = datetime(2012, 10, 18) +filterEndDate = datetime(2012, 10, 23) +print(infusionsoft.APIAffiliateService('affPayouts', affiliateId, filterStartDate, filterEndDate)) + +# Example 10: Get the download URL of a particular file +#---------------------------------------------------------------------------------------- +fileId = 23 +print(infusionsoft.FileService('getDownloadUrl', fileId)) + +# Example 11: Using the library server method to access the API : Create a contact +#---------------------------------------------------------------------------------------- +contact = {'FirstName' : 'John', 'LastName' : 'Doe', 'Email' : 'johndoe@email.com'} +print(infusionsoft.server().ContactService.add(infusionsoft.key, contact)) diff --git a/infusionsoft/library.py b/infusionsoft/library.py index 9dfb5ee..da9f99d 100644 --- a/infusionsoft/library.py +++ b/infusionsoft/library.py @@ -1,27 +1,35 @@ -from xmlrpclib import ServerProxy, Error - -class Infusionsoft: - - def __init__(self, name, api_key): - self.client = ServerProxy("https://" + name + ".infusionsoft.com/api/xmlrpc") - self.client.error = Error - self.key = api_key - - def __getattr__(self, service): - def function(method, *args): - call = getattr(self.client, service + '.' + method) - try: - return call(self.key, *args) - except self.client.error, v: - return "ERROR", v - return function - - def server(self): - return self.client - -class InfusionsoftOAuth(Infusionsoft): - - def __init__(self, access_token): - self.client = ServerProxy("https://api.infusionsoft.com/crm/xmlrpc/v1?access_token=%s" % access_token) - self.client.error = Error - self.key = access_token \ No newline at end of file +import sys + +if sys.version_info[0] == 3: + from xmlrpc.client import ServerProxy, Error +elif sys.version_info[0] == 2: + from xmlrpclib import ServerProxy, Error +else: + print('Unrecognised python environment. Not python 2.x or 3.x') + + +class Infusionsoft: + + def __init__(self, name, api_key): + self.client = ServerProxy("https://" + name + ".infusionsoft.com/api/xmlrpc") + self.client.error = Error + self.key = api_key + + def __getattr__(self, service): + def function(method, *args): + call = getattr(self.client, service + '.' + method) + try: + return call(self.key, *args) + except self.client.error as v: + return "ERROR", v + return function + + def server(self): + return self.client + +class InfusionsoftOAuth(Infusionsoft): + + def __init__(self, access_token): + self.client = ServerProxy("https://api.infusionsoft.com/crm/xmlrpc/v1?access_token=%s" % access_token) + self.client.error = Error + self.key = access_token