Пример #1
0
def test_format_new_api_request(dataid, row_id, content_type, path):
    assert (
        utils.format_new_api_request(
            dataid=dataid, row_id=row_id, content_type=content_type
        )
        == path
    )
Пример #2
0
    def replace(self, dataset_identifier, payload, content_type="json"):
        """
        Same logic as upsert, but overwrites existing data with the payload
        using PUT instead of POST.
        """
        resource = utils.format_new_api_request(dataid=dataset_identifier,
                                                content_type=content_type)

        return self._perform_update("put", resource, payload)
Пример #3
0
    def upsert(self, dataset_identifier, payload, content_type="json"):
        """
        Insert, update or delete data to/from an existing dataset. Currently
        supports json and csv file objects. See here for the upsert
        documentation:
            http://dev.socrata.com/publishers/upsert.html
        """
        resource = utils.format_new_api_request(dataid=dataset_identifier,
                                                content_type=content_type)

        return self._perform_update("post", resource, payload)
Пример #4
0
    def get(self, dataset_identifier, content_type="json", **kwargs):
        """
        Read data from the requested resource. Options for content_type are json,
        csv, and xml. Optionally, specify a keyword arg to filter results:

            select : the set of columns to be returned, defaults to *
            where : filters the rows to be returned, defaults to limit
            order : specifies the order of results
            group : column to group results on
            limit : max number of results to return, defaults to 1000
            offset : offset, used for paging. Defaults to 0
            q : performs a full text search for a value
            query : full SoQL query string, all as one parameter
            exclude_system_fields : defaults to true. If set to false, the
                response will include system fields (:id, :created_at, and
                :updated_at)

        More information about the SoQL parameters can be found at the official
        docs:
            http://dev.socrata.com/docs/queries.html

        More information about system fields can be found here:
            http://dev.socrata.com/docs/system-fields.html
        """
        resource = utils.format_new_api_request(dataid=dataset_identifier,
                                                content_type=content_type)
        headers = utils.clear_empty_values(
            {"Accept": kwargs.pop("format", None)})

        # SoQL parameters
        params = {
            "$select": kwargs.pop("select", None),
            "$where": kwargs.pop("where", None),
            "$order": kwargs.pop("order", None),
            "$group": kwargs.pop("group", None),
            "$limit": kwargs.pop("limit", None),
            "$offset": kwargs.pop("offset", None),
            "$q": kwargs.pop("q", None),
            "$query": kwargs.pop("query", None),
            "$$exclude_system_fields": kwargs.pop("exclude_system_fields",
                                                  None),
        }

        # Additional parameters, such as field names
        params.update(kwargs)
        params = utils.clear_empty_values(params)

        response = self._perform_request("get",
                                         resource,
                                         headers=headers,
                                         params=params)
        return response
Пример #5
0
    def delete(self, dataset_identifier, row_id=None, content_type="json"):
        """
        Delete the entire dataset, e.g.
            client.delete("nimj-3ivp")
        or a single row, e.g.
            client.delete("nimj-3ivp", row_id=4)
        """
        if row_id:
            resource = utils.format_new_api_request(dataid=dataset_identifier,
                                                    row_id=row_id,
                                                    content_type=content_type)
        else:
            resource = utils.format_old_api_request(dataid=dataset_identifier,
                                                    content_type=content_type)

        return self._perform_request("delete", resource)
Пример #6
0
def test_format_new_api_request_exception():
    with pytest.raises(Exception):
        utils.format_new_api_request()