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 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 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 invalidate(uuid): cur = model.get_meta(_id=uuid.hex) if not cur or not cur.count(): return paste = cur.__next__() base = current_app.config.get('VARNISH_BASE') if not base: return paste s = get_session() for url in all_urls(paste): url = urljoin(base, '/.*{}.*'.format(url)) headers = {'Host': get_host(request.environ)} s.executor.submit(s.request, 'BAN', url, headers=headers) return paste
def invalidate(**kwargs): cur = model.get_meta(**kwargs) try: paste = next(cur) except StopIteration: return base = current_app.config.get('VARNISH_BASE') if not base: return paste s = get_session() for url in all_urls(paste): url = urljoin(base, '/.*{}.*'.format(url)) headers = {'Host': get_host(request.environ)} s.executor.submit(s.request, 'BAN', url, headers=headers) return paste
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)
def stats(): cur = model.get_meta() return DictResponse(dict(pastes=cur.count()))