def get_target_delivery_response(get_offers_options, request_id, views): target_delivery_response = target_service.prefetch_views_target_delivery_response(request, request_id, get_offers_options, views) response = Response(target_delivery_response.get("response").to_str(), status=200, mimetype='application/json') set_target_cookies(response, target_delivery_response) return response
def execute_page_load(): """ Make an execute pageload request to get all initial offers at page load time, get cookies for request if they exist, and on response set Target cookie for use with next request """ get_offers_options = initialize_options(request) target_delivery_response = target_service.get_page_load_target_delivery_response(request, get_offers_options) response = Response(target_delivery_response.get("response").to_str(), status=200, mimetype='application/json') set_target_cookies(response, target_delivery_response) return response
def execute_mbox(): """ Make an execute mboxes request, get cookies for request if they exist, and on response set Target cookie for use with next request """ get_offers_options = initialize_options(request) mboxes = request.args.get("mbox", "") if not mboxes: return Response("No Content", status=204) execute_mboxes = [MboxRequest(name=mbox, index=index) for index, mbox in enumerate(mboxes.split(","))] target_delivery_response = target_service.get_mbox_target_delivery_response(request, get_offers_options, execute_mboxes=execute_mboxes) response = Response(target_delivery_response.get("response").to_str(), status=200, mimetype='application/json') set_target_cookies(response, target_delivery_response) return response
def send_notifications(): """ Takes a payload based on response from a prefetch request (in json format) from previous get_offers call, converts it to a PrefetchResponse object, uses it to create DeliveryRequest with notifications, and makes a send_notifications call. This implementation makes a synchronous call, but async execution is supported via ether callback or asyncio's async/await. See prefetch_view() and prefetch_view_asyncio() above for examples of both async implementations. """ send_notifications_options = initialize_options(request) notifications_dict = request.get_json(force=True) notifications = [] if notifications_dict.get("views"): notifications.extend(_get_all_view_notifications(notifications_dict.get("views"))) if notifications_dict.get("mboxes"): notifications.extend(_get_all_mbox_notifications(notifications_dict.get("mboxes"))) target_delivery_response = target_service.send_notifications(request, send_notifications_options, notifications) response = Response(target_delivery_response.get("response").to_str(), status=200, mimetype='application/json') set_target_cookies(response, target_delivery_response) return response
def prefetch_mbox(): """ Make a single request that includes both execute mboxes request as well as prefetch mboxes request. Get cookies for request if they exist, and on response set Target cookie for use with next request """ get_offers_options = initialize_options(request) mboxes = request.args.get("mbox", "") prefetch = request.args.get("prefetch", "") if not mboxes and not prefetch: return Response("No Content", status=204) execute_mboxes = [MboxRequest(name=mbox, index=index) for index, mbox in enumerate(mboxes.split(","))] \ if mboxes else None prefetch_mboxes = [MboxRequest(name=mbox, index=index) for index, mbox in enumerate(prefetch.split(","))] \ if prefetch else None target_delivery_response = target_service.get_mbox_target_delivery_response(request, get_offers_options, execute_mboxes=execute_mboxes, prefetch_mboxes=prefetch_mboxes) response = Response(target_delivery_response.get("response").to_str(), status=200, mimetype='application/json') set_target_cookies(response, target_delivery_response) return response
def get_offers_callback(request_id, target_delivery_response): response = Response(target_delivery_response.get("response").to_str(), status=200, mimetype='application/json') set_target_cookies(response, target_delivery_response) results[request_id] = response