From: Lady Date: Mon, 29 Aug 2022 01:09:32 +0000 (-0700) Subject: Add basic full‐site metadata X-Git-Tag: 0.1.1^0 X-Git-Url: https://git.ladys.computer/x_status_git/commitdiff_plain/865f81d1ae196d78a82b375960df56f4d4c5b11a?ds=inline;hp=8e2067811887c23a4b41beae30f6f7cca9465a08 Add basic full‐site metadata --- diff --git a/README.markdown b/README.markdown index 31f9ac5..a0f8413 100644 --- a/README.markdown +++ b/README.markdown @@ -81,6 +81,15 @@ Note that these paths **do not** have a trailing slash. + **`GET /`**: Serve the file at `/index.html`. + A `Link` header with the value + `;rel=meta;type="application/ld+json"` (or + equivalent) **must** be provided. + + + **`GET /about`**: + Serve the file at `/.about.html`. + A `Link` header with the value + `;rel=meta;type="application/ld+json"` (or + equivalent) **must** be provided. + **`GET /statuses`**: Serve the file at `/.statuses.html`. @@ -126,6 +135,9 @@ These responses **should** be served with a `Content-Type` of In all cases, for `/$PATH.jsonld`, this just serves the file at `/$PATH/index.jsonld`. + + **`GET /about.jsonld`**: + Serve the file at `/about/index.jsonld`. + + **`GET /statuses.jsonld`**: Serve the file at `/statuses/index.jsonld`. @@ -280,21 +292,27 @@ Assuming the U·R·L you were given was valid, you will end this + If the `@type` is or contains `Thread`, the resource is a collection of statuses. -The items in the collection may be determined through one of the - following methods :— + + If the `@type` is or contains `Microblog`, the resource describes + this site as a whole. + The `streams` property will contain a list of available `Forum`s + and `Thread`s, as objects with an `@id` and `@type`. + +The items in the collection (`Forum` or `Thread`) may be determined + through one of the following methods :— - + If the `@type` is or contains `OrderedCollectionPage`, then its - `items` will be an array of resources. + + If the `@type` is or contains `CollectionPage` or + `OrderedCollectionPage`, then its `items` will contain resources. This is a partial collection, and the `prev` and `next` properties can be used to access further items from the parent collection (indicated by `partOf`). + `first` and `current`, in this scenario, point “horizontally” to + the first and latest pages of items, not to subpages. - + If the `@type` is or contains `OrderedCollection`, and the resource - has `first` and `current` properties, then the `items` property - will not be present. + + If the `@type` is or contains `Collection` or `OrderedCollection` + and the resource has `first` and/or `current` properties, then + the `items` property will not be present. `first` and `current` can be accessed to provide - `OrderedCollectionPage`s listing the items of the collection as - above. + `OrderedCollectionPage`s listing the items of the collection. + Otherwise, the `items` property will contain every item in the collection. diff --git a/about.html b/about.html new file mode 100644 index 0000000..c12dfa5 --- /dev/null +++ b/about.html @@ -0,0 +1,26 @@ + + +About + +

About

+ + diff --git a/post-receive b/post-receive index 94620be..bc16a55 100755 --- a/post-receive +++ b/post-receive @@ -128,11 +128,18 @@ if stdin.read().split()[-1] == f"refs/heads/{LIVE_BRANCH}": # Copy H·T·M·L files to their expected locations. copy2(f"{BUILD_DIRECTORY}/index.html", f"{PUBLIC_DIRECTORY}/index.html") + copy2(f"{BUILD_DIRECTORY}/about.html", f"{PUBLIC_DIRECTORY}/.about.html") copy2(f"{BUILD_DIRECTORY}/status.html", f"{PUBLIC_DIRECTORY}/.status.html") copy2(f"{BUILD_DIRECTORY}/statuses.html", f"{PUBLIC_DIRECTORY}/.statuses.html") copy2(f"{BUILD_DIRECTORY}/topic.html", f"{PUBLIC_DIRECTORY}/.topic.html") copy2(f"{BUILD_DIRECTORY}/topics.html", f"{PUBLIC_DIRECTORY}/.topics.html") + # Output “about” metadata + if not exists(f"{PUBLIC_DIRECTORY}/about"): + mkdir(f"{PUBLIC_DIRECTORY}/about") + with open(f"{PUBLIC_DIRECTORY}/about/index.jsonld", "w", encoding="utf-8") as f: + json.dump({ "@context": { "@language": LANG, "activity": "https://www.w3.org/ns/activitystreams#", "sioc": "http://rdfs.org/sioc/ns#", "sioct": "http://rdfs.org/sioc/types#", "Forum": "sioc:Forum", "Thread": "sioc:Thread", "Microblog": "sioct:Microblog", "streams": { "@id": "activity:streams", "@type": "@id" } }, "@id": f"{PUBLIC_URL}", "@type": "Microblog", "streams": [{ "@id": f"{PUBLIC_URL}/statuses", "@type": "Thread" }, { "@id": f"{PUBLIC_URL}/topics", "@type": "Forum" }] }, f, ensure_ascii=False, allow_nan=False) + # Output month‐based listings and the non‐topic index statuspairs = list(enumerate(months.items())) for (index, (yyyy_mm, ld)) in statuspairs: @@ -149,7 +156,7 @@ if stdin.read().split()[-1] == f"refs/heads/{LIVE_BRANCH}": if not exists(f"{PUBLIC_DIRECTORY}/statuses"): mkdir(f"{PUBLIC_DIRECTORY}/statuses") with open(f"{PUBLIC_DIRECTORY}/statuses/index.jsonld", "w", encoding="utf-8") as f: - json.dump({ "@context": { "@language": LANG, "activity": "https://www.w3.org/ns/activitystreams#", "sioc": "http://rdfs.org/sioc/ns#", "OrderedCollection": "activity:OrderedCollection", "Thread": "sioc:Thread", "current": { "@id": "activity:current", "@type": "@id" }, "first": { "@id": "activity:first", "@type": "@id" } }, "@id": f"{PUBLIC_URL}/statuses", "@type": ["OrderedCollection", "Thread"], "first": f"{PUBLIC_URL}/{statuspairs[0][1][0]}", "current": f"{PUBLIC_URL}/{statuspairs[-1][1][0]}" }, f, ensure_ascii=False, allow_nan=False) + json.dump({ "@context": { "@language": LANG, "activity": "https://www.w3.org/ns/activitystreams#", "sioc": "http://rdfs.org/sioc/ns#", "OrderedCollection": "activity:OrderedCollection", "Thread": "sioc:Thread", "current": { "@id": "activity:current", "@type": "@id" }, "first": { "@id": "activity:first", "@type": "@id" }, "has_parent": { "@id": "sioc:has_parent", "@type": "id" } }, "@id": f"{PUBLIC_URL}/statuses", "@type": ["OrderedCollection", "Thread"], "first": f"{PUBLIC_URL}/{statuspairs[0][1][0]}", "current": f"{PUBLIC_URL}/{statuspairs[-1][1][0]}", "has_parent": f"{PUBLIC_URL}" }, f, ensure_ascii=False, allow_nan=False) # Output topic‐based listings and the topic index if not exists(f"{PUBLIC_DIRECTORY}/topics"): @@ -160,7 +167,7 @@ if stdin.read().split()[-1] == f"refs/heads/{LIVE_BRANCH}": with open(f"{PUBLIC_DIRECTORY}/topics/{topic}/index.jsonld", "w", encoding="utf-8") as f: json.dump(ld, f, ensure_ascii=False, allow_nan=False) with open(f"{PUBLIC_DIRECTORY}/topics/index.jsonld", "w", encoding="utf-8") as f: - json.dump({ "@context": { "@language": LANG, "activity": "https://www.w3.org/ns/activitystreams#", "dct": "http://purl.org/dc/terms/", "sioc": "http://rdfs.org/sioc/ns#", "Collection": "activity:Collection", "Forum": "sioc:Forum", "items": { "@id": "activity:items", "@type": "@id" }, "subject": "dct:subject" }, "@id": f"{PUBLIC_URL}/topics", "@type": ["Collection", "Forum"], "items": list(map(lambda a: { "@id": a["@id"], "subject": a["subject"] }, topics.values())) }, f, ensure_ascii=False, allow_nan=False) + json.dump({ "@context": { "@language": LANG, "activity": "https://www.w3.org/ns/activitystreams#", "dct": "http://purl.org/dc/terms/", "sioc": "http://rdfs.org/sioc/ns#", "Collection": "activity:Collection", "Forum": "sioc:Forum", "items": { "@id": "activity:items", "@type": "@id" }, "has_parent": { "@id": "sioc:has_parent", "@type": "id" }, "subject": "dct:subject" }, "@id": f"{PUBLIC_URL}/topics", "@type": ["Collection", "Forum"], "items": list(map(lambda a: { "@id": a["@id"], "subject": a["subject"] }, topics.values())), "has_parent": f"{PUBLIC_URL}" }, f, ensure_ascii=False, allow_nan=False) # Remove the build directory. rmtree(BUILD_DIRECTORY)