def businesses_get(request): """ Returns the businesses location format = [lng, lat] use limit and offset to paginate:: http://localhost:8000/api/v1/businesses?limit=100&offset=0 to restrict results withing a distance from a location use lat, lng, distance, and units:: http://localhost:8000/api/v1/businesses?lng=-73.988395&lat=40.7461666&distance=3 returns ======= :: { "businesses": [{ "rating": 2.25, "modified": "2015-08-10T00:20:14.370000", "address": { "street1": "Time Square", "postal_code": "", "street2": "", "city": "New York", "state": "NY" }, "id": "55c7ee3efad9b43993d7190f", "location": [ -73.985131, 40.758895 ], "tags": [ "hello", "world", "example", "awesome" ], "name": "Time Square", "created": "2015-08-10T00:20:13.760000" }], "count": 1 } """ location = [] lat = request.validated['lat'] lng = request.validated['lng'] distance = request.validated['distance'] units = request.validated['units'] limit = request.validated['limit'] offset = request.validated['offset'] # set location only if both lat and lng if lat and lng: location = [lng, lat] businesses = Business.businesses(location=location, distance=distance, units=units, limit=limit, offset=offset) # get business count to help pagination if location: # TODO: this count is wrong when location limiting businesses_count = len(businesses) else: businesses_count = Business.count() businesses_jsonable = [] for business in businesses: businesses_jsonable.append(business.toJSON()) response_body = { 'businesses': businesses_jsonable, 'count': businesses_count, } logger.debug('Retrieved businesses') request.response.body = json.dumps(response_body, cls=ComplexEncoder) request.response.content_type = 'application/json' return request.response