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
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, )
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)
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)
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
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
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