Пример #1
0
    def build(self, response):
        """
        Deserialize the returned objects and return either a single Zenpy object, or a ResultGenerator in
        the case of multiple results.

        :param response: the requests Response object.
        """
        response_json = response.json()

        zenpy_objects = self.deserialize(response_json)

        # Collection of objects (eg, users/tickets)
        plural_object_type = as_plural(self.api.object_type)
        if plural_object_type in zenpy_objects:
            return ZendeskResultGenerator(self, response_json)

        # Here the response matches the API object_type, seems legit.
        if self.api.object_type in zenpy_objects:
            return zenpy_objects[self.api.object_type]

        # Could be anything, if we know of this object then return it.
        for zenpy_object_name in self.api._object_mapping.class_mapping:
            if zenpy_object_name in zenpy_objects:
                return zenpy_objects[zenpy_object_name]

        # Maybe a collection of known objects?
        for zenpy_object_name in self.api._object_mapping.class_mapping:
            plural_zenpy_object_name = as_plural(zenpy_object_name)
            if plural_zenpy_object_name in zenpy_objects:
                return ZendeskResultGenerator(
                    self, response_json, object_type=plural_zenpy_object_name)
        # Bummer, bail out with an informative message.
        raise ZenpyException("Unknown Response: " + str(response_json))
Пример #2
0
    def build(self, response):
        """
        Deserialize the returned objects and return either a single Zenpy object, or a ResultGenerator in
        the case of multiple results.

        :param response: the requests Response object.
        """
        response_json = response.json()

        # Special case for incremental cursor based ticket audits export.
        if get_endpoint_path(self.api,
                             response).startswith('/ticket_audits.json'):
            return TicketCursorGenerator(self,
                                         response_json,
                                         object_type="audit")

        # Special case for incremental cursor based tickets export.
        if get_endpoint_path(
                self.api,
                response).startswith('/incremental/tickets/cursor.json'):
            return TicketCursorGenerator(self,
                                         response_json,
                                         object_type="ticket")

        # Special case for Jira links.
        if get_endpoint_path(self.api,
                             response).startswith('/services/jira/links'):
            return JiraLinkGenerator(self, response_json, response)

        zenpy_objects = self.deserialize(response_json)

        # Collection of objects (eg, users/tickets)
        plural_object_type = as_plural(self.api.object_type)
        if plural_object_type in zenpy_objects:
            return ZendeskResultGenerator(
                self,
                response_json,
                response_objects=zenpy_objects[plural_object_type])

        # Here the response matches the API object_type, seems legit.
        if self.api.object_type in zenpy_objects:
            return zenpy_objects[self.api.object_type]

        # Could be anything, if we know of this object then return it.
        for zenpy_object_name in self.object_mapping.class_mapping:
            if zenpy_object_name in zenpy_objects:
                return zenpy_objects[zenpy_object_name]

        # Maybe a collection of known objects?
        for zenpy_object_name in self.object_mapping.class_mapping:
            plural_zenpy_object_name = as_plural(zenpy_object_name)
            if plural_zenpy_object_name in zenpy_objects:
                return ZendeskResultGenerator(
                    self, response_json, object_type=plural_zenpy_object_name)

        # Bummer, bail out.
        raise ZenpyException("Unknown Response: " + str(response_json))
Пример #3
0
 def build_payload(self, api_objects):
     if isinstance(api_objects, collections.Iterable):
         payload_key = as_plural(self.api.object_type)
     else:
         payload_key = self.api.object_type
     return {payload_key: self.api._serialize(api_objects)}
Пример #4
0
 def process_page(self):
     response_objects = self.response_handler.deserialize(self._response_json)
     return response_objects[as_plural(self.object_type)]
Пример #5
0
 def __init__(self, config, object_type, endpoint=None):
     self.object_type = object_type
     self.endpoint = endpoint or EndpointFactory(as_plural(object_type))
     super(Api, self).__init__(**config)
     self._object_mapping = ZendeskObjectMapping(self)
Пример #6
0
 def process_page(self):
     response_objects = self.response_handler.deserialize(
         self._response_json)
     return response_objects[as_plural(self.object_type)]
Пример #7
0
 def __init__(self, config, object_type, endpoint=None):
     self.object_type = object_type
     self.endpoint = endpoint or EndpointFactory(as_plural(object_type))
     super(Api, self).__init__(**config)
     self._object_mapping = ZendeskObjectMapping(self)
Пример #8
0
 def build_payload(self, api_objects):
     if isinstance(api_objects, collections.Iterable):
         payload_key = as_plural(self.api.object_type)
     else:
         payload_key = self.api.object_type
     return {payload_key: self.api._serialize(api_objects)}