예제 #1
0
    def response_success(self, record_key, **kwargs):
        key_settings = self.settings.keys[record_key]
        if key_settings.success_redirect:
            return self.response_redirect(key_settings.success_redirect,
                                          **kwargs)

        body = self.get_success_template(record_key).render(**kwargs)
        return skygear.Response(body, content_type='text/html')
예제 #2
0
def response_url_redirect(url, **kwargs):
    parsed_url = urlparse(url)

    query_list = parse_qsl(parsed_url.query)
    for key, value in kwargs.items():
        query_list.append((key, value))

    new_url = ParseResult(parsed_url.scheme, parsed_url.netloc,
                          parsed_url.path, parsed_url.params,
                          urlencode(query_list), parsed_url.fragment)

    return skygear.Response(status=302,
                            headers=[('Location', new_url.geturl())])
예제 #3
0
def response_params_error(template_provider, settings, **kwargs):
    kwargs['error'] = 'Invalid URL'

    # filter some kwargs since some are not capable to be embedded in url
    # for redirection
    filtered_kwargs = {
        'error': kwargs['error'],
    }

    if settings.error_redirect:
        return response_url_redirect(settings.error_redirect,
                                     **filtered_kwargs)
    body = template_provider.\
        get_template('reset_password_error').\
        render(**kwargs)
    return skygear.Response(body, status=400, content_type='text/html')
예제 #4
0
    def __call__(self, request):
        # extract useful http headers
        ips = request.headers.get('x-forwarded-for')

        # parse body
        bytes = request.get_data()
        json_str = bytes.decode('utf-8')
        parsed = json.loads(json_str)

        events = parsed['events']
        event_tracking_request = EventTrackingRequest(
            http_header_ips=ips,
            json_events=events,
        )
        logger.debug('event_tracking_request: %s', event_tracking_request)
        self._writer.process_request(event_tracking_request)
        return skygear.Response(status=200)
예제 #5
0
def response_success(template_provider, settings, **kwargs):
    # filter some kwargs since some are not capable to be embedded in url
    # for redirection
    filtered_kwargs = {
        'code': kwargs['code'],
        'user_id': kwargs['user_id'],
        'expire_at': kwargs['expire_at'],
    }

    if settings.success_redirect:
        return response_url_redirect(settings.success_redirect,
                                     **filtered_kwargs)

    body = template_provider.\
        get_template('reset_password_success').\
        render(**kwargs)

    return skygear.Response(body, content_type='text/html')
예제 #6
0
    def response_error(self, record_key=None, **kwargs):
        error_redirect = None
        if record_key:
            key_settings = self.settings.keys[record_key]
            error_redirect = key_settings.error_redirect

        # fallback to verify user error redirect if key setting is empty
        if not error_redirect:
            error_redirect = self.settings.error_redirect

        # get_error_template handles whether record_key is or is not empty
        template = self.get_error_template(record_key)

        if error_redirect:
            return self.response_redirect(error_redirect, **kwargs)

        body = template.render(**kwargs)
        return skygear.Response(body, status=400, content_type='text/html')
예제 #7
0
def response_form(template_provider, **kwargs):
    body = template_provider.\
        get_template('reset_password_form').\
        render(**kwargs)
    return skygear.Response(body, content_type='text/html')