def get_info_refs(req, backend, mat): params = parse_qs(req.environ['QUERY_STRING']) service = params.get('service', [None])[0] if service and not req.dumb: handler_cls = req.handlers.get(service, None) if handler_cls is None: yield req.forbidden('Unsupported service') return req.nocache() write = req.respond(HTTP_OK, 'application/x-%s-advertisement' % service) proto = ReceivableProtocol(BytesIO().read, write) handler = handler_cls(backend, [url_prefix(mat)], proto, http_req=req, advertise_refs=True) handler.proto.write_pkt_line(b'# service=' + service.encode('ascii') + b'\n') handler.proto.write_pkt_line(None) handler.handle() else: # non-smart fallback # TODO: select_getanyfile() (see http-backend.c) req.nocache() req.respond(HTTP_OK, 'text/plain') logger.info('Emulating dumb info/refs') repo = get_repo(backend, mat) for text in generate_info_refs(repo): yield text
def get_info_refs(req, backend, mat): params = parse_qs(req.environ["QUERY_STRING"]) service = params.get("service", [None])[0] try: repo = get_repo(backend, mat) except NotGitRepository as e: yield req.not_found(str(e)) return if service and not req.dumb: handler_cls = req.handlers.get(service.encode("ascii"), None) if handler_cls is None: yield req.forbidden("Unsupported service") return req.nocache() write = req.respond(HTTP_OK, "application/x-%s-advertisement" % service) proto = ReceivableProtocol(BytesIO().read, write) handler = handler_cls( backend, [url_prefix(mat)], proto, stateless_rpc=req, advertise_refs=True, ) handler.proto.write_pkt_line(b"# service=" + service.encode("ascii") + b"\n") handler.proto.write_pkt_line(None) handler.handle() else: # non-smart fallback # TODO: select_getanyfile() (see http-backend.c) req.nocache() req.respond(HTTP_OK, "text/plain") logger.info("Emulating dumb info/refs") for text in generate_info_refs(repo): yield text
def get_info_refs(req, backend, mat): params = parse_qs(req.environ['QUERY_STRING']) service = params.get('service', [None])[0] try: repo = get_repo(backend, mat) except NotGitRepository as e: yield req.not_found(str(e)) return if service and not req.dumb: handler_cls = req.handlers.get(service.encode('ascii'), None) if handler_cls is None: yield req.forbidden('Unsupported service') return req.nocache() write = req.respond( HTTP_OK, 'application/x-%s-advertisement' % service) proto = ReceivableProtocol(BytesIO().read, write) handler = handler_cls(backend, [url_prefix(mat)], proto, http_req=req, advertise_refs=True) handler.proto.write_pkt_line( b'# service=' + service.encode('ascii') + b'\n') handler.proto.write_pkt_line(None) handler.handle() else: # non-smart fallback # TODO: select_getanyfile() (see http-backend.c) req.nocache() req.respond(HTTP_OK, 'text/plain') logger.info('Emulating dumb info/refs') for text in generate_info_refs(repo): yield text
def get_info_refs(req, backend, mat): params = parse_qs(req.environ["QUERY_STRING"]) service = params.get("service", [None])[0] if service and not req.dumb: handler_cls = req.handlers.get(service, None) if handler_cls is None: yield req.forbidden("Unsupported service %s" % service) return req.nocache() write = req.respond(HTTP_OK, "application/x-%s-advertisement" % service) proto = ReceivableProtocol(StringIO().read, write) handler = handler_cls(backend, [url_prefix(mat)], proto, http_req=req, advertise_refs=True) handler.proto.write_pkt_line("# service=%s\n" % service) handler.proto.write_pkt_line(None) handler.handle() else: # non-smart fallback # TODO: select_getanyfile() (see http-backend.c) req.nocache() req.respond(HTTP_OK, "text/plain") logger.info("Emulating dumb info/refs") repo = get_repo(backend, mat) for text in generate_info_refs(repo): yield text