Makes sure the request has a valid authorization jwt before calling the wrapped function.
        It does this by checking the timestamp of the last jwt and if > 10 minutes have elapsed,
        it refreshes it's existing jwt from the server.
        Args:
            f: Function to wrap

        Returns:
            Function, f

def _auth(f):
        """
        Makes sure the request has a valid authorization jwt before calling the wrapped function.
        It does this by checking the timestamp of the last jwt and if > 10 minutes have elapsed,
        it refreshes it's existing jwt from the server.
        Args:
            f: Function to wrap

        Returns:
            Function, f
        """
        @wraps(f)
        def method(self, *args, **kwargs):
            if not self._auth_token or datetime.utcnow() >= self._last_auth + timedelta(minutes=10):
                # Need to get new jwt
                self.auth_refresh()

            return f(self, *args, **kwargs)
        return method