def collection_get(request): collection_name = request.matchdict['collection_name'] sync_client = build_sync_client(request) params = {} if '_since' in request.GET: params['newer'] = request.GET['_since'] if '_limit' in request.GET: params['limit'] = request.GET['_limit'] if '_token' in request.GET: params['offset'] = request.GET['_token'] if '_sort' in request.GET: if request.GET['_sort'] in ('-last_modified', 'newest'): params['sort'] = 'newest' elif request.GET['_sort'] in ('-sortindex', 'index'): params['sort'] = 'index' else: error_msg = ("_sort should be one of ('-last_modified', 'newest', " "'-sortindex', 'index')") raise_invalid(request, location="querystring", name="_sort", description=error_msg) if 'ids' in request.GET: try: params['ids'] = [uuid4_to_base64(record_id.strip()) for record_id in request.GET['ids'].split(',') if record_id] except ValueError: raise_invalid(request, location="querystring", name="ids", description="Invalid id in ids list.") records = sync_client.get_records(collection_name, full=True, **params) for r in records: r['last_modified'] = int(r.pop('modified') * 1000) r['id'] = base64_to_uuid4(r.pop('id')) # Configure headers convert_headers(sync_client.raw_resp, request.response) return {'data': records}
def record_get(request): collection_name = request.matchdict['collection_name'] record_id = request.matchdict['record_id'] sync_id = uuid4_to_base64(record_id) sync_client = build_sync_client(request) record = sync_client.get_record(collection_name, sync_id) record['last_modified'] = int(record.pop('modified') * 1000) record['id'] = base64_to_uuid4(record.pop('id')) # Configure headers convert_headers(sync_client.raw_resp, request.response) return {'data': record}
def record_put(request): collection_name = request.matchdict['collection_name'] record_id = request.matchdict['record_id'] sync_id = uuid4_to_base64(record_id) if_unmodified_since = request.headers.get('If-Match') record = request.validated['data'] record['id'] = sync_id sync_client = build_sync_client(request) last_modified = sync_client.put_record(collection_name, record, if_unmodified_since) record['last_modified'] = int(last_modified * 1000) record['id'] = record_id # Configure headers convert_headers(sync_client.raw_resp, request.response) return {'data': record}