sitch-io/sensor

View on GitHub
sitch/sitchlib/gps_decomposer.py

Summary

Maintainability
B
4 hrs
Test Coverage
"""Decompose GPS Events."""


class GpsDecomposer(object):
    """GPS Decomposer."""

    @classmethod
    def decompose(cls, scan_document):
        """Decompose a GPS event.

        Args:
            scan_document (dict): Geo json from GPS device.

        Returns:
            list: One two-item tuple in list.  Position 0 is `gps`, position 1
                is the validated geo scan.  If the scan doesn't validate, an
                empty list is returned.
        """
        results_set = [("gps", scan_document)]
        if not GpsDecomposer.scan_document_is_valid(scan_document):
            print("GpsDecomposer: Bad GPS fix: %s" % (scan_document))
            return []
        else:
            return results_set

    @classmethod
    def scan_document_is_valid(cls, scan_document):
        """Validate the scan document."""
        is_valid = False
        if "location" in scan_document:
            if "coordinates" in scan_document["location"]:
                if scan_document["location"]["coordinates"] != [0, 0]:
                    is_valid = True
        return is_valid