MCPcopy
hub / github.com/mitmproxy/mitmproxy / prettify_message

Function prettify_message

mitmproxy/contentviews/__init__.py:62–117  ·  view source on GitHub ↗
(
    message: ContentviewMessage,
    flow: flow.Flow,
    view_name: str = "auto",
    registry: ContentviewRegistry = registry,
)

Source from the content-addressed store, hash-verified

60
61
62def prettify_message(
63 message: ContentviewMessage,
64 flow: flow.Flow,
65 view_name: str = "auto",
66 registry: ContentviewRegistry = registry,
67) -> ContentviewResult:
68 data, enc = get_data(message)
69 if data is None:
70 return ContentviewResult(
71 text="Content is missing.",
72 syntax_highlight="error",
73 description="",
74 view_name=None,
75 )
76
77 # Determine the correct view
78 metadata = make_metadata(message, flow)
79 view = registry.get_view(data, metadata, view_name)
80
81 # Finally, we can pretty-print!
82 try:
83 ret = ContentviewResult(
84 text=view.prettify(data, metadata),
85 syntax_highlight=view.syntax_highlight,
86 view_name=view.name,
87 description=enc,
88 )
89 except Exception as e:
90 logger.debug(f"Contentview {view.name!r} failed: {e}", exc_info=True)
91 if view_name == "auto":
92 # If the contentview was chosen as the best matching one, fall back to raw.
93 ret = ContentviewResult(
94 text=raw.prettify(data, metadata),
95 syntax_highlight=raw.syntax_highlight,
96 view_name=raw.name,
97 description=f"{enc}[failed to parse as {view.name}]",
98 )
99 else:
100 # Cut the exception traceback for display.
101 exc, value, tb = sys.exc_info()
102 tb_cut = cut_traceback(tb, "prettify_message")
103 if (
104 tb_cut == tb
105 ): # If there are no extra frames, just skip displaying the traceback.
106 tb_cut = None
107 # If the contentview has been set explicitly, we display a hard error.
108 err = "".join(traceback.format_exception(exc, value=value, tb=tb_cut))
109 ret = ContentviewResult(
110 text=f"Couldn't parse as {view.name}:\n{err}",
111 syntax_highlight="error",
112 view_name=view.name,
113 description=enc,
114 )
115
116 ret.text = strutils.escape_control_characters(ret.text)
117 return ret
118
119

Callers 4

test_empty_contentMethod · 0.90
test_hex_streamMethod · 0.90

Calls 8

get_dataFunction · 0.85
ContentviewResultClass · 0.85
make_metadataFunction · 0.85
cut_tracebackFunction · 0.85
get_viewMethod · 0.80
prettifyMethod · 0.45
debugMethod · 0.45
joinMethod · 0.45

Tested by 4

test_empty_contentMethod · 0.72
test_hex_streamMethod · 0.72

Used in the wild real call sites across dependent graphs

searching dependent graphs…