Пример #1
0
    def get_user_data(self, auth_code):
        token = requests.post(
            f'https://{self.client_url}/oauth/token',
            data={
                'grant_type': 'authorization_code',
                'client_id': self.client_id,
                'client_secret': self.client_secret,
                'code': auth_code,
                'redirect_uri': self.callback_uri,
            })

        if not token.ok:
            raise falcon.HTTPTemporaryRedirect('/auth/login')

        return token.json()
Пример #2
0
    def on_post(self, req, response, cmd="[None]"):
        cmd = cmd.lower()
        if cmd == "gen_image":
            return self.on_get(req, response, cmd=cmd)
        if cmd == "generate_link":
            scale = req.get_param("scale", default=1.0)
            scale = parse_image_scale(scale)

            image_type = req.get_param("type", default="png").lower()
            verify_image_type(image_type)

            auto_redirect = req.get_param_as_bool("redirect")

            code = req.get_param("code")
            if code is None:
                code = req.bounded_stream.read(32768)
            try:
                generate_image("svg", 1.0, code)
            except ImageGenerationFailed:
                raise falcon.HTTPInternalServerError(
                    title="Invalid WaveDrom code",
                    description=
                    "The WaveDrom code you submitted cannot be parsed by the WaveDrom generator"
                )

            compressed_code = compress_text(
                (code.decode() if isinstance(code, bytes) else code).strip())

            url = "{hosturl}/rest/gen_image?{options}".format(
                hosturl=derive_host_url(req),
                options=urlencode({
                    "type": image_type,
                    "scale": scale,
                    "c": compressed_code
                }))

            if auto_redirect:
                raise falcon.HTTPTemporaryRedirect(url)

            response.content_type = falcon.MEDIA_TEXT
            response.body = url
        else:
            raise falcon.HTTPNotFound(
                title="invalid command",
                description="post command {} does not exist".format(cmd))
Пример #3
0
    def on_get(self, req, resp, pid, dsid):
        """
        Dump datastream content.
        """
        try:
            info = self._get_ds_dissemination(req, pid, dsid)
            if info is None:
                logger.debug('No location or stream for %s on %s.', dsid, pid)
                return
        except ObjectDoesNotExistError:
            logger.info(('Did not get datastream dissemination for %s as the '
                         'object %s did not exist.'), dsid, pid)
            _send_object_404(pid, resp)
        except DatastreamDoesNotExistError as e:
            resp.content_type = 'text/plain'
            logger.info(('Datastream content not retrieved: %s not found on %s'
                         ' as of %s.'), e.dsid, e.pid, e.time)
            resp.body = 'Datastream {} not found on {} as of {}.'.format(
                e.dsid, e.pid, e.time)
            raise falcon.HTTPNotFound() from e

        try:
            resp.content_type = info['mime']
        except KeyError:
            pass
        if 'location' in info:
            logger.info('Redirecting %s on %s to %s.', dsid, pid,
                        info['location'])
            raise falcon.HTTPTemporaryRedirect(info['location'])
        else:
            try:
                resp.stream = info['stream']
                resp.stream_len = getsize(info['stream'].name)
            except KeyError:
                pass

        logger.info('Retrieved datastream content for %s on %s.', dsid, pid)
Пример #4
0
 def on_delete(self, req, resp):
     raise falcon.HTTPTemporaryRedirect('/tmp/redirect')
Пример #5
0
 def on_delete(self, req, resp):
     raise falcon.HTTPTemporaryRedirect('/tmp/redirect',
                                        headers={'foo': 'bar'})
Пример #6
0
def _default_failed(req, resp, error, message, **kwargs):
    raise falcon.HTTPTemporaryRedirect('/')
Пример #7
0
 def on_post(self, req, response):
     raise falcon.HTTPTemporaryRedirect(self.path)
Пример #8
0
 def on_get(self, req: falcon.Request, resp: falcon.Response):
     raise falcon.HTTPTemporaryRedirect('/index.html')