Exemplo n.º 1
0
    def _call_resource_method(self, cls, id, method_name, data):
        """POST a dictionary to an API method,
        for example /a/.../accounts/id/upgrade"""

        if cls.api_root != 'a':
            url_path = "/{name}/{id}/{method}".format(
                name=cls.collection_name, id=id, method=method_name
            )
        else:
            # Management method.
            url_path = "/a/{app_id}/{name}/{id}/{method}".format(
                app_id=self.app_id,
                name=cls.collection_name,
                id=id,
                method=method_name,
            )

        url = (
            URLObject(self.api_server)
            .with_path(url_path)
        )
        converted_data = convert_datetimes_to_timestamps(data, cls.datetime_attrs)

        session = self._get_http_session(cls.api_root)
        response = session.post(url, json=converted_data)

        result = _validate(response).json()
        return cls.create(self, **result)
Exemplo n.º 2
0
    def _get_resource_raw(self,
                          cls,
                          id,
                          extra=None,
                          headers=None,
                          stream=False,
                          **filters):
        """Get an individual REST resource"""
        headers = headers or {}
        headers.update(self.session.headers)

        postfix = "/{}".format(extra) if extra else ""
        if cls.api_root != "a":
            url = "{}/{}/{}{}".format(self.api_server, cls.collection_name, id,
                                      postfix)
        else:
            url = "{}/a/{}/{}/{}{}".format(self.api_server, self.app_id,
                                           cls.collection_name, id, postfix)

        converted_filters = convert_datetimes_to_timestamps(
            filters, cls.datetime_filter_attrs)
        url = str(URLObject(url).add_query_params(converted_filters.items()))
        response = self._get_http_session(cls.api_root).get(url,
                                                            headers=headers,
                                                            stream=stream)
        return _validate(response)
Exemplo n.º 3
0
    def _get_resources(self, cls, extra=None, **filters):
        # FIXME @karim: remove this interim code when we've got rid
        # of the old accounts API.
        postfix = "/{}".format(extra) if extra else ''
        if cls.api_root != 'a':
            url = "{}/{}{}".format(
                self.api_server,
                cls.collection_name,
                postfix
            )
        else:
            url = "{}/a/{}/{}{}".format(
                self.api_server,
                self.app_id,
                cls.collection_name,
                postfix
            )

        converted_filters = convert_datetimes_to_timestamps(
            filters, cls.datetime_filter_attrs,
        )
        url = str(URLObject(url).add_query_params(converted_filters.items()))
        response = self._get_http_session(cls.api_root).get(url)
        results = _validate(response).json()
        return [
            cls.create(self, **x)
            for x in results
            if x is not None
        ]
Exemplo n.º 4
0
    def _update_resource(self, cls, id, data, **kwargs):
        url = (URLObject(self.api_server).with_path("/{name}/{id}".format(
            name=cls.collection_name, id=id)).set_query_params(**kwargs))

        session = self._get_http_session(cls.api_root)

        converted_data = convert_datetimes_to_timestamps(
            data, cls.datetime_attrs)
        response = session.put(url, json=converted_data)

        result = _validate(response).json()
        return cls.create(self, **result)
Exemplo n.º 5
0
    def _update_resource(self, cls, id, data, **kwargs):
        url = (
            URLObject(self.api_server)
            .with_path("/{name}/{id}".format(name=cls.collection_name, id=id))
            .set_query_params(**kwargs)
        )

        session = self._get_http_session(cls.api_root)

        converted_data = convert_datetimes_to_timestamps(data, cls.datetime_attrs)
        response = session.put(url, json=converted_data)

        result = _validate(response).json()
        return cls.create(self, **result)
Exemplo n.º 6
0
    def _get_resources(self, cls, extra=None, **filters):
        # FIXME @karim: remove this interim code when we've got rid
        # of the old accounts API.
        postfix = "/{}".format(extra) if extra else ""
        if cls.api_root != "a":
            url = "{}/{}{}".format(self.api_server, cls.collection_name, postfix)
        else:
            url = "{}/a/{}/{}{}".format(
                self.api_server, self.app_id, cls.collection_name, postfix
            )

        converted_filters = convert_datetimes_to_timestamps(
            filters, cls.datetime_filter_attrs
        )
        url = str(URLObject(url).add_query_params(converted_filters.items()))
        response = self._get_http_session(cls.api_root).get(url)
        results = _validate(response).json()
        return [cls.create(self, **x) for x in results if x is not None]
Exemplo n.º 7
0
    def _create_resources(self, cls, data):
        url = URLObject(self.api_server).with_path(
            "/{name}/".format(name=cls.collection_name))
        session = self._get_http_session(cls.api_root)

        if cls == File:
            response = session.post(url, files=data)
        else:
            converted_data = [
                convert_datetimes_to_timestamps(datum, cls.datetime_attrs)
                for datum in data
            ]
            headers = {"Content-Type": "application/json"}
            headers.update(self.session.headers)
            response = session.post(url, json=converted_data, headers=headers)

        results = _validate(response).json()
        return [cls.create(self, **x) for x in results]
Exemplo n.º 8
0
    def _create_resources(self, cls, data):
        url = URLObject(self.api_server).with_path(
            "/{name}/".format(name=cls.collection_name)
        )
        session = self._get_http_session(cls.api_root)

        if cls == File:
            response = session.post(url, files=data)
        else:
            converted_data = [
                convert_datetimes_to_timestamps(datum, cls.datetime_attrs)
                for datum in data
            ]
            headers = {"Content-Type": "application/json"}
            headers.update(self.session.headers)
            response = session.post(url, json=converted_data, headers=headers)

        results = _validate(response).json()
        return [cls.create(self, **x) for x in results]
Exemplo n.º 9
0
    def _create_resource(self, cls, data, **kwargs):
        url = (URLObject(self.api_server).with_path("/{name}/".format(
            name=cls.collection_name)).set_query_params(**kwargs))

        session = self._get_http_session(cls.api_root)

        if cls == File:
            response = session.post(url, files=data)
        else:
            converted_data = convert_datetimes_to_timestamps(
                data, cls.datetime_attrs)
            headers = {"Content-Type": "application/json"}
            headers.update(self.session.headers)
            response = session.post(url, json=converted_data, headers=headers)

        result = _validate(response).json()
        if cls.collection_name == "send":
            return result
        return cls.create(self, **result)
Exemplo n.º 10
0
    def _create_resource(self, cls, data, **kwargs):
        url = (
            URLObject(self.api_server)
            .with_path("/{name}/".format(name=cls.collection_name))
            .set_query_params(**kwargs)
        )

        session = self._get_http_session(cls.api_root)

        if cls == File:
            response = session.post(url, files=data)
        else:
            converted_data = convert_datetimes_to_timestamps(data, cls.datetime_attrs)
            headers = {"Content-Type": "application/json"}
            headers.update(self.session.headers)
            response = session.post(url, json=converted_data, headers=headers)

        result = _validate(response).json()
        if cls.collection_name == "send":
            return result
        return cls.create(self, **result)
Exemplo n.º 11
0
    def _call_resource_method(self, cls, id, method_name, data):
        """POST a dictionary to an API method,
        for example /a/.../accounts/id/upgrade"""

        if cls.api_root != "a":
            url_path = "/{name}/{id}/{method}".format(
                name=cls.collection_name, id=id, method=method_name
            )
        else:
            # Management method.
            url_path = "/a/{app_id}/{name}/{id}/{method}".format(
                app_id=self.app_id, name=cls.collection_name, id=id, method=method_name
            )

        url = URLObject(self.api_server).with_path(url_path)
        converted_data = convert_datetimes_to_timestamps(data, cls.datetime_attrs)

        session = self._get_http_session(cls.api_root)
        response = session.post(url, json=converted_data)

        result = _validate(response).json()
        return cls.create(self, **result)
Exemplo n.º 12
0
    def _get_resource_raw(
        self, cls, id, extra=None, headers=None, stream=False, **filters
    ):
        """Get an individual REST resource"""
        headers = headers or {}
        headers.update(self.session.headers)

        postfix = "/{}".format(extra) if extra else ""
        if cls.api_root != "a":
            url = "{}/{}/{}{}".format(self.api_server, cls.collection_name, id, postfix)
        else:
            url = "{}/a/{}/{}/{}{}".format(
                self.api_server, self.app_id, cls.collection_name, id, postfix
            )

        converted_filters = convert_datetimes_to_timestamps(
            filters, cls.datetime_filter_attrs
        )
        url = str(URLObject(url).add_query_params(converted_filters.items()))
        response = self._get_http_session(cls.api_root).get(
            url, headers=headers, stream=stream
        )
        return _validate(response)