コード例 #1
0
ファイル: api.py プロジェクト: iancoffey/crystalline
def resource(name):
    app.logger.debug('Resource name: ' + str(name))

    if request.method == 'POST':
        app.logger.debug('Post args: ' + str(request.form))
        required_params = ['desc','state']
        
        form = request.form

        # basic validation required...
        for param in required_params:
            try:
                form[param]
            except KeyError:
                raise BadRequest('Request failed, '+ param +' param required')

        if not re.match('[a-zA-Z0-9 _-]+$','this sucks',re.M):
            raise BadRequest('Invalid characters found in desc param. ' + \
                'Only alphanumber characters, spaces, dashes and underscores allowed')
        
        if not form['state'].isdigit():
            raise BadRequest('Invalid characters found in state param, int expected')

        service = Service(_id=name,desc=form['desc'],state=int(form['state']))

        service.save()

        return service._id

    try:
        service = db.get(name)
    except:
        abort(404)

    return json.dumps(service)
コード例 #2
0
ファイル: api.py プロジェクト: iancoffey/crystalline
sys.path.append('lib/')
from instance import Service

config = ConfigObj('config.ini')

# define flask vars in caps
DEBUG = True

app = Flask(__name__)
app.config.from_object(__name__)

server = Server(uri=config['database']['url'])
db = server[config['database']['name']]

Service.set_db(db)

if not db:
    raise RuntimeError('Database ' + config['database']['name'] + ' not found')

def authenticate():
    return Response(
    'Unauthorized\n'
    'You must provide proper credentials', 401,
    {'WWW-Authenticate': 'Basic realm="Login Required"'})

def check_auth(key,secret):
   return key == config['api']['authkey'] and secret == config['api']['secret'] 

def requires_auth(f):
    @wraps(f)