def geolocate_post(request): data = request.validated session = request.db_slave_session result = None api_key = request.GET.get('key', None) if api_key is not None: if data['wifiAccessPoints']: result = search_wifi_ap(session, data) else: result = search_cell_tower(session, data) else: result = HTTPBadRequest() result.content_type = 'application/json' result.body = NO_API_KEY return result if result is None: result = HTTPNotFound() result.content_type = 'application/json' result.body = NOT_FOUND return result return { "location": { "lat": result['lat'], "lng": result['lon'], }, "accuracy": float(result['accuracy']), }
def geolocate_view(request): api_key = request.GET.get('key', None) heka_client = get_heka_client() if api_key is None: heka_client.incr('geolocate.no_api_key') result = HTTPBadRequest() result.content_type = 'application/json' result.body = NO_API_KEY return result heka_client.incr('geolocate.api_key.%s' % api_key.replace('.', '__')) data, errors = preprocess_request( request, schema=GeoLocateSchema(), extra_checks=(geolocate_validator, ), response=JSONError, ) session = request.db_slave_session result = None if data['wifiAccessPoints']: result = search_wifi_ap(session, data) if result is not None: heka_client.incr('geolocate.wifi_hit') else: result = search_cell_tower(session, data) if result is not None: heka_client.incr('geolocate.cell_hit') if result is None and request.client_addr: result = search_geoip(request.registry.geoip_db, request.client_addr) if result is not None: heka_client.incr('geolocate.geoip_hit') if result is None: heka_client.incr('geolocate.miss') result = HTTPNotFound() result.content_type = 'application/json' result.body = NOT_FOUND return result return { "location": { "lat": result['lat'], "lng": result['lon'], }, "accuracy": float(result['accuracy']), }
def echo_json_ignore_extra_data(request): try: return parser.parse(hello_exclude_schema, request) except json.JSONDecodeError: error = HTTPBadRequest() error.body = json.dumps(["Invalid JSON."]).encode("utf-8") error.content_type = "application/json" raise error
def echo_json_or_form(request): try: return parser.parse(hello_args, request, location="json_or_form") except json.JSONDecodeError: error = HTTPBadRequest() error.body = json.dumps(["Invalid JSON."]).encode("utf-8") error.content_type = "application/json" raise error
def closure(request, *args, **kwargs): api_key = request.GET.get('key', None) heka_client = get_heka_client() if api_key is None: heka_client.incr('%s.no_api_key' % func_name) if error_on_invalidkey: result = HTTPBadRequest() result.content_type = 'application/json' result.body = NO_API_KEY return result else: session = request.db_slave_session found_key_filter = session.query(ApiKey) found_key_filter = found_key_filter.filter(ApiKey.valid_key == api_key) if found_key_filter.count(): heka_client.incr('%s.api_key.%s' % (func_name, api_key.replace('.', '__'))) else: heka_client.incr('%s.unknown_api_key' % func_name) return func(request, *args, **kwargs)
def invalid_api_key(self): response = HTTPBadRequest() response.content_type = 'application/json' response.body = INVALID_API_KEY return response
def invalid_api_key_response(): result = HTTPBadRequest() result.content_type = 'application/json' result.body = INVALID_API_KEY return result