Example #1
0
def _get_paste(cb, sid=None, sha1=None, label=None, namespace=None):
    if sid:
        sid, name, value = sid
        return cb(
            **{
                'short': sid,
                'private': {
                    '$exists': False
                },
                'namespace': {
                    '$exists': False
                }
            }), name, value
    if sha1:
        digest, name = sha1[:2]
        return cb(**{
            'digest': digest,
            'namespace': {
                '$exists': False
            }
        }), name, digest
    if label:
        label, name = label
        return cb(**{
            'label': label,
            'namespace': {
                '$exists': False
            }
        }), name, label
    if namespace:
        label, name = namespace
        host = get_host_name(request)
        return cb(label=label, namespace=host), name, label

    return None, None, None
Example #2
0
def _namespace_kwargs(kwargs):
    host = get_host_name(request)
    if not _auth_namespace(host):
        return StatusResponse("invalid auth", 403)
    label, _ = kwargs['namespace']
    return dict(
        label=label,
        namespace=host,
    )
Example #3
0
File: routing.py Project: ptpb/pb
    def match(self, path, request):
        if not self.namespace_only:
            return super().match(path)

        default = config.get('DEFAULT_NAMESPACE')
        host = get_host_name(request)

        if default and host != default:
            return super().match(path)
Example #4
0
    def match(self, path, request):
        if not self.namespace_only:
            return super().match(path)

        default = config.get('DEFAULT_NAMESPACE')
        host = get_host_name(request)

        if default and host != default:
            return super().match(path)
Example #5
0
def post(label=None, namespace=None):
    stream, filename = request_content()
    if not stream:
        return StatusResponse("no post content", 400)

    cur = model.get_digest(stream)

    args = {}
    if filename:
        args['mimetype'], _ = guess_type(filename)

    for key, value in request_keys('private', 'sunset'):
        try:
            if key == 'sunset':
                args[key] = parse_sunset(value)
            else:
                args[key] = int(value)
        except (ValueError, OverflowError):
            return StatusResponse({
                "invalid request params": {key: value}
            }, 400)

    if label:
        label, _ = label
        if len(label) == 1:
            return StatusResponse("invalid label", 400)
        args['label'] = label
    if namespace:
        host = get_host_name(request)
        if not _auth_namespace(host):
            return StatusResponse("invalid auth", 403)
        label, _ = namespace
        args.update(dict(
            label=label,
            namespace=host
        ))

    headers = dict(allowed_headers(request.headers))
    args['headers'] = headers

    try:
        paste = next(cur)
        uuid = None
        status = "already exists"
    except StopIteration:
        try:
            paste = model.insert(stream, **args)
        except errors.DuplicateKeyError:
            return StatusResponse("label already exists.", 409)
        invalidate(**paste)
        uuid = str(UUID(hex=paste['_id']))
        status = "created"

    return PasteResponse(paste, status, filename, uuid)
Example #6
0
def _get_paste(cb, sid=None, sha1=None, label=None, namespace=None):
    if sid:
        sid, name, value = sid
        return cb(**{
            '$or' : [
                {
                    'digest': {
                        '$regex': '{}$'.format(sid)
                    }
                },
                {
                    'label' : value
                }
            ],
            'private': {
                '$exists': False
            },
            'namespace': {
                '$exists': False
            }
        }), name, value
    if sha1:
        digest, name = sha1[:2]
        return cb(**{
            'digest': digest,
            'namespace': {
                '$exists': False
            }
        }).hint([('digest', 1)]), name, digest
    if label:
        label, name = label
        return cb(**{
            'label': label,
            'namespace': {
                '$exists': False
            }
        }).hint([('label', 1)]), name, label
    if namespace:
        label, name = namespace
        host = get_host_name(request)
        return cb(
            label = label,
            namespace = host
        ), name, label

    return None, None, None
Example #7
0
def _get_paste(cb, sid=None, sha1=None, label=None, namespace=None):
    if sid:
        sid, name, value = sid
        return cb(
            **{
                '$or': [{
                    'digest': {
                        '$regex': '{}$'.format(sid)
                    }
                }, {
                    'label': value
                }],
                'private': {
                    '$exists': False
                },
                'namespace': {
                    '$exists': False
                }
            }), name, value
    if sha1:
        digest, name = sha1[:2]
        return cb(**{
            'digest': digest,
            'namespace': {
                '$exists': False
            }
        }).hint([('digest', 1)]), name, digest
    if label:
        label, name = label
        return cb(**{
            'label': label,
            'namespace': {
                '$exists': False
            }
        }).hint([('label', 1)]), name, label
    if namespace:
        label, name = namespace
        host = get_host_name(request)
        return cb(label=label, namespace=host), name, label

    return None, None, None
Example #8
0
File: views.py Project: ptpb/pb
def _get_paste(cb, sid=None, sha1=None, label=None, namespace=None):
    if sid:
        sid, name, value = sid
        return cb(**{
            'short': sid,
            'private': {
                '$exists': False
            },
            'namespace': {
                '$exists': False
            }
        }), name, value
    if sha1:
        digest, name = sha1[:2]
        return cb(**{
            'digest': digest,
            'namespace': {
                '$exists': False
            }
        }), name, digest
    if label:
        label, name = label
        return cb(**{
            'label': label,
            'namespace': {
                '$exists': False
            }
        }), name, label
    if namespace:
        label, name = namespace
        host = get_host_name(request)
        return cb(
            label=label,
            namespace=host
        ), name, label

    return None, None, None