コード例 #1
0
 def test_url_field_with_description(self):
     prop = field_to_property(
         fields.Url('endpoint', description='A description'))
     self.assertEqual(prop, {
         'type': 'string',
         'description': 'A description'
     })
コード例 #2
0
    def test_without_endpoint_invalid_object(self, app):
        app.add_url_rule('/<foo>', 'foobar', view_func=lambda x: x)
        field = fields.Url()

        with app.test_request_context('/foo'):
            with pytest.raises(fields.MarshallingError):
                field.output('foo', None)
コード例 #3
0
    def test_without_endpoint_absolute_scheme(self, app, mocker):
        app.add_url_rule('/<foo>', 'foobar', view_func=lambda x: x)
        field = fields.Url(absolute=True, scheme='https')
        obj = mocker.Mock(foo=42)

        with app.test_request_context('/foo', base_url='http://localhost'):
            assert 'https://localhost/42' == field.output('foo', obj)
コード例 #4
0
    def test_without_endpoint(self, app, mocker):
        app.add_url_rule('/<foo>', 'foobar', view_func=lambda x: x)
        field = fields.Url()
        obj = mocker.Mock(foo=42)

        with app.test_request_context('/foo'):
            assert '/42' == field.output('foo', obj)
コード例 #5
0
    def test_without_endpoint_absolute(self):
        self.app.add_url_rule('/<foo>', 'foobar', view_func=lambda x: x)
        field = fields.Url(absolute=True)
        obj = Mock(foo=42)

        with self.app.test_request_context('/foo'):
            assert_equal('http://localhost/42', field.output('foo', obj))
コード例 #6
0
    def test_without_endpoint(self):
        self.app.add_url_rule('/<foo>', 'foobar', view_func=lambda x: x)
        field = fields.Url()
        obj = Mock(foo=42)

        with self.app.test_request_context('/foo'):
            assert_equal('/42', field.output('foo', obj))
コード例 #7
0
    def test_invalid_object(self):
        self.app.add_url_rule('/<foo>', 'foobar', view_func=lambda x: x)
        field = fields.Url('foobar')

        with self.app.test_request_context('/'):
            with assert_raises(fields.MarshallingError):
                field.output('foo', None)
コード例 #8
0
    def test_absolute(self, app, mocker):
        app.add_url_rule('/<foo>', 'foobar', view_func=lambda x: x)
        field = fields.Url('foobar', absolute=True)
        obj = mocker.Mock(foo=42)

        with app.test_request_context('/'):
            assert 'http://localhost/42' == field.output('foo', obj)
コード例 #9
0
    def test_absolute_scheme(self, app, mocker):
        '''Url.scheme should override current_request.scheme'''
        app.add_url_rule('/<foo>', 'foobar', view_func=lambda x: x)
        field = fields.Url('foobar', absolute=True, scheme='https')
        obj = mocker.Mock(foo=42)

        with app.test_request_context('/', base_url='http://localhost'):
            assert 'https://localhost/42' == field.output('foo', obj)
コード例 #10
0
    def test_with_blueprint_invalid_object(self, app):
        bp = Blueprint('foo', __name__, url_prefix='/foo')
        bp.add_url_rule('/<foo>', 'foobar', view_func=lambda x: x)
        app.register_blueprint(bp)
        field = fields.Url()

        with app.test_request_context('/foo/foo'):
            with pytest.raises(fields.MarshallingError):
                field.output('foo', None)
コード例 #11
0
    def test_with_blueprint(self, app, mocker):
        bp = Blueprint('foo', __name__, url_prefix='/foo')
        bp.add_url_rule('/<foo>', 'foobar', view_func=lambda x: x)
        app.register_blueprint(bp)
        field = fields.Url()
        obj = mocker.Mock(foo=42)

        with app.test_request_context('/foo/foo'):
            assert '/foo/42' == field.output('foo', obj)
コード例 #12
0
    def test_with_blueprint_absolute_scheme(self, app, mocker):
        bp = Blueprint('foo', __name__, url_prefix='/foo')
        bp.add_url_rule('/<foo>', 'foobar', view_func=lambda x: x)
        app.register_blueprint(bp)
        field = fields.Url(absolute=True, scheme='https')
        obj = mocker.Mock(foo=42)

        with app.test_request_context('/foo/foo', base_url='http://localhost'):
            assert 'https://localhost/foo/42' == field.output('foo', obj)
コード例 #13
0
    def test_with_blueprint_absolute(self):
        bp = Blueprint('foo', __name__, url_prefix='/foo')
        bp.add_url_rule('/<foo>', 'foobar', view_func=lambda x: x)
        self.app.register_blueprint(bp)
        field = fields.Url(absolute=True)
        obj = Mock(foo=42)

        with self.app.test_request_context('/foo/foo'):
            assert_equal('http://localhost/foo/42', field.output('foo', obj))
コード例 #14
0
ファイル: dto.py プロジェクト: pmundt/image-builder
class BuildDto:
    api = Namespace('build', description='building docker images')

    git_context = api.model('git_build_context', {
        'dir_name': fields.String(required=True, description='name of dir, where build context content will be saved, '
                                                             'relative to Dockerfile'),

        'url': fields.String(required=True, description='Git url'),
        'username': fields.String(required=False, description='username for git'),
        'password': fields.String(required=False, description='password for git')
    })

    build_params = api.model('build_params', {
        'source_type': fields.String(required=True, description='"Dockerfile" or "tar"'),
        'source_url': fields.Url(required=True, description='url of Dockerfile or tar'),
        'source_username': fields.Url(required=False, description='username for Dockerfile or tar'),
        'source_password': fields.Url(required=False, description='password for Dockerfile or tar'),
        'build_context': fields.List(required=False, description='Build context, if building from Dockerfile',
                                     cls_or_instance=fields.Nested(git_context)),
        'target_image_name': fields.String(required=True, description='desired docker image name'),
        'target_image_tag': fields.String(required=False, default='latest', description='desired docker image tag')
    })
コード例 #15
0
    def create_many_response_model(self):
        """Creates the single response model.

        Returns:
            A `flask_resplus.Namespace.model` for a multuple entity's response body.
        """
        return self._api.model(
            self.__name__ + 'ManyResponse',
            dict(
                items=restplus_fields.List(restplus_fields.Nested(self.model)),
                count=restplus_fields.Integer,
                current=restplus_fields.Url(
                    example=
                    "https://api/example/?page=2&per_page=10&order_by=id&order_dir=asc"
                ),
                prev=restplus_fields.Url(
                    example=
                    "https://api/example/?page=1&per_page=10&order_by=id&order_dir=asc"
                ),
                next=restplus_fields.Url(
                    example=
                    "https://api/example/?page=3&per_page=10&order_by=id&order_dir=asc"
                )))
コード例 #16
0
class GetDatabases(Resource):

    dbres = api.model(
        'Source', {
            'uuid':
            fields.String(description='UUID of source'),
            'description':
            fields.String(description='Description of source'),
            'name':
            fields.String(description='Name of source'),
            'numberOfNetworks':
            fields.Integer(description='Number of networks in source'),
            'status':
            fields.String(description='ok if service is up, or error if down'),
            'endPoint':
            fields.Url(description='REST endpoint for service'),
            'version':
            fields.String(description='Version of service')
        })
    dblist = api.model('Sources', {
        'results': fields.List(fields.Nested(dbres)),
    })

    @api.doc('Gets ')
    @api.response(200, 'Success', dblist)
    @api.response(429, 'Too many requests', TOO_MANY_REQUESTS)
    @api.response(500, 'Internal server error', ERROR_RESP)
    def get(self):
        """
        Gets list of sources that can be queried

        Result in JSON which is a list of objects with uuid and display
        name for source that can be queried.


        """
        dr = InputSourceResults()

        if dr.status_code is 500:
            er = ErrorResponse()
            er.message = 'Internal server error'
            er.description = 'something good'
            return marshal(er, ERROR_RESP), dr.status_code

        return marshal(dr, GetDatabases.dblist), dr.status_code
コード例 #17
0
ファイル: run.py プロジェクト: ym-kang/vue_flask_test
class TodoD(Resource):
    class RandomNumber(fields.Raw):
        def output(self, key, obj):

            r = random.Random()
            r = r.random()
            print(r)
            return r

    test_model = api.model(
        'Model', {
            'counter': fields.String,
            'todos': fields.List(fields.Nested(TodoList.model_todo)),
            'uri': fields.Url("dao")
        })

    @api.marshal_with(test_model)
    def get(self):
        return DAO, 201
コード例 #18
0
from flask import Flask, request
from flask_restplus import Resource, Api, fields, reqparse
import resources
import s3
from error import _error

app = Flask(__name__)
api = Api(app, version='1.0', title='Dog Breed API')

dogSchema = api.model('dogSchema', {'imagePath': fields.Url('image_path')})


@api.route('/getDogBreed', methods=['POST'])
class Crowd(Resource):
    @api.expect(dogSchema)
    def post(self):
        parser = reqparse.RequestParser()
        parser.add_argument('imagePath',
                            required=True,
                            help="URL cannot be blank")
        args = parser.parse_args()

        inputrequest = args['imagePath']
        if (len(inputrequest)) != 0:
            filename = inputrequest.split("/")[-1]

            saveFile = s3.getImage(filename)
            if (saveFile == 200):
                print("file: " + filename)
                check = resources.run("s3_images/" + filename)
                return check
コード例 #19
0
 def test_defaults(self):
     field = fields.Url('endpoint')
     assert not field.required
     assert field.__schema__ == {'type': 'string'}
コード例 #20
0
# -*- coding: utf-8 -*-

from flask_restplus import fields
from . import api

user_post = api.model('User post', {
    'username': fields.String(required=True, min_length=3, max_length=32, description='User unique name'),
    'password': fields.String(required=True, min_length=3, max_length=16, description='User password'),
    'email': fields.String(required=False, min_length=3, max_length=32, description='User email'),
})

user_patch = api.model('User patch', {
    'password': fields.String(required=False, min_length=3, max_length=16, description='User password'),
    'email': fields.String(required=False, min_length=3, max_length=32, description='User email'),
})

user_minimal = api.model('User minimal', {
    'id': fields.Integer(required=True, description='User unique id'),
    'username': fields.String(required=True, description='User username'),
    'created_at': fields.DateTime(required=True, description='User creation datetime'),
    'uri': fields.Url('admin.users_user_item')
})

user_detail = api.inherit('User details', user_minimal, {
    'email': fields.String(required=False, description='User emal')
})

user_data_container = api.model('User DataContainer', {
    'users': fields.List(fields.Nested(user_minimal))
})
コード例 #21
0
ファイル: deals.py プロジェクト: averdier/epsi_bluetooth_api
from .. import api

deal_post = api.model('Deal post', {
    'label': fields.String(required=True, min_length=3, max_length=32, description='Deal label'),
    'description': fields.String(required=False, min_length=3, max_length=32, description='Deal description'),
    'start_at': fields.DateTime(required=True, dt_format='iso8601', description='Deal start datetime'),
    'end_at': fields.DateTime(required=True, dt_format='iso8601', description='Deal start datetime'),
})

deal_patch = api.model('Deal patch', {
    'label': fields.String(required=False, min_length=3, max_length=32, description='Deal label'),
    'description': fields.String(required=False, min_length=3, max_length=32, description='Deal description'),
    'start_at': fields.DateTime(required=False, dt_format='iso8601', description='Deal start datetime'),
    'end_at': fields.DateTime(required=False, dt_format='iso8601', description='Deal start datetime'),
})

deal_minimal = api.model('Deal minimal', {
    'id': fields.String(required=True, description='Deal unique id'),
    'uri': fields.Url('api.deals_deal_item'),
    'label': fields.String(required=True, description='Deal label'),
    'start_at': fields.DateTime(required=True, dt_format='iso8601', description='Deal start datetime'),
    'end_at': fields.DateTime(required=True, dt_format='iso8601', description='Deal start datetime')
})

deal_detail = api.inherit('Deal', deal_minimal, {
    'description': fields.String(required=True, description='Deal description')
})

deal_data_container = api.inherit('Deal data container', {
    'deals': fields.List(fields.Nested(deal_minimal))
})
コード例 #22
0
payload_artifact = ns.model(
    "Testing Farm results artifact",
    {
        "commit-sha":
        fields.String(required=True,
                      example="08bfc38f15082bdf9ba964c3bbd04878666d1d56"),
        "copr-chroot":
        fields.String(required=True, example="fedora-30-x86_64"),
        "copr-repo-name":
        fields.String(required=True,
                      example="packit/packit-service-hello-world-14"),
        "git-ref":
        fields.String(required=True,
                      example="08bfc38f15082bdf9ba964c3bbd04878666d1d56"),
        "git-url":
        fields.Url(required=True,
                   example="https://github.com/packit-service/hello-world"),
        "repo-name":
        fields.String(required=True, example="hello-world"),
        "repo-namespace":
        fields.String(required=True, example="packit-service"),
    },
)
payload_pipeline = ns.model(
    "Testing Farm results pipeline",
    {
        "id":
        fields.String(required=True,
                      example="614d240a-1e27-4758-ad6a-ed3d34281924")
    },
)
payload = ns.model(
コード例 #23
0
ファイル: fields.py プロジェクト: chrnux/cerebrum
def href(endpoint, description="URL to this resource"):
    """ Create a reference to another API resource. """
    return base.Url(endpoint=endpoint, absolute=False, description=description)
コード例 #24
0
from flask_restplus import Namespace, Resource, fields
from flask import jsonify
import requests
from app import app
import json
import time

api = Namespace('home', description='JENKINS')
parser = api.parser()

Jenkins_configuration = api.model(
    'Jenkins Configuration', {
        'Github URL': fields.Url('github_url'),
        'github username': fields.String('github_username'),
        'github password': fields.String('github_password')
    })

Build_configuration = api.model(
    'Build Configuration', {
        'Job_name': fields.String('Job Name'),
        'Github_URL': fields.Url('Github_URL'),
        'Github_branch': fields.String('Github_branch'),
        'command': fields.String('commands')
    })


@api.route('/build')
class build(Resource):
    @api.expect(Build_configuration)
    def post(self):
        params = (
コード例 #25
0
from .namespaces import api
from flask_restplus import fields
from copy import deepcopy

# nested provider marshaller
provider_fields = {}
provider_fields['id'] = fields.Integer(description='Provider id', example=14)
provider_fields['name'] = fields.String(description='Provider Name',
                                        example='Snakeoil Ltd')
provider_fields['uri'] = fields.Url('providers_provider')
provider_marsh = api.model('AreaProvider', provider_fields)

# area get marshaller
area_fields = {}
area_fields['id'] = fields.Integer(required=True,
                                   description='Area id',
                                   example=14)
area_fields['name'] = fields.String(required=True,
                                    description='Area Name',
                                    example='Tele District')
area_fields['price'] = fields.Float(required=True,
                                    description='Area Price',
                                    example=10.54)
area_fields['geom'] = fields.String(required=True,
                                    description='Area Geometry',
                                    example='POLYGON ((11 50,11 51,'
                                    '12 51,12 50,11 50))')
area_fields['provider'] = fields.Nested(provider_marsh)
area_get_marsh = api.model('AreaGet', area_fields)

# area edit marshaller
コード例 #26
0
ファイル: v1.py プロジェクト: laramaktub/DEEPaaS
                         help="Data file to perform inference.",
                         type=werkzeug.FileStorage,
                         location="files",
                         dest='files',
                         required=False)

data_parser.add_argument('url',
                         help="URL to retrieve data to perform inference.",
                         type=str,
                         dest='urls',
                         required=False,
                         action="append")

model_links = api.model('Location', {
    "rel": fields.String(required=True),
    "href": fields.Url(required=True)
})

model_meta = api.model(
    'ModelMetadata', {
        'id':
        fields.String(required=True, description='Model identifier'),
        'name':
        fields.String(required=True, description='Model name'),
        'description':
        fields.String(required=True, description='Model description'),
        'license':
        fields.String(required=False, description='Model license'),
        'author':
        fields.String(required=False, description='Model author'),
        'version':
コード例 #27
0
        fields.String(required=True,
                      description='Product group',
                      example='product_group'),
        'product':
        fields.String(
            required=True, description='Product name', example='prod1'),
        'args':
        CustomField.Json(required=True,
                         description='Product arguments in JSON format',
                         example={"foo": "bar"}),
        'request_origin':
        fields.String(
            required=True, description='Request Origin', example='127.0.0.1'),
        'request_callback':
        fields.Url(required=True,
                   description='Request callback url',
                   example='http://origin.com/callback_uri'),
        'created_at':
        fields.DateTime(readOnly=True, description='Product creation date'),
        'updated_at':
        fields.DateTime(readOnly=True, description='product last update date'),
    })

pagination = api.model(
    'A page of results', {
        'page':
        fields.Integer(description='Number of this page of results'),
        'pages':
        fields.Integer(description='Total number of pages of results'),
        'per_page':
        fields.Integer(description='Number of items per page of results'),
コード例 #28
0
ファイル: hello.py プロジェクト: VinayakBM/flask_swagger
from collections import OrderedDict

from flask import Flask
from flask_restplus import fields, Api, Resource

app = Flask(__name__)
api = Api(app)

model = api.model('Model', {
    'task': fields.String,
    'uri': fields.Url('todo_ep')
})


class TodoDao(object):
    def __init__(self, todo_id, task):
        self.todo_id = todo_id
        self.task = task

        # This field will not be sent in the response
        self.status = 'active'


@api.route('/todo')
class Todo(Resource):
    @api.marshal_with(model)
    def get(self, **kwargs):
        return TodoDao(todo_id='my_todo', task='Remember the milk')


if __name__ == '__main__':
コード例 #29
0
ファイル: userDto.py プロジェクト: carlnjoku/devporte_v1
class UserDto:
    api = Namespace('user', description='User operations including create, edit, view and delete')

    upload_parser = api.parser()
    upload_parser.add_argument('avatarBlob', location='files',
                            type=FileStorage, required=True)

    parser = api.parser()
    parser.add_argument('x-access-token', required=True, location='headers')

    #parser = api.parser()
    #parser.add_argument('file', type=FileStorage, location='files', required=True)

    signup = api.model('signup details', {
        'email': fields.String(required=True, description='user email address'),
        'firstname': fields.String(required=True, description='user firstname'),
        'lastname': fields.String(required=True, description='user last name'),
        'user_type': fields.String(required=True, description='user type'),
        'country': fields.String(required=True, description='user type'),
        'company_name': fields.String(required=False, description='user type'),
        'state': fields.String(required=True, description='user type'),
        'password': fields.String(required=True, description='user password'),
        
       
    })

    email_confirmation = api.model('email_confirmation', {
        'firstname': fields.String(required=True, description='recipient firstname'),
        'lastname': fields.String(required=True, description='recipient lastname'),
        'email': fields.String(required=True, description='recipient email address'),
        'userId': fields.String(required=True, description='recipient userId'),
       
    })

    profile = api.model('Minimal profile', {
        'userId': fields.String(required=True, description='recipient userId'),
        'expertise': fields.List(fields.String,required=True, description="List of users expertise"),
        'linkedin': fields.Url(required=True, description='User linkedin profile link'),
        'github': fields.Url(required=True, description='User github profile link'),
        'website': fields.Url(description="User's personal website url"),
        'experience': fields.String(required=True,description=''),
        'tzone': fields.String(required=True,description='timezone'),
        'availability': fields.String(required=True, description='user availability to work'),
        'pastprojects': fields.String(description="User's past project"),
        'about': fields.String(required=True,description=""),
        'avatarBlob': fields.String(required=True,description=""),
        'professional_title': fields.String(required=True, description='User professional title'),
        'calling_code': fields.String(description=''),
        'postal': fields.String(required=True,description=''),
        'geoLoc': fields.Raw(description='Geo location'),
        'phone': fields.String(required=True, description='Phone number'),
        'experience_Level': fields.String(required=True, description='Experience level'),
        'project_type': fields.String(required=True, description=''),
        'primary_skills': fields.List(fields.Raw, required=True, description='List of primary skills'),
        'secondary_skills': fields.List(fields.Raw, required=True, description='List of secondary skills'),
        'updated_on': fields.String(required=True, description='Time updated'),
       
    })

    emp_contact = api.model('employer contact', {
        '_id': fields.String(required=True, description='user id'),
        'firstname': fields.String(required=True, description='employer firstname'),
        'lastname': fields.String(required=True, description='employer last name'),
        'phone': fields.String(required=True, description='employer phone'),
        'address': fields.String(required=True, description='address'),
        'website': fields.String(required=True, description='website'),
        'about_us': fields.String(required=True, description='about employer'),
    })

    change_pass = api.model('chnage password', {
        '_id': fields.String(required=True, description='user id'),
        'old_password': fields.String(required=True, description='old password'),
        'new_password': fields.String(required=True, description='new password'),
    })

    fileupload = api.model('Upload file', {
        'avatarBlob': fields.String(required=True,description=""),
    })
コード例 #30
0
from ping.restplus import api
from flask_restplus import fields

ping_json = api.model(
    'Ping',
    {'url': fields.Url(
        required=True,
        description='Url to ping',
    )},
)