MCPcopy Index your code
hub / github.com/mitmproxy/mitmproxy / put

Method put

mitmproxy/tools/web/app.py:580–639  ·  view source on GitHub ↗
(self, flow_id)

Source from the content-addressed store, hash-verified

578 self.view.remove([self.flow])
579
580 def put(self, flow_id) -> None:
581 flow: mitmproxy.flow.Flow = self.flow
582 flow.backup()
583 try:
584 for a, b in self.json.items():
585 if a == "request" and hasattr(flow, "request"):
586 request: mitmproxy.http.Request = flow.request
587 for k, v in b.items():
588 if k in ["method", "scheme", "host", "path", "http_version"]:
589 setattr(request, k, str(v))
590 elif k == "port":
591 request.port = int(v)
592 elif k == "headers":
593 request.headers.clear()
594 for header in v:
595 request.headers.add(*header)
596 elif k == "trailers":
597 if request.trailers is not None:
598 request.trailers.clear()
599 else:
600 request.trailers = mitmproxy.http.Headers()
601 for trailer in v:
602 request.trailers.add(*trailer)
603 elif k == "content":
604 request.text = v
605 else:
606 raise APIError(400, f"Unknown update request.{k}: {v}")
607
608 elif a == "response" and hasattr(flow, "response"):
609 response: mitmproxy.http.Response = flow.response
610 for k, v in b.items():
611 if k in ["msg", "http_version"]:
612 setattr(response, k, str(v))
613 elif k == "code":
614 response.status_code = int(v)
615 elif k == "headers":
616 response.headers.clear()
617 for header in v:
618 response.headers.add(*header)
619 elif k == "trailers":
620 if response.trailers is not None:
621 response.trailers.clear()
622 else:
623 response.trailers = mitmproxy.http.Headers()
624 for trailer in v:
625 response.trailers.add(*trailer)
626 elif k == "content":
627 response.text = v
628 else:
629 raise APIError(400, f"Unknown update response.{k}: {v}")
630 elif a == "marked":
631 flow.marked = b
632 elif a == "comment":
633 flow.comment = b
634 else:
635 raise APIError(400, f"Unknown update {a}: {b}")
636 except APIError:
637 flow.revert()

Callers

nothing calls this directly

Calls 7

APIErrorClass · 0.85
backupMethod · 0.80
itemsMethod · 0.45
clearMethod · 0.45
addMethod · 0.45
revertMethod · 0.45
updateMethod · 0.45

Tested by

no test coverage detected