예제 #1
0
    def get(self, resource_id=None, resource_action=None):
        """ Gets the details for one or more resources by ID
        
        Args:
            cls - gophish.models.Model - The resource class
            resource_id - str - The endpoint (URL path) for the resource
            resource_action - str - An action to perform on the resource

        Returns:
            One or more instances of cls parsed from the returned JSON
        """

        endpoint = self.endpoint

        if resource_id:
            endpoint = '{}/{}'.format(endpoint, resource_id)

        if resource_action:
            endpoint = '{}/{}'.format(endpoint, resource_action)

        response = self.api.execute("GET", endpoint)
        if not response.ok:
            return Error.parse(response.json())

        if resource_id:
            return self._cls.parse(response.json())

        return [self._cls.parse(resource) for resource in response.json()]
예제 #2
0
    def request(self,
                method,
                body=None,
                resource_id=None,
                resource_action=None,
                resource_cls=None,
                single_resource=False):

        endpoint = self.endpoint

        if not resource_cls:
            resource_cls = self._cls

        if resource_id:
            endpoint = self._build_url(endpoint, resource_id)

        if resource_action:
            endpoint = self._build_url(endpoint, resource_action)

        response = self.api.execute(method, endpoint, json=body)
        if not response.ok:
            raise Error.parse(response.json())

        if resource_id or single_resource:
            return resource_cls.parse(response.json())

        return [resource_cls.parse(resource) for resource in response.json()]
예제 #3
0
    def delete(self, resource_id):
        """ Deletes an existing resource

        Args:
            resource_id - int - The resource ID to be deleted
        """

        endpoint = '{}/{}'.format(self.endpoint, resource_id)

        response = self.api.execute("DELETE", endpoint)

        if not response.ok:
            return Error.parse(response.json())

        return self._cls.parse(response.json())
예제 #4
0
    def post(self, resource):
        """ Creates a new instance of the resource.

        Args:
            resource - gophish.models.Model - The resource instance

        """
        response = self.api.execute("POST",
                                    self.endpoint,
                                    json=(resource.as_dict()))

        if not response.ok:
            return Error.parse(response.json())

        return self._cls.parse(response.json())
예제 #5
0
    def put(self, resource):
        """ Edits an existing resource

        Args:
            resource - gophish.models.Model - The resource instance
        """

        endpoint = self.endpoint

        if resource.id:
            endpoint = '{}/{}'.format(endpoint, resource.id)

        response = self.api.execute("PUT", endpoint, json=resource.as_json())

        if not respose.ok:
            return Error.parse(response.json())

        return self._cls.parse(response.json())
예제 #6
0
    def get(self,
            resource_id=None,
            resource_action=None,
            resource_cls=None,
            single_resource=False):
        """ Gets the details for one or more resources by ID

        Args:
            cls - gophish.models.Model - The resource class
            resource_id - str - The endpoint (URL path) for the resource
            resource_action - str - An action to perform on the resource
            resource_cls - cls - A class to use for parsing, if different than
                the base resource
            single_resource - bool - An override to tell Gophish that even
                though we aren't requesting a single resource, we expect a
                single response object

        Returns:
            One or more instances of cls parsed from the returned JSON
        """

        endpoint = self.endpoint

        if not resource_cls:
            resource_cls = self._cls

        if resource_id:
            endpoint = '{}/{}'.format(endpoint, resource_id)

        if resource_action:
            endpoint = '{}/{}'.format(endpoint, resource_action)

        response = self.api.execute("GET", endpoint)
        if not response.ok:
            return Error.parse(response.json())

        if resource_id or single_resource:
            return resource_cls.parse(response.json())

        return [resource_cls.parse(resource) for resource in response.json()]