def get_occurrence_search_collection_code(self,
                                              options=dict()):
        """Does a GET request to /occurrence/search/collectionCode.

        Search that returns matching collection codes. Results are ordered by
        relevance.

        Args:
            options (dict, optional): Key-value pairs for any of the
                parameters to this API Endpoint. All parameters to the
                endpoint are supplied through the dictionary with their names
                being the key and their desired values being the value. A list
                of parameters that can be used are::

                    limit -- int -- The maximum number of results to return.
                        This can't be greater than 300, any value greater is
                        set to 300.
                    q -- string -- Simple search parameter. The value for this
                        parameter can be a simple word or a phrase.

        Returns:
            mixed: Response from the API. 

        Raises:
            APIException: When an error occurs while fetching the data from
                the remote API. This exception includes the HTTP Response
                code, an error message, and the HTTP body that was received in
                the request.

        """
        # The base uri for api requests
        query_builder = Configuration.BASE_URI
 
        # Prepare query string for API call
        query_builder += "/occurrence/search/collectionCode"

        # Process optional query parameters
        query_builder = APIHelper.append_url_with_query_parameters(query_builder, {
            "limit": options.get('limit', None),
            "q": options.get('q', None)
        })

        # Validate and preprocess url
        query_url = APIHelper.clean_url(query_builder)

        # Prepare headers
        headers = {
            "user-agent": "APIMATIC 2.0",
            "accept": "application/json"
        }

        # Prepare and invoke the API call request to fetch the response
        response = unirest.get(query_url, headers=headers)

        # Error handling using HTTP status codes
        if response.code < 200 or response.code > 206:  # 200 = HTTP OK
            raise APIException("HTTP Response Not OK", response.code, response.body) 
    
        return response.body
    def get_occurrence_inventories_list_count_by_pub_country(self,
                                                             country):
        """Does a GET request to /occurrence/counts/publishingCountries.

        Lists occurrence counts for all countries that publish data about the
        given country.

        Args:
            country (string): The 2-letter country code (as per ISO-3166-1) of
                the country in which the occurrence was recorded.

        Returns:
            mixed: Response from the API. 

        Raises:
            APIException: When an error occurs while fetching the data from
                the remote API. This exception includes the HTTP Response
                code, an error message, and the HTTP body that was received in
                the request.

        """
        # The base uri for api requests
        query_builder = Configuration.BASE_URI
 
        # Prepare query string for API call
        query_builder += "/occurrence/counts/publishingCountries"

        # Process optional query parameters
        query_builder = APIHelper.append_url_with_query_parameters(query_builder, {
            "country": country
        })

        # Validate and preprocess url
        query_url = APIHelper.clean_url(query_builder)

        # Prepare headers
        headers = {
            "user-agent": "APIMATIC 2.0",
            "accept": "application/json"
        }

        # Prepare and invoke the API call request to fetch the response
        response = unirest.get(query_url, headers=headers)

        # Error handling using HTTP status codes
        if response.code < 200 or response.code > 206:  # 200 = HTTP OK
            raise APIException("HTTP Response Not OK", response.code, response.body) 
    
        return response.body
    def get_occurrence_get_verbatim(self, key):
        """Does a GET request to /occurrence/{key}/verbatim.

        Gets the verbatim occurrence record without any interpretation

        Args:
            key (int): Gets the verbatim occurrence record without any
                interpretation

        Returns:
            VerbatimOccurrence: Response from the API. 

        Raises:
            APIException: When an error occurs while fetching the data from
                the remote API. This exception includes the HTTP Response
                code, an error message, and the HTTP body that was received in
                the request.

        """
        # The base uri for api requests
        query_builder = Configuration.BASE_URI

        # Prepare query string for API call
        query_builder += "/occurrence/{key}/verbatim"

        # Process optional template parameters
        query_builder = APIHelper.append_url_with_template_parameters(query_builder, {"key": key})

        # Validate and preprocess url
        query_url = APIHelper.clean_url(query_builder)

        # Prepare headers
        headers = {"user-agent": "APIMATIC 2.0", "accept": "application/json"}

        # Prepare and invoke the API call request to fetch the response
        response = unirest.get(query_url, headers=headers)

        # Error handling using HTTP status codes
        if response.code < 200 or response.code > 206:  # 200 = HTTP OK
            raise APIException("HTTP Response Not OK", response.code, response.body)

        # Try to cast response to desired type
        if isinstance(response.body, dict):
            # Response is already in a dictionary, return the object
            return VerbatimOccurrence(**response.body)

        # If we got here then an error occured while trying to parse the response
        raise APIException("Invalid JSON returned", response.code, response.body)
    def get_occurrence_download_metadata_by_key(self,
                                                key):
        """Does a GET request to /occurrence/download/{key}.

        Retrieves the occurrence download metadata by its unique key.

        Args:
            key (string): Retrieves the occurrence download metadata by its
                unique key.

        Returns:
            mixed: Response from the API. 

        Raises:
            APIException: When an error occurs while fetching the data from
                the remote API. This exception includes the HTTP Response
                code, an error message, and the HTTP body that was received in
                the request.

        """
        # The base uri for api requests
        query_builder = Configuration.BASE_URI
 
        # Prepare query string for API call
        query_builder += "/occurrence/download/{key}"

        # Process optional template parameters
        query_builder = APIHelper.append_url_with_template_parameters(query_builder, { 
            "key": key
        })

        # Validate and preprocess url
        query_url = APIHelper.clean_url(query_builder)

        # Prepare headers
        headers = {
            "user-agent": "APIMATIC 2.0",
            "accept": "application/json"
        }

        # Prepare and invoke the API call request to fetch the response
        response = unirest.get(query_url, headers=headers)

        # Error handling using HTTP status codes
        if response.code < 200 or response.code > 206:  # 200 = HTTP OK
            raise APIException("HTTP Response Not OK", response.code, response.body) 
    
        return response.body
    def get_occurrence_inventories_list_count_by_year(self,
                                                      year):
        """Does a GET request to /occurrence/counts/year.

        Lists occurrence counts by year.

        Args:
            year (string): The 4 digit year. A year of 98 will be interpreted
                as AD 98. Supports range queries.

        Returns:
            mixed: Response from the API. 

        Raises:
            APIException: When an error occurs while fetching the data from
                the remote API. This exception includes the HTTP Response
                code, an error message, and the HTTP body that was received in
                the request.

        """
        # The base uri for api requests
        query_builder = Configuration.BASE_URI
 
        # Prepare query string for API call
        query_builder += "/occurrence/counts/year"

        # Process optional query parameters
        query_builder = APIHelper.append_url_with_query_parameters(query_builder, {
            "year": year
        })

        # Validate and preprocess url
        query_url = APIHelper.clean_url(query_builder)

        # Prepare headers
        headers = {
            "user-agent": "APIMATIC 2.0",
            "accept": "application/json"
        }

        # Prepare and invoke the API call request to fetch the response
        response = unirest.get(query_url, headers=headers)

        # Error handling using HTTP status codes
        if response.code < 200 or response.code > 206:  # 200 = HTTP OK
            raise APIException("HTTP Response Not OK", response.code, response.body) 
    
        return response.body
    def update_occurrence_download_put_update_status(self,
                                                     key):
        """Does a PUT request to /occurrence/download/{key}.

        Updates the status of an existing occurrence download. This operation
        can be executed by the role ADMIN only.

        Args:
            key (string): Updates the status of an existing occurrence
                download.

        Returns:
            void: Response from the API. 

        Raises:
            APIException: When an error occurs while fetching the data from
                the remote API. This exception includes the HTTP Response
                code, an error message, and the HTTP body that was received in
                the request.

        """
        # The base uri for api requests
        query_builder = Configuration.BASE_URI
 
        # Prepare query string for API call
        query_builder += "/occurrence/download/{key}"

        # Process optional template parameters
        query_builder = APIHelper.append_url_with_template_parameters(query_builder, { 
            "key": key
        })

        # Validate and preprocess url
        query_url = APIHelper.clean_url(query_builder)

        # Prepare headers
        headers = {
            "user-agent": "APIMATIC 2.0"
        }

        # Prepare and invoke the API call request to fetch the response
        response = unirest.put(query_url, headers=headers, params={}, auth=(self.__user, self.__password))

        # Error handling using HTTP status codes
        if response.code < 200 or response.code > 206:  # 200 = HTTP OK
            raise APIException("HTTP Response Not OK", response.code, response.body) 
Beispiel #7
0
    def resolve_names(self):
        """Creates a dictionary representation of this object.
        
        This method converts an object to a dictionary that represents the
        format that the model should be in when passed into an API Request.
        Because of this, the generated dictionary may have different
        property names to that of the model itself.
        
        Returns:
            dict: The dictionary representing the object.
        
        """
        # Create a mapping from Model property names to API property names
        replace_names = {
            "key": "key",
            "datasetkey": "datasetkey",
            "publishing_org_key": "publishingOrgKey",
            "publishing_country": "publishingCountry",
            "protocol": "protocol",
            "last_crawled": "lastCrawled",
            "basis_of_record": "basisOfRecord",
            "decimal_longitude": "decimalLongitude",
            "decimal_latitude": "decimalLatitude",
            "continent": "continent",
            "year": "year",
            "month": "month",
            "day": "day",
            "event_date": "eventDate",
            "issues": "issues",
            "last_interpreted": "lastInterpreted",
            "identifiers": "identifiers",
            "facts": "facts",
            "relations": "relations",
            "geodetic_datum": "geodeticDatum",
            "country_code": "countryCode",
            "country": "country",
            "gbif_id": "gbifID",
            "institution_code": "institutionCode",
            "catalog_number": "catalogNumber",
            "recorded_by": "recordedBy",
            "locality": "locality",
            "collection_code": "collectionCode",
            "identified_by": "identifiedBy",
        }

        retval = dict()

        return APIHelper.resolve_names(self, replace_names, retval)
    def resolve_names(self):
        """Creates a dictionary representation of this object.
        
        This method converts an object to a dictionary that represents the
        format that the model should be in when passed into an API Request.
        Because of this, the generated dictionary may have different
        property names to that of the model itself.
        
        Returns:
            dict: The dictionary representing the object.
        
        """
        # Create a mapping from Model property names to API property names
        replace_names = {
            "key": "key",
            "dataset_key": "datasetKey",
            "publishing_org_key": "publishingOrgKey",
            "publishing_country": "publishingCountry",
            "protocol": "protocol",
            "last_crawled": "lastCrawled",
            "http_rs_tdwg_org_dwc_terms_day": "http://rs.tdwg.org/dwc/terms/day",
            "http_rs_gbif_org_terms_1_0_gbif_id": "http://rs.gbif.org/terms/1.0/gbifID",
            "http_rs_tdwg_org_dwc_terms_continent": "http://rs.tdwg.org/dwc/terms/continent",
            "http_rs_tdwg_org_dwc_terms_country": "http://rs.tdwg.org/dwc/terms/country",
            "http_rs_tdwg_org_dwc_terms_collection_code": "http://rs.tdwg.org/dwc/terms/collectionCode",
            "http_rs_tdwg_org_dwc_terms_year": "http://rs.tdwg.org/dwc/terms/year",
            "http_rs_tdwg_org_dwc_terms_locality": "http://rs.tdwg.org/dwc/terms/locality",
            "http_rs_tdwg_org_dwc_terms_identified_by": "http://rs.tdwg.org/dwc/terms/identifiedBy",
            "http_rs_tdwg_org_dwc_terms_verbatim_latitude": "http://rs.tdwg.org/dwc/terms/verbatimLatitude",
            "http_rs_tdwg_org_dwc_terms_basis_of_record": "http://rs.tdwg.org/dwc/terms/basisOfRecord",
            "http_rs_tdwg_org_dwc_terms_verbatim_longitude": "http://rs.tdwg.org/dwc/terms/verbatimLongitude",
            "http_rs_tdwg_org_dwc_terms_catalog_number": "http://rs.tdwg.org/dwc/terms/catalogNumber",
            "http_rs_tdwg_org_dwc_terms_month": "http://rs.tdwg.org/dwc/terms/month",
            "http_rs_tdwg_org_dwc_terms_institution_code": "http://rs.tdwg.org/dwc/terms/institutionCode",
            "http_rs_tdwg_org_dwc_terms_coordinate_precision": "http://rs.tdwg.org/dwc/terms/coordinatePrecision",
            "http_rs_tdwg_org_dwc_terms_recorded_by": "http://rs.tdwg.org/dwc/terms/recordedBy",
            "http_rs_tdwg_org_dwc_terms_scientific_name": "http://rs.tdwg.org/dwc/terms/scientificName",
        }

        retval = dict()

        return APIHelper.resolve_names(self, replace_names, retval)
    def create_occurrence_download_post_request(self):
        """Does a POST request to /occurrence/download/request.

        Starts the process of creating a download file. See the predicates
        section to consult the requests accepted by this service.

        Returns:
            string: Response from the API. 

        Raises:
            APIException: When an error occurs while fetching the data from
                the remote API. This exception includes the HTTP Response
                code, an error message, and the HTTP body that was received in
                the request.

        """
        # The base uri for api requests
        query_builder = Configuration.BASE_URI
 
        # Prepare query string for API call
        query_builder += "/occurrence/download/request"

        # Validate and preprocess url
        query_url = APIHelper.clean_url(query_builder)

        # Prepare headers
        headers = {
            "user-agent": "APIMATIC 2.0"
        }

        # Prepare and invoke the API call request to fetch the response
        response = unirest.post(query_url, headers=headers, params={}, auth=(self.__user, self.__password))

        # Error handling using HTTP status codes
        if response.code < 200 or response.code > 206:  # 200 = HTTP OK
            raise APIException("HTTP Response Not OK", response.code, response.body) 
    
        return response.body
    def get_occurrence_metrics_count_schema(self):
        """Does a GET request to /occurrence/count/schema.

        List the supported metrics by the service.

        Returns:
            mixed: Response from the API. 

        Raises:
            APIException: When an error occurs while fetching the data from
                the remote API. This exception includes the HTTP Response
                code, an error message, and the HTTP body that was received in
                the request.

        """
        # The base uri for api requests
        query_builder = Configuration.BASE_URI
 
        # Prepare query string for API call
        query_builder += "/occurrence/count/schema"

        # Validate and preprocess url
        query_url = APIHelper.clean_url(query_builder)

        # Prepare headers
        headers = {
            "user-agent": "APIMATIC 2.0",
            "accept": "application/json"
        }

        # Prepare and invoke the API call request to fetch the response
        response = unirest.get(query_url, headers=headers)

        # Error handling using HTTP status codes
        if response.code < 200 or response.code > 206:  # 200 = HTTP OK
            raise APIException("HTTP Response Not OK", response.code, response.body) 
    
        return response.body
Beispiel #11
0
    def resolve_names(self):
        """Creates a dictionary representation of this object.
        
        This method converts an object to a dictionary that represents the
        format that the model should be in when passed into an API Request.
        Because of this, the generated dictionary may have different
        property names to that of the model itself.
        
        Returns:
            dict: The dictionary representing the object.
        
        """
        # Create a mapping from Model property names to API property names
        replace_names = {
            "observations": "Observations",
            "specimens": "Specimens",
            "living": "Living",
            "fossil": "Fossil",
            "other": "Other",
        }

        retval = dict()

        return APIHelper.resolve_names(self, replace_names, retval)
    def get_occurrence_download_list(self,
                                     options=dict()):
        """Does a GET request to /occurrence/download/dataset/{datasetKey}.

        Lists the downloads activity of a dataset.

        Args:
            options (dict, optional): Key-value pairs for any of the
                parameters to this API Endpoint. All parameters to the
                endpoint are supplied through the dictionary with their names
                being the key and their desired values being the value. A list
                of parameters that can be used are::

                    dataset_key -- string -- Lists the downloads activity of
                        dataset.
                    limit -- int -- Controls the number of results in the
                        page. Using too high a value will be overwritten with
                        the default maximum threshold, depending on the
                        service. Sensible defaults are used so this may be
                        omitted.
                    offset -- int -- Determines the offset for the search
                        results. A limit of 20 and offset of 20, will get the
                        second page of 20 results.

        Returns:
            mixed: Response from the API. 

        Raises:
            APIException: When an error occurs while fetching the data from
                the remote API. This exception includes the HTTP Response
                code, an error message, and the HTTP body that was received in
                the request.

        """
        # The base uri for api requests
        query_builder = Configuration.BASE_URI
 
        # Prepare query string for API call
        query_builder += "/occurrence/download/dataset/{datasetKey}"

        # Process optional template parameters
        query_builder = APIHelper.append_url_with_template_parameters(query_builder, { 
            "datasetKey": options.get('dataset_key', None)
        })

        # Process optional query parameters
        query_builder = APIHelper.append_url_with_query_parameters(query_builder, {
            "limit":  options.get('limit', None) if options.get('limit', None) is not None else 300,
            "offset": options.get('offset', None)
        })

        # Validate and preprocess url
        query_url = APIHelper.clean_url(query_builder)

        # Prepare headers
        headers = {
            "user-agent": "APIMATIC 2.0",
            "accept": "application/json"
        }

        # Prepare and invoke the API call request to fetch the response
        response = unirest.get(query_url, headers=headers, params={}, auth=(self.__user, self.__password))

        # Error handling using HTTP status codes
        if response.code < 200 or response.code > 206:  # 200 = HTTP OK
            raise APIException("HTTP Response Not OK", response.code, response.body) 
    
        return response.body
    def get_occurrence_metrics_count(self,
                                     options=dict()):
        """Does a GET request to /occurrence/count.

        Returns occurrence counts for a predefined set of dimensions. The
        supported dimensions are enumerated in the /occurrence/count/schema
        service. An example for the count of georeferenced observations from
        Canada:
        /occurrence/count?country=CA&isGeoreferenced=true&basisOfRecord=OBSERVA
        TION. 

        Args:
            options (dict, optional): Key-value pairs for any of the
                parameters to this API Endpoint. All parameters to the
                endpoint are supplied through the dictionary with their names
                being the key and their desired values being the value. A list
                of parameters that can be used are::

                    basis_of_record -- string -- basisOfRecord
                    country -- string -- Country
                    dataset_key -- string -- datasetKey
                    is_geo_referenced -- bool -- isGeoreferenced
                    issue -- string -- issue
                    publishing_country -- string -- publishingCountry
                    taxon_key -- int -- taxonKey
                    type_status -- string -- typeStatus

        Returns:
            int: Response from the API. 

        Raises:
            APIException: When an error occurs while fetching the data from
                the remote API. This exception includes the HTTP Response
                code, an error message, and the HTTP body that was received in
                the request.

        """
        # The base uri for api requests
        query_builder = Configuration.BASE_URI
 
        # Prepare query string for API call
        query_builder += "/occurrence/count"

        # Process optional query parameters
        query_builder = APIHelper.append_url_with_query_parameters(query_builder, {
            "basisOfRecord": options.get('basis_of_record', None),
            "country": options.get('country', None),
            "datasetKey": options.get('dataset_key', None),
            "isGeoReferenced": options.get('is_geo_referenced', None),
            "issue": options.get('issue', None),
            "publishingCountry":  options.get('publishing_country', None) if options.get('publishing_country', None) is not None else "NZ",
            "taxonKey": options.get('taxon_key', None),
            "typeStatus": options.get('type_status', None)
        })

        # Validate and preprocess url
        query_url = APIHelper.clean_url(query_builder)

        # Prepare headers
        headers = {
            "user-agent": "APIMATIC 2.0"
        }

        # Prepare and invoke the API call request to fetch the response
        response = unirest.get(query_url, headers=headers)

        # Error handling using HTTP status codes
        if response.code < 200 or response.code > 206:  # 200 = HTTP OK
            raise APIException("HTTP Response Not OK", response.code, response.body) 
    
        return response.body
    def get_occurrence_search_search(self,
                                     options=dict()):
        """Does a GET request to /occurrence/search.

        Full search across all occurrences. Results are ordered by relevance.

        Args:
            options (dict, optional): Key-value pairs for any of the
                parameters to this API Endpoint. All parameters to the
                endpoint are supplied through the dictionary with their names
                being the key and their desired values being the value. A list
                of parameters that can be used are::

                    basis_of_record -- BasisOfRecordEnum -- Basis of record,
                        as defined in our BasisOfRecord enum
                    catalog_number -- string -- An identifier of any form
                        assigned by the source within a physical collection or
                        digital dataset for the record which may not be
                        unique, but should be fairly unique in combination
                        with the institution and collection code.
                    collection_code -- string -- An identifier of any form
                        assigned by the source to identify the physical
                        collection or digital dataset uniquely within the
                        context of an institution.
                    continent -- ContinentEnum -- Continent, as defined in the
                        GBIF Continent enum
                    country -- string -- The 2-letter country code (as per
                        ISO-3166-1) of the country in which the occurrence was
                        recorded.
                    dataset_key -- string -- The occurrence dataset key (a
                        uuid)
                    decimal_latitude -- string -- Latitude in decimals between
                        -90 and 90 based on WGS 84.. Supports range queries.
                    decimal_longitude -- string -- Longitude in decimals
                        between -180 and 180 based on WGS 84.. Supports range
                        queries.
                    depth -- string -- Depth in meters relative to altitude.
                        For example 10 meters below a lake surface with given
                        altitude. Supports range queries.
                    elevation -- string -- Elevation (altitude) in meters
                        above sea level. Supports range queries.
                    event_date -- string -- Occurrence date in ISO 8601
                        format: yyyy, yyyy-MM, yyyy-MM-dd, or MM-dd. Supports
                        range queries.
                    geometry -- string -- Searches for occurrences inside a
                        polygon described in Well Known Text (WKT) format.
                        Only POINT, LINESTRING, LINEARRING and POLYGON are
                        accepted WKT types. For example, a shape written as
                        POLYGON ((30.1 10.1, 10 20, 20 40, 40 40, 30.1 10.1))
                        would be queried as is, i.e.
                        /occurrence/search?geometry=POLYGON((30.1 10.1, 10 20,
                        20 40, 40 40, 30.1 10.1)).
                    has_coordinate -- string -- Limits searches to occurrence
                        records which contain a value in both latitude and
                        longitude (i.e. hasCoordinate=true limits to
                        occurrence records with coordinate values and
                        hasCoordinate=false limits to occurrence records
                        without coordinate values).
                    has_geospatial_issue -- string -- Includes/excludes
                        occurrence records which contain spatial issues (as
                        determined in our record interpretation), i.e.
                        hasGeospatialIssue=true returns only those records
                        with spatial issues while hasGeospatialIssue=false
                        includes only records without spatial issues. The
                        absence of this parameter returns any record with or
                        without spatial issues.
                    institution_code -- string -- An identifier of any form
                        assigned by the source to identify the institution the
                        record belongs to. Not guaranteed to be unique.
                    issue -- OccurrenceIssueEnum -- A specific interpretation
                        issue as defined in our OccurrenceIssue enum
                    last_interpreted -- string -- This date the record was
                        last modified in GBIF, in ISO 8601 format: yyyy,
                        yyyy-MM, yyyy-MM-dd, or MM-dd. Supports range
                        queries.
                    limit -- int -- Controls the number of results in the
                        page. Using too high a value will be overwritten with
                        the default maximum threshold, depending on the
                        service. Sensible defaults are used so this may be
                        omitted.
                    media_type -- MediaTypeEnum -- The kind of multimedia
                        associated with an occurrence as defined in our
                        MediaType enum
                    month -- string -- The month of the year, starting with 1
                        for January. Supports range queries.
                    offset -- int -- Determines the offset for the search
                        results. A limit of 20 and offset of 20, will get the
                        second page of 20 results.
                    publishing_country -- string -- The 2-letter country code
                        (as per ISO-3166-1) of the owining organization's
                        country.
                    recorded_by -- string -- The person who recorded the
                        occurrence.
                    record_number -- int -- An identifier given to the record
                        at the time it was recorded in the field.
                    scientific_name -- string -- A scientific name from the
                        GBIF backbone. All included and synonym taxa are
                        included in the search. Under the hood a call to the
                        species match service is done first to retrieve a
                        taxonKey. Only unique scientific names will return
                        results, homonyms (many monomials) return nothing!
                        Consider to use the taxonKey parameter instead and the
                        species match service directly
                    taxon_key -- string -- A taxon key from the GBIF backbone.
                        All included and synonym taxa are included in the
                        search, so a search for aves with taxonKey=212 (i.e.
                        /occurrence/search?taxonKey=212) will match all birds,
                        no matter which species.
                    year -- string -- The 4 digit year. A year of 98 will be
                        interpreted as AD 98. Supports range queries.

        Returns:
            mixed: Response from the API. 

        Raises:
            APIException: When an error occurs while fetching the data from
                the remote API. This exception includes the HTTP Response
                code, an error message, and the HTTP body that was received in
                the request.

        """
        # The base uri for api requests
        query_builder = Configuration.BASE_URI
 
        # Prepare query string for API call
        query_builder += "/occurrence/search"

        # Process optional query parameters
        query_builder = APIHelper.append_url_with_query_parameters(query_builder, {
            "basisOfRecord":  options.get('basis_of_record', None).to_string() if options.get('basis_of_record', None) is not None else None,
            "catalogNumber": options.get('catalog_number', None),
            "collectionCode": options.get('collection_code', None),
            "continent":  options.get('continent', None).to_string() if options.get('continent', None) is not None else None,
            "country": options.get('country', None),
            "datasetKey": options.get('dataset_key', None),
            "decimalLatitude": options.get('decimal_latitude', None),
            "decimalLongitude": options.get('decimal_longitude', None),
            "depth": options.get('depth', None),
            "elevation": options.get('elevation', None),
            "eventDate": options.get('event_date', None),
            "geometry":  options.get('geometry', None) if options.get('geometry', None) is not None else "POLYGON((160 -60,160 -25,180 -25,180 -60,160 -60))",
            "hasCoordinate": options.get('has_coordinate', None),
            "hasGeospatialIssue": options.get('has_geospatial_issue', None),
            "institutionCode": options.get('institution_code', None),
            "issue":  options.get('issue', None).to_string() if options.get('issue', None) is not None else None,
            "lastInterpreted": options.get('last_interpreted', None),
            "limit":  options.get('limit', None) if options.get('limit', None) is not None else 300,
            "mediaType":  options.get('media_type', None).to_string() if options.get('media_type', None) is not None else None,
            "month": options.get('month', None),
            "offset": options.get('offset', None),
            "publishingCountry":  options.get('publishing_country', None) if options.get('publishing_country', None) is not None else "NZ",
            "recordedBy": options.get('recorded_by', None),
            "recordNumber": options.get('record_number', None),
            "scientificName": options.get('scientific_name', None),
            "taxonKey": options.get('taxon_key', None),
            "year": options.get('year', None)
        })

        # Validate and preprocess url
        query_url = APIHelper.clean_url(query_builder)

        # Prepare headers
        headers = {
            "user-agent": "APIMATIC 2.0",
            "accept": "application/json"
        }

        # Prepare and invoke the API call request to fetch the response
        response = unirest.get(query_url, headers=headers)

        # Error handling using HTTP status codes
        if response.code < 200 or response.code > 206:  # 200 = HTTP OK
            print "RESPONSE\n%s\n%s\n" % (response.code, response.body)
            raise APIException("HTTP Response Not OK", response.code, response.body) 
    
        return response.body
Beispiel #15
0
    def get_map_tile(self, options=dict()):
        """Does a GET request to /map/density/tile.

        The mapping api is a web map tile service making it trivial to
        visualize GBIF content on interactive maps, and overlay content from
        other sources.  Developers familiar with tile mapping services should
        jump straight to the preview functionality  The following features are
        supported:      Map layers available for a country, dataset, taxon
        (species, subspecies or higher taxon), publisher     User defined
        styling by selecting a predefined color palette, or by providing
        styling rules     Density of content is clustered to a user defined
        cluster size (regardless of zoom level)     The ability to customise
        content shown by the basis of record (E.g. Specimens, Observations,
        Fossils etc)     For certain basis of record types, the time period
        may be customised by decade; e.g. map the observations of a species
        since 1970  This service is intended for use with commonly used
        clients such as the google maps api, leaflet JS library or the modest
        maps JS library. These libraries allow the GBIF layers to be
        visualized with other content, such as those coming from web map
        service (WMS) providers. It should be noted that the mapping api is
        not a WMS service, nor does it support WFS capabilities. The examples
        on this page use the leaflet library.

        Args:
            options (dict, optional): Key-value pairs for any of the
                parameters to this API Endpoint. All parameters to the
                endpoint are supplied through the dictionary with their names
                being the key and their desired values being the value. A list
                of parameters that can be used are::

                    key -- string -- The appropriate key for the chosen type
                        (a taxon key, dataset/publisher uuid or 2 letter ISO
                        country code)
                    mtype -- string -- A value of TAXON, DATASET, COUNTRY or
                        PUBLISHER
                    x -- string -- TODO: type description here. Example: 1
                    y -- string -- TODO: type description here. Example: 1
                    z -- string -- TODO: type description here. Example: 1
                    colors -- string -- Provides a user defined set of rules
                        for coloring the layer. See styling a layer
                    hue -- double -- Allows selection of a hue value between
                        0.0 and 1.0 when saturation is set to true. See
                        styling a layer
                    layer -- list of string -- (multivalued) Declares the
                        layers to be combined by the server for this tile. See
                        Customizing layer content
                    palette -- PaletteEnum -- Selects a predefined color
                        palette. See styling a layer
                    resolution -- int -- The number of pixels to which density
                        is aggregated. Valid values are 1, 2, 4, 8, and 16.
                    saturation -- bool -- Allows selection of a hue value
                        between 0.0 and 1.0 when saturation is set to true.
                        See styling a layer

        Returns:
            binary: Response from the API. 

        Raises:
            APIException: When an error occurs while fetching the data from
                the remote API. This exception includes the HTTP Response
                code, an error message, and the HTTP body that was received in
                the request.

        """
        # The base uri for api requests
        query_builder = Configuration.BASE_URI

        # Prepare query string for API call
        query_builder += "/map/density/tile"

        # Process optional query parameters
        query_builder = APIHelper.append_url_with_query_parameters(
            query_builder,
            {
                "key": options.get("key", None),
                "type": options.get("mtype", None),
                "x": options.get("x", None),
                "y": options.get("y", None),
                "z": options.get("z", None),
                "colors": options.get("colors", None),
                "hue": options.get("hue", None) if options.get("hue", None) is not None else 1.0,
                "layer": options.get("layer", None),
                "palette": options.get("palette", None).to_string()
                if options.get("palette", None) is not None
                else None,
                "resolution": options.get("resolution", None) if options.get("resolution", None) is not None else 8,
                "saturation": options.get("saturation", None) if options.get("saturation", None) is not None else True,
            },
        )

        # Validate and preprocess url
        query_url = APIHelper.clean_url(query_builder)

        # Prepare headers
        headers = {"user-agent": "APIMATIC 2.0"}

        # Prepare and invoke the API call request to fetch the response
        response = unirest.get(query_url, headers=headers)

        # Error handling using HTTP status codes
        if response.code < 200 or response.code > 206:  # 200 = HTTP OK
            raise APIException("HTTP Response Not OK", response.code, response.body)

        return response.body
    def get_occurrence_inventories_list_count_by_dataset(self,
                                                         options=dict()):
        """Does a GET request to /occurrence/counts/datasets.

        Lists occurrence counts for datasets that cover a given taxon or
        country.

        Args:
            options (dict, optional): Key-value pairs for any of the
                parameters to this API Endpoint. All parameters to the
                endpoint are supplied through the dictionary with their names
                being the key and their desired values being the value. A list
                of parameters that can be used are::

                    country -- string -- The 2-letter country code (as per
                        ISO-3166-1) of the country in which the occurrence was
                        recorded.
                    taxon_key -- int -- A taxon key from the GBIF backbone.
                        All included and synonym taxa are included in the
                        search, so a search for aves with taxonKey=212 (i.e.
                        /occurrence/search?taxonKey=212) will match all birds,
                        no matter which species.

        Returns:
            mixed: Response from the API. 

        Raises:
            APIException: When an error occurs while fetching the data from
                the remote API. This exception includes the HTTP Response
                code, an error message, and the HTTP body that was received in
                the request.

        """
        # The base uri for api requests
        query_builder = Configuration.BASE_URI
 
        # Prepare query string for API call
        query_builder += "/occurrence/counts/datasets"

        # Process optional query parameters
        query_builder = APIHelper.append_url_with_query_parameters(query_builder, {
            "country":  options.get('country', None) if options.get('country', None) is not None else "NZ",
            "taxonKey": options.get('taxon_key', None)
        })

        # Validate and preprocess url
        query_url = APIHelper.clean_url(query_builder)

        # Prepare headers
        headers = {
            "user-agent": "APIMATIC 2.0",
            "accept": "application/json"
        }

        # Prepare and invoke the API call request to fetch the response
        response = unirest.get(query_url, headers=headers)

        # Error handling using HTTP status codes
        if response.code < 200 or response.code > 206:  # 200 = HTTP OK
            raise APIException("HTTP Response Not OK", response.code, response.body) 
    
        return response.body