def search_view(request): data, errors = preprocess_request( request, schema=SearchSchema(), accept_empty=True, ) data['geoip'] = request.client_addr session = request.db_slave_session result = PositionSearcher( { 'geoip': request.registry.geoip_db, 'session': session }, api_key_log=getattr(request, 'api_key_log', False), api_key_name=getattr(request, 'api_key_name', None), api_name='search', ).search(data) if not result: return {'status': 'not_found'} return { 'status': 'ok', 'lat': result['lat'], 'lon': result['lon'], 'accuracy': result['accuracy'], }
def search_view(request): api_key = request.GET.get('key', None) heka_client = get_heka_client() if api_key is None: # TODO: change into a better error response heka_client.incr('search.no_api_key') return {'status': 'not_found'} heka_client.incr('search.api_key') data, errors = preprocess_request( request, schema=SearchSchema(), extra_checks=(check_cell_or_wifi, ), ) session = request.db_slave_session result = None if data['wifi']: result = search_wifi(session, data) if result is not None: heka_client.incr('search.wifi_hit') if result is None: # no wifi result found, fall back to cell result = search_cell(session, data) if result is not None: heka_client.incr('search.cell_hit') if result is None and request.client_addr: # no cell or wifi, fall back again to geoip result = search_geoip(request.registry.geoip_db, request.client_addr) if result is not None: heka_client.incr('search.geoip_hit') if result is None: heka_client.incr('search.miss') return {'status': 'not_found'} return { 'status': 'ok', 'lat': result['lat'], 'lon': result['lon'], 'accuracy': result['accuracy'], }
def search_view(request): heka_client = get_heka_client() data, errors = preprocess_request( request, schema=SearchSchema(), extra_checks=(check_cell_or_wifi, ), ) session = request.db_slave_session result = None if data['wifi']: result = search_wifi(session, data) if result is not None: heka_client.incr('search.wifi_hit') if result is None: # no wifi result found, fall back to cell result = search_cell(session, data) if result is not None: heka_client.incr('search.cell_hit') if result is None: # no direct cell result found, try cell LAC result = search_cell_lac(session, data) if result is not None: heka_client.incr('search.cell_lac_hit') if result is None and request.client_addr: # no cell or wifi, fall back again to geoip result = search_geoip(request.registry.geoip_db, request.client_addr) if result is not None: heka_client.incr('search.geoip_hit') if result is None: heka_client.incr('search.miss') return {'status': 'not_found'} return { 'status': 'ok', 'lat': result['lat'], 'lon': result['lon'], 'accuracy': result['accuracy'], }
def search_view(request): data, errors = preprocess_request( request, schema=SearchSchema(), accept_empty=True, ) session = request.db_slave_session result = search_all_sources( session, 'search', data, client_addr=request.client_addr, geoip_db=request.registry.geoip_db, api_key_log=getattr(request, 'api_key_log', False), api_key_name=getattr(request, 'api_key_name', None)) if not result: return {'status': 'not_found'} return { 'status': 'ok', 'lat': result['lat'], 'lon': result['lon'], 'accuracy': result['accuracy'], }
def _make_schema(self): from ichnaea.service.search.schema import SearchSchema return SearchSchema()