def url(label=None): stream, _ = request_content() if not stream: return StatusResponse("no post content", 400) args = {} if label: label, _ = label if len(label) == 1: return StatusResponse("invalid label", 400) args['label'] = label stream = BytesIO(stream.read().decode('utf-8').split()[0].encode('utf-8')) cur = model.get_digest(stream) try: url = next(cur) status = "already exists" except StopIteration: url = model.insert(stream, redirect=1, **args) status = "created" return PasteResponse(url, status)
def post(label=None): stream, filename = request_content() if not stream: return "Nope.\n", 400 cur = model.get_digest(stream) if not cur.count(): if label: label, _ = label try: paste = model.insert(stream, label=label) except errors.DuplicateKeyError: return "label already exists.\n", 409 elif request.form.get('p'): paste = model.insert(stream, private=1) else: paste = model.insert(stream) uuid = str(UUID(hex=paste['_id'])) status = "created" else: paste = cur.__next__() uuid = None status = "already exists" return complex_response(paste, filename=filename, uuid=uuid, status=status)
def put(**kwargs): if 'namespace' in kwargs: kwargs = _namespace_kwargs(kwargs) stream, filename = request_content() if not stream: return StatusResponse("no post content", 400) cur = model.get_digest(stream) try: return PasteResponse(next(cur), "already exists", filename) except StopIteration: pass if filename: kwargs['mimetype'], _ = guess_type(filename) # this entirely replaces paste headers, which might not be expected behavior headers = dict(allowed_headers(request.headers)) # FIXME: such query; wow invalidate(**kwargs) result = model.put(stream, headers=headers, **kwargs) if result['n']: paste = next(model.get_meta(**kwargs)) return PasteResponse(paste, "updated") return StatusResponse("not found", 404)
def post(label=None): stream, filename = request_content() if not stream: return "Nope.\n", 400 cur = model.get_digest(stream) args = {} if request.form.get('p'): args['private'] = 1 if request.form.get('s'): try: args['sunset'] = int(request.form['s']) except ValueError: return "Invalid sunset value.\n", 400 if label: label, _ = label args['label'] = label if not cur.count(): try: paste = model.insert(stream, **args) except errors.DuplicateKeyError: return "label already exists.\n", 409 uuid = str(UUID(hex=paste['_id'])) status = "created" else: paste = cur.__next__() uuid = None status = "already exists" return complex_response(paste, filename=filename, uuid=uuid, status=status)
def put(**kwargs): if 'namespace' in kwargs: kwargs = _namespace_kwargs(kwargs) stream, filename = request_content() if not stream: return StatusResponse("no post content", 400) cur = model.get_digest(stream) try: return PasteResponse(next(cur), "already exists", filename) except StopIteration: pass if filename: kwargs['mimetype'], _ = guess_type(filename) # FIXME: such query; wow invalidate(**kwargs) result = model.put(stream, **kwargs) if result['n']: paste = next(model.get_meta(**kwargs)) return PasteResponse(paste, "updated") return StatusResponse("not found", 404)
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 url(): stream, _ = request_content() if not stream: return "Nope.\n", 400 stream = BytesIO(stream.read().decode('utf-8').split()[0].encode('utf-8')) cur = model.get_digest(stream) if not cur.count(): url = model.insert(stream, redirect=1) else: url = cur.__next__() url = id_url(sid=url['digest']) return redirect(url, "{}\n".format(url), 200)
def url(): stream, _ = request_content() if not stream: return StatusResponse("no post content", 400) stream = BytesIO(stream.read().decode('utf-8').split()[0].encode('utf-8')) cur = model.get_digest(stream) if not cur.count(): url = model.insert(stream, redirect=1) status = "created" else: url = next(cur) status = "already exists" return PasteResponse(url, status)
def put(uuid): content, filename = request_content() if not content: return "Nope.\n", 400 id, digest = model.get_digest(content) if id or digest: url = id_url(b66=id) if id else id_url(sha1=digest) return redirect(url, "Paste already exists.\n", 409) id, digest = model.put(uuid.bytes, content) if id or digest: url = id_url(b66=(id, filename)) if id else id_url(sha1=digest) return redirect(url, "{} updated.\n".format(url), 200) return "Not found.\n", 404
def post(): content, filename = request_content() if not content: return "Nope.\n", 400 uuid = None id, digest = model.get_digest(content) if not id and not digest: if request.form.get('p'): digest, uuid = model.insert_private(content) else: id, uuid = model.insert(content) url = id_url(b66=(id, filename)) if id else id_url(sha1=(digest, filename)) uuid = str(UUID(bytes=uuid)) if uuid else '<redacted>' return redirect(url, safe_dump(dict(url=url, uuid=uuid), default_flow_style=False))
def put(uuid): stream, filename = request_content() if not stream: return "Nope.\n", 400 cur = model.get_digest(stream) if cur.count(): return complex_response(cur.__next__(), filename=filename, status="already exists") # FIXME: such query; wow invalidate(uuid) result = model.put(uuid, stream) if result['n']: paste = model.get_meta(_id=uuid.hex).__next__() return complex_response(paste, status="updated") return "Not found.\n", 404
def post(): content, filename = request_content() if not content: return "Nope.\n", 400 uuid = None id, digest = model.get_digest(content) if not id and not digest: if request.form.get('p'): digest, uuid = model.insert_private(content) else: id, uuid = model.insert(content) url = id_url(b66=(id, filename)) if id else id_url(sha1=(digest, filename)) uuid = str(UUID(bytes=uuid)) if uuid else '<redacted>' return redirect( url, safe_dump(dict(url=url, uuid=uuid), default_flow_style=False))
def put(**kwargs): if 'namespace' in kwargs: kwargs = _namespace_kwargs(kwargs) stream, filename = request_content() if not stream: return StatusResponse("no post content", 400) cur = model.get_digest(stream) if cur.count(): return PasteResponse(next(cur), "already exists", filename) if filename: kwargs['mimetype'], _ = guess_type(filename) # FIXME: such query; wow invalidate(**kwargs) result = model.put(stream, **kwargs) if result['n']: paste = next(model.get_meta(**kwargs)) return PasteResponse(paste, "updated") return StatusResponse("not found", 404)