Beispiel #1
0
    def test_encode_adds_extra_data_provided_to_swagger_object(self):
        expected = {'foo': 'bar'}
        with patch('rest_framework_swagger.renderers.generate_swagger_object',
                   return_value={}):
            result = self.sut(coreapi.Document(), **expected)

        self.assertEqual(force_bytes(json.dumps(expected)), result)
Beispiel #2
0
    def test_encode_generates_swagger_object_when_given_valid_document(self):
        expected = {'fizz': 'buzz'}
        with patch('rest_framework_swagger.renderers.generate_swagger_object',
                   return_value={'fizz': 'buzz'}):
            result = self.sut(coreapi.Document())

        self.assertEqual(force_bytes(json.dumps(expected)), result)
Beispiel #3
0
    def encode(self, document):
        """Transform an :class:`.Swagger` object to a sequence of bytes.

        Also performs validation and applies settings.

        :param openapi.Swagger document: Swagger spec object as generated by :class:`.OpenAPISchemaGenerator`
        :return: binary encoding of ``document``
        :rtype: bytes
        """
        if not isinstance(document, openapi.Swagger):
            raise TypeError("Expected a `openapi.Swagger` instance")

        spec = self.generate_swagger_object(document)
        errors = {}
        for validator in self.validators:
            try:
                # validate a deepcopy of the spec to prevent the validator from messing with it
                # for example, swagger_spec_validator adds an x-scope property to all references
                VALIDATORS[validator](copy.deepcopy(spec))
            except SwaggerValidationError as e:
                errors[validator] = str(e)

        if errors:
            exc = SwaggerValidationError(
                "spec validation failed: {}".format(errors), errors, spec,
                self)
            logger.warning(str(exc))
            raise exc

        return force_bytes(self._dump_dict(spec))
Beispiel #4
0
    def encode(self, document, **options):
        if not isinstance(document, coreapi.Document):
            raise TypeError('Expected a `coreapi.Document` instance')

        data = generate_swagger_object(document)
        data.update(**options)

        return force_bytes(json.dumps(data))
    def render(self, data, accepted_media_type=None, renderer_context=None):
        codec = OpenAPICodec()
        data = json.loads(codec.dump(data))

        if swagger_settings.SECURITY_DEFINITIONS:
            data['securityDefinitions'] = swagger_settings.SECURITY_DEFINITIONS

        return force_bytes(json.dumps(data))
Beispiel #6
0
    def encode(self, document, extra=None, **options):
        if not isinstance(document, Document):
            raise TypeError('Expected a `coreapi.Document` instance')

        data = _generate_openapi_object(document)
        if isinstance(extra, dict):
            data.update(extra)

        return force_bytes(json.dumps(data))
    def encode(self, document, extra=None, **options):
        if not isinstance(document, coreapi.Document):
            raise TypeError('Expected a `coreapi.Document` instance')

        data = generate_swagger_object(document)
        if isinstance(extra, dict):
            data.update(extra)

        return force_bytes(json.dumps(data))
    def test_encode_generates_swagger_object_when_given_valid_document(self):
        expected = {'fizz': 'buzz'}
        with patch(
            'rest_framework_swagger.renderers.generate_swagger_object',
            return_value={'fizz': 'buzz'}
        ):
            result = self.sut(coreapi.Document())

        self.assertEqual(force_bytes(json.dumps(expected)), result)
    def test_encode_adds_extra_data_provided_to_swagger_object(self):
        expected = {'foo': 'bar'}
        with patch(
            'rest_framework_swagger.renderers.generate_swagger_object',
            return_value={}
        ):
            result = self.sut(coreapi.Document(), extra=expected)

        self.assertEqual(force_bytes(json.dumps(expected)), result)
Beispiel #10
0
    def encode(self, document, extra=None, **options):
        if not isinstance(document, coreapi.Document):
            raise TypeError('Expected a `coreapi.Document` instance')

        data = generate_swagger_object(document)
        if isinstance(extra, dict):
            merge_dicts(data, extra, force=True)

        return force_bytes(json.dumps(data))
 def teardown_class(cls):
     with open('swagger.json', 'w') as f:
         data = force_bytes(json.dumps(cls.JSON, cls=i18nEncoder, indent=2))
         # replace ISO dates w/ the same value so we don't generate
         # needless diffs
         data = re.sub(
             '[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]+Z',
             '2018-02-01T08:00:00.000000Z', data)
         f.write(data)
Beispiel #12
0
def dump_history(history):
    history_data = {
        'items': [
            {'url': doc.url, 'title': doc.title}
            for active, doc in history.get_items()
        ],
        'idx': history._idx,
        'max_items': history.max_items
    }
    return force_bytes(json.dumps(history_data))
    def load_swagger_json(self, doc):
        """
        加载自定义swagger.json文档
        """
        data = generate_swagger_object(doc)

        # data['paths'].update(path_dict.pop('paths'))
        # data.update(path_dict)
        data['paths'] = path_dict
        return OpenAPICodec().decode(force_bytes(json.dumps(data)))
Beispiel #14
0
    def load_swagger_json(self, doc):
        """
        加载自定义swagger.json文档
        """
        data = generate_swagger_object(doc)
        with open(settings.API_DOC_PATH) as s:
            doc_json = json.load(s, object_pairs_hook=OrderedDict)

        data['paths'].update(doc_json.pop('paths'))
        data.update(doc_json)
        return OpenAPICodec().decode(force_bytes(json.dumps(data)))
Beispiel #15
0
    def encode(self, document, extra=None, **options):
        if not isinstance(document, Document):
            raise TypeError('Expected a `coreapi.Document` instance')

        data = _generate_openapi_object(document)
        if isinstance(extra, dict):
            data.update(extra)

        # out = yaml.dump(data)
        out = ordered_dump(data, Dumper=yaml.SafeDumper)
        return force_bytes(out)
Beispiel #16
0
 def teardown_class(cls):
     with open('swagger.json', 'w') as f:
         data = force_bytes(json.dumps(cls.JSON, cls=i18nEncoder, indent=2))
         # replace ISO dates w/ the same value so we don't generate
         # needless diffs
         data = re.sub(
             r'[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]+Z',
             r'2018-02-01T08:00:00.000000Z', data)
         data = re.sub(r'''(\s+"client_id": ")([a-zA-Z0-9]{40})("\,\s*)''',
                       r'\1xxxx\3', data)
         f.write(data)
Beispiel #17
0
    def encode(self, document, **options):
        import coreapi
        from coreapi.compat import force_bytes
        from openapi_codec.encode import generate_swagger_object

        if not isinstance(document, coreapi.Document):
            raise TypeError('Expected a `coreapi.Document` instance')

        data = generate_swagger_object(document)
        data.update(**options)

        return force_bytes(json.dumps(data))
Beispiel #18
0
def dump_history(history):
    history_data = {
        'items': [{
            'url': doc.url,
            'title': doc.title
        } for active, doc in history.get_items()],
        'idx':
        history._idx,
        'max_items':
        history.max_items
    }
    return force_bytes(json.dumps(history_data))
Beispiel #19
0
    def encode(self, document, **options):
        import coreapi
        from coreapi.compat import force_bytes
        from openapi_codec.encode import generate_swagger_object

        if not isinstance(document, coreapi.Document):
            raise TypeError('Expected a `coreapi.Document` instance')

        data = generate_swagger_object(document)
        data.update(**options)

        return force_bytes(json.dumps(data))
Beispiel #20
0
    def encode(self, document, **options):
        if not isinstance(document, coreapi.Document):
            raise TypeError('Expected a `coreapi.Document` instance')

        data = generate_swagger_object(document)
        if settings.SECURITY_DEFINITIONS:
            security_key = settings.SECURITY_DEFINITIONS.keys()[0]
            for k1 in data['paths']:
                for k2 in data['paths'][k1]:
                    data['paths'][k1][k2]['security'] = [{security_key: []}]
        data.update(**options)

        return force_bytes(json.dumps(data))
Beispiel #21
0
    def encode(self, document, extra=None, **options):
        if not isinstance(document, coreapi.Document):
            raise TypeError('Expected a `coreapi.Document` instance')

        data = generate_swagger_object(document)
        data['info']['version'] = document._version
        data['info']['description'] = document.description
        if isinstance(extra, dict):
            data.update(extra)
        else:
            raise TypeError('`extra` should be a `dict` instance')

        return force_bytes(json.dumps(data))
Beispiel #22
0
    def encode(self, document, **options):
        if not isinstance(document, Document):
            raise TypeError('Expected a `coreapi.Document` instance')

        indent = options.get('indent', None)

        kwargs = {
            'ensure_ascii': False,
            'indent': indent,
            'separators': indent and VERBOSE_SEPARATORS or COMPACT_SEPARATORS
        }

        global_formats = options.get('formats', [])
        spore_settings = options.get('settings', [])

        data = generate_spore_object(document, global_formats, spore_settings)
        return force_bytes(json.dumps(data, **kwargs))
Beispiel #23
0
    def encode(self, document):
        """Transform an :class:`.Swagger` object to a sequence of bytes.

        Also performs validation and applies settings.

        :param openapi.Swagger document: Swagger spec object as generated by :class:`.OpenAPISchemaGenerator`
        :return: binary encoding of ``document``
        :rtype: bytes
        """
        if not isinstance(document, openapi.Swagger):
            raise TypeError('Expected a `openapi.Swagger` instance')

        spec = self.generate_swagger_object(document)
        for validator in self.validators:
            # validate a deepcopy of the spec to prevent the validator from messing with it
            # for example, swagger_spec_validator adds an x-scope property to all references
            VALIDATORS[validator](copy.deepcopy(spec), self)
        return force_bytes(self._dump_dict(spec))
Beispiel #24
0
    def dump(self, document, indent=False, **kwargs):
        """
        Takes a document and returns a bytestring.
        """
        if indent:
            options = {
                'ensure_ascii': False,
                'indent': 4,
                'separators': VERBOSE_SEPARATORS
            }
        else:
            options = {
                'ensure_ascii': False,
                'indent': None,
                'separators': COMPACT_SEPARATORS
            }

        data = _document_to_primative(document)
        return force_bytes(json.dumps(data, **options))
Beispiel #25
0
    def dump(self, document, indent=False, **kwargs):
        """
        Takes a document and returns a bytestring.
        """
        if indent:
            options = {
                'ensure_ascii': False,
                'indent': 4,
                'separators': VERBOSE_SEPARATORS
            }
        else:
            options = {
                'ensure_ascii': False,
                'indent': None,
                'separators': COMPACT_SEPARATORS
            }

        data = _document_to_primative(document)
        return force_bytes(json.dumps(data, **options))
Beispiel #26
0
    def encode(self, document, **options):
        """
        Takes a document and returns a bytestring.
        """
        indent = options.get("indent")

        if indent:
            kwargs = {
                "ensure_ascii": False,
                "indent": 4,
                "separators": VERBOSE_SEPARATORS,
            }
        else:
            kwargs = {
                "ensure_ascii": False,
                "indent": None,
                "separators": COMPACT_SEPARATORS,
            }

        data = _document_to_primitive(document)
        return force_bytes(json.dumps(data, **kwargs))
Beispiel #27
0
def sendEmail(request, user, subject, template, *args):
    mail_subject = subject
    from_email = settings.EMAIL_HOST_USER
    key = {
        'uid': urlsafe_base64_encode(force_bytes(user.pk)),
        'token': account_activation_token.make_token(user),
    }
    html_content = render_to_string(
        template, {
            'user': user,
            'domain': request.get_host(),
            'uid': key['uid'],
            'token': key['token'],
            "password": args[0]
        })
    text_content = strip_tags(html_content)
    to_email = user.email
    mail.send_mail(mail_subject,
                   text_content,
                   from_email, [to_email],
                   html_message=html_content,
                   fail_silently=True)
Beispiel #28
0
def set_headers(headers):
    headers_file = open(headers_path, 'wb')
    headers_file.write(force_bytes(json.dumps(headers)))
    headers_file.close()
Beispiel #29
0
 def dump(self, document, **kwargs):
     data = generate_swagger_object(document)
     return force_bytes(json.dumps(data))
Beispiel #30
0
 def dump(self, document, **kwargs):
     converter = DocumentToSwaggerConverter(document)
     return force_bytes(json.dumps(converter.convert()))
Beispiel #31
0
 def dump(self, document, **kwargs):
     converter = DocumentToSwaggerConverter(document)
     return force_bytes(json.dumps(converter.convert()))
def set_bookmarks(bookmarks):
    bookmarks_file = open(bookmarks_path, 'wb')
    bookmarks_file.write(force_bytes(json.dumps(bookmarks)))
    bookmarks_file.close()
def set_headers(headers):
    headers_file = open(headers_path, 'wb')
    headers_file.write(force_bytes(json.dumps(headers)))
    headers_file.close()
def set_credentials(credentials):
    store = open(credentials_path, 'wb')
    store.write(force_bytes(json.dumps(credentials)))
    store.close
 def dump(self, data):
     return force_bytes(json.dumps(data))
 def teardown_class(cls):
     with open('swagger.json', 'w') as f:
         f.write(force_bytes(json.dumps(cls.JSON, cls=i18nEncoder)))
Beispiel #37
0
def set_credentials(credentials):
    store = open(credentials_path, 'wb')
    store.write(force_bytes(json.dumps(credentials)))
    store.close
 def encode(self, document, **options):
     if not isinstance(document, Document):
         raise TypeError('Expected a `coreapi.Document` instance')
     data = generate_swagger_object(document)
     return force_bytes(json.dumps(data))
Beispiel #39
0
def set_bookmarks(bookmarks):
    bookmarks_file = open(bookmarks_path, 'wb')
    bookmarks_file.write(force_bytes(json.dumps(bookmarks)))
    bookmarks_file.close()
Beispiel #40
0
 def encode_error(self, err):
     """Dump an error message into an encoding-appropriate sequence of bytes"""
     return force_bytes(self._dump_dict(err))
Beispiel #41
0
 def dump(self, document, **kwargs):
     data = generate_swagger_object(document)
     return force_bytes(json.dumps(data))