author Angelo Gladding
category Micropub
name RSVP Client
published 2024-12-09T14:21:33.725538-08:00
type entry
updated 2026-10-05T23:22:28.519350-07:00
url /rsvp, /2024/12/09/om
visibility public
Content
$if web.tx.request.method == "GET": <p>Bookmarklet: <a href="javascript:(function(){ window.location.href='https://ragt.ag/rsvp?url='+ encodeURIComponent(window.location.href) })()">RSVP</a> <small>(drag to browser toolbar to install)</small></p> $ url = web.tx.request.uri.query.get('url', [None])[0] <form method=$("post" if url else "get") action=/rsvp> <label><small>Event URL:</small><br> <input name=url value="$url" style=width:30em $("readonly" if url else "")></label><br> $if url: $ event = web.get(url).event <p>$event["name"] $if "featured" in event: <br><img src="$event['featured']"> </p> <p>Start time: $event["start"]</p> <p>End time: $event["end"]</p> <fieldset> <legend>Response</legend> $for response in ("yes", "no", "maybe"): <label><input type=radio name=response value=$response required> $response.capitalize()</label> </fieldset> <button>RSVP</button> $else: <button>Fetch</button </form> $elif web.tx.request.method == "POST": $ form = web.form("url", "response") $ event = web.get(form.url).event $if token := web.tx.user.session.get("token"): $ micropub_response = web.post(f"https://{web.tx.user.session['endpoint']}", $ headers={ $ "Authorization": f"Bearer {token}", $ }, $ json={ $ "type": ["h-entry"], $ "properties": { $ "in-reply-to": [{ $ "type": ["h-event"], $ "properties": { $ "name": [event["name"]], $ "start": [event["start-str"]], $ "end": [event["end-str"]], $ "url": [event["url"]] $ } $ }], $ "rsvp": [form.response], $ } $ } $ ) $micropub_response.text <p>RSVP'd to <code>$form.url</code></p> $else: <p>Your site doesn't support Micropub.</p> |