raw content display

main
Dominik Madarász 2023-01-12 14:13:05 +00:00
parent a4936286dc
commit 869ed215a3
3 changed files with 50 additions and 2 deletions

View File

@ -184,6 +184,14 @@ class Object:
return content return content
@cached_property
def raw_content(self) -> str | None:
raw_content = self.ap_object.get("content")
if not raw_content:
return None
return markdown(raw_content)
@property @property
def summary(self) -> str | None: def summary(self) -> str | None:
return self.ap_object.get("summary") return self.ap_object.get("summary")

View File

@ -1531,6 +1531,28 @@ async def serve_proxy_media_resized(
) )
@app.get("/raw_object")
async def serve_raw_object(
request: Request,
ap_id: str,
db_session: AsyncSession = Depends(get_db_session),
) -> PlainTextResponse:
requested_object = await boxes.get_anybox_object_by_ap_id(db_session, ap_id)
if not requested_object or requested_object.is_deleted:
raise HTTPException(status_code=404)
if not hasattr(requested_object, 'source'):
return PlainTextResponse(
requested_object.ap_object.get("content"),
headers={"Content-Type": "text/plain"},
)
return PlainTextResponse(
requested_object.source,
headers={"Content-Type": "text/plain"},
)
@app.get("/attachments/{content_hash}/{filename}") @app.get("/attachments/{content_hash}/{filename}")
async def serve_attachment( async def serve_attachment(
content_hash: str, content_hash: str,

View File

@ -510,8 +510,17 @@
<nav class="flexbox activity-bar margin-top-20"> <nav class="flexbox activity-bar margin-top-20">
<ul> <ul>
<li> <li>
<div><a href="{{ wm_reply.url }}" rel="nofollow" class="object-permalink u-url u-uid">permalink</a></div> <div>
<a href="{{ wm_reply.url }}" rel="nofollow" class="object-permalink u-url u-uid">permalink</a>
</div>
</li> </li>
{% if is_admin and object.is_from_outbox %}
<li>
<div>
<a href="{{ BASE_URL }}/raw_object?ap_id={{ object.ap_id | safe }}"{% if object.is_from_inbox %} rel="nofollow"{% endif %} class="object-permalink u-url u-uid">raw</a>
</div>
</li>
{% endif %}
<li> <li>
<time class="dt-published" datetime="{{ wm_reply.published_at.replace(microsecond=0).isoformat() }}" title="{{ wm_reply.published_at.replace(microsecond=0).isoformat() }}">{{ wm_reply.published_at | timeago }}</time> <time class="dt-published" datetime="{{ wm_reply.published_at.replace(microsecond=0).isoformat() }}" title="{{ wm_reply.published_at.replace(microsecond=0).isoformat() }}">{{ wm_reply.published_at | timeago }}</time>
</li> </li>
@ -657,8 +666,17 @@
<nav class="flexbox activity-bar"> <nav class="flexbox activity-bar">
<ul> <ul>
<li> <li>
<div><a href="{{ object.url }}"{% if object.is_from_inbox %} rel="nofollow"{% endif %} class="object-permalink u-url u-uid">permalink</a></div> <div>
<a href="{{ object.url }}"{% if object.is_from_inbox %} rel="nofollow"{% endif %} class="object-permalink u-url u-uid">permalink</a>
</div>
</li> </li>
{% if is_admin and object.is_from_outbox %}
<li>
<div>
<a href="{{ BASE_URL }}/raw_object?ap_id={{ object.ap_id | safe }}"{% if object.is_from_inbox %} rel="nofollow"{% endif %} class="object-permalink u-url u-uid">raw</a>
</div>
</li>
{% endif %}
{% if object.is_from_outbox and is_object_page and not is_admin and not request.url.path.startswith("/remote_interaction") %} {% if object.is_from_outbox and is_object_page and not is_admin and not request.url.path.startswith("/remote_interaction") %}
<li> <li>