Skip to content

Commit

Permalink
desk: add support for companies endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
davidgit committed Feb 6, 2015
1 parent 83053ac commit 6540aba
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 1 deletion.
52 changes: 52 additions & 0 deletions libsaas/services/desk/companies.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
from libsaas import http, parsers
from libsaas.services import base

from . import resource, cases, customers


class CompaniesBase(resource.DeskResource):

path = 'companies'

def delete(self, *args, **kwargs):
raise base.MethodNotSupported()


class Companies(CompaniesBase):

def update(self, *args, **kwargs):
raise base.MethodNotSupported()

@base.apimethod
def get(self, embed=None, fields=None, per_page=None, page=None):
"""
Retrieve a paginated list of all companies
Upstream documentation: http://dev.desk.com/API/companies/#list
"""
params = base.get_params(None, locals())

return http.Request('GET', self.get_url(), params), parsers.parse_json

@base.apimethod
def search(self, q, per_page=None, page=None,
sort_field=None, sort_direction=None):
"""
Search companies based on a search parameter with pagination.
Upstream documentation: http://dev.desk.com/API/companies/#search
"""
params = base.get_params(None, locals())
url = '{0}/{1}'.format(self.get_url(), 'search')
return http.Request('GET', url, params), parsers.parse_json


class Company(CompaniesBase):

@base.resource(cases.Cases)
def cases(self):
return cases.Cases(self)

@base.resource(customers.Customers)
def customers(self):
return customers.Customers(self)
16 changes: 15 additions & 1 deletion libsaas/services/desk/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from libsaas.services import base
from libsaas.filters import auth

from . import cases, customers, users, contents, macros, insights
from . import cases, customers, companies, users, contents, macros, insights


class Desk(base.Resource):
Expand Down Expand Up @@ -85,6 +85,20 @@ def cases(self):
"""
return cases.Cases(self)

@base.resource(companies.Company)
def company(self, company_id):
"""
Return the resource corresponding to a single company.
"""
return companies.Company(self, company_id)

@base.resource(companies.Companies)
def companies(self):
"""
Return the resource corresponding to all companies.
"""
return companies.Companies(self)

@base.resource(customers.Customer)
def customer(self, customer_id=None):
"""
Expand Down
22 changes: 22 additions & 0 deletions test/test_desk.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,28 @@ def test_cases(self):
self.service.cases().delete()
self.service.case(10).delete()

def test_companies(self):
obj = {'name': 'test'}
paging = {'page': 1, 'per_page': 5}

self.service.companies().get(per_page=5, page=1)
self.expect('GET', '/companies', paging)

self.service.company(4).get()
self.expect('GET', '/companies/4')

self.service.company(4).update(obj)
self.expect('PATCH', '/companies/4', obj)

self.service.companies().create(obj)
self.expect('POST', '/companies', obj)

self.service.companies().search('foo')
self.expect('GET', '/companies/search', {'q': 'foo'})

self.assertRaises(base.MethodNotSupported,
self.service.customer(4).delete)

def test_customers(self):
obj = {'email': 'test@test.com'}
paging = {'page': 1, 'per_page': 5}
Expand Down

0 comments on commit 6540aba

Please sign in to comment.