def fetchData(url, river, stream, aggregate, params=None): client = RiverViewClient(url) r = client.river(river) s = r.stream(stream) cursor = s.data(**params) type = cursor.get("type") # if params is None and aggregate is None: # params = {'limit': DEFAULT_DATA_LIMIT} # targetUrl = "%s/%s/%s/data.json" % (url, river, stream) # if aggregate: # targetUrl += "?aggregate=%s" % aggregate # print "Fetching data from %s..." % targetUrl # response = requests.get(targetUrl, params=params) # if response.status_code == 404: # raise Exception('The River or stream provided does not exist:\n%s' # % targetUrl) # data = response.json() if not type == 'scalar' and aggregate is None: raise Exception('Cannot process Rivers unless they are scalar.\n%s does ' 'not return scalar data.' % river) return cursor
def kwargsToString(**kwargs): out = [] for key, value in kwargs.iteritems(): out.append("%s:%s" % (key, value)) return "[%s]" % (", ".join(out)) # url = "http://localhost:8085/" url = None client = RiverViewClient(url=url, debug=True) r = client.river("mn-traffic-sensors") for stream in r.streams(): print stream.meta() class RiverViewHarness(object): def __init__(self, client): self._client = client def run(self, river, stream, fn, **kwargs): print "Running harness (%s %s): %s %s" \ % (river, stream, fn.__name__, kwargsToString(**kwargs))