aboutsummaryrefslogtreecommitdiff
path: root/lib/activitypub/types.ml
diff options
context:
space:
mode:
authorMarc Coquand <marc@mccd.space>2023-12-20 20:46:00 -0600
committerMarc Coquand <marc@mccd.space>2023-12-25 18:22:59 -0600
commit262f161f42c4e59beec41c6f440336c38385426a (patch)
tree6491c9b661a0b5a14c9a30ecf25e036f8762239d /lib/activitypub/types.ml
parentcc783c157f31e7e713c8b83be67449b1859dac27 (diff)
downloadfixgen-262f161f42c4e59beec41c6f440336c38385426a.tar.gz
fixgen-262f161f42c4e59beec41c6f440336c38385426a.tar.bz2
fixgen-262f161f42c4e59beec41c6f440336c38385426a.zip
Initial commit
Diffstat (limited to 'lib/activitypub/types.ml')
-rw-r--r--lib/activitypub/types.ml245
1 files changed, 0 insertions, 245 deletions
diff --git a/lib/activitypub/types.ml b/lib/activitypub/types.ml
deleted file mode 100644
index e4a56e9..0000000
--- a/lib/activitypub/types.ml
+++ /dev/null
@@ -1,245 +0,0 @@
-type yojson = Yojson.Safe.t
-let pp_yojson fmt vl = Yojson.Safe.pretty_print fmt vl
-let equal_yojson l r = Yojson.Safe.equal l r
-
-(** * Collections *)
-type 'a ordered_collection_page = {
- id: string;
- prev: string option;
- next: string option;
- is_ordered: bool;
- items: 'a list;
- part_of: string option;
- total_items: int option;
-} [@@deriving show, eq]
-
-
-type 'a ordered_collection = {
- id: string option;
- total_items: int;
- contents: [
- | `Items of (bool * 'a list)
- | `First of 'a ordered_collection_page
- ]
-} [@@deriving show, eq]
-
-(** * Events *)
-type 'a create = {
- id: string;
- actor: string;
- published: Ptime.t option;
- to_: string list;
- cc: string list;
- direct_message: bool;
- obj: 'a;
- raw: yojson;
-} [@@deriving show, eq]
-
-
-type 'a announce = {
- id: string;
- actor: string;
- published: Ptime.t option;
- to_: string list;
- cc: string list;
- obj: 'a;
- raw: yojson;
-} [@@deriving show, eq]
-
-
-type 'a accept = {
- id: string;
- actor: string;
- published: Ptime.t option;
- obj: 'a;
- raw: yojson;
-} [@@deriving show, eq]
-
-type 'a undo = {
- id: string;
- actor: string;
- published: Ptime.t option;
- obj: 'a;
- raw: yojson;
-} [@@deriving show, eq]
-
-type 'a delete = {
- id: string;
- actor: string;
- published: Ptime.t option;
- obj: 'a;
- raw: yojson;
-}
-[@@deriving show, eq]
-
-type 'a event = [
- `Create of 'a create
- | `Announce of 'a announce
- | `Accept of 'a accept
- | `Undo of 'a undo
- | `Delete of 'a delete
-] [@@deriving show, eq]
-
-
-(** * Objects *)
-type public_key = {
- id: string;
- owner: string;
- pem: string;
-} [@@deriving show, eq]
-
-type person = {
- id: string;
- name: string option;
- url: string option;
-
- preferred_username: string option;
-
- inbox: string;
- outbox: string;
-
- summary: string option;
-
- public_key: public_key;
-
- manually_approves_followers: bool;
-
- discoverable: bool;
- followers: string option;
- following: string option;
- icon: string option;
- raw: yojson;
-} [@@deriving show, eq]
-
-type follow = {
- id: string;
- actor: string;
- cc: string list;
- to_: string list;
- object_: string;
- state: [`Pending | `Cancelled ] option;
- raw: yojson;
-} [@@deriving show, eq]
-
-type tag = {
- ty: [`Mention | `Hashtag ];
- href: string;
- name: string;
-} [@@deriving show, eq]
-
-type attachment = {
- media_type: string option;
- name: string option;
- type_: string option;
- url: string;
-} [@@deriving show, eq]
-
-type note = {
- id: string;
- actor: string;
- attachment: attachment list;
- to_: string list;
- in_reply_to: string option;
- cc: string list;
- content: string;
- sensitive: bool;
- source: string option;
- summary: string option;
- published: Ptime.t option;
- tags: [ `Raw of yojson | `Value of tag ] list;
- raw: yojson;
-} [@@deriving show, eq]
-
-type block = {
- id: string;
- obj: string;
- published: Ptime.t option;
- actor: string;
- raw: yojson;
-} [@@deriving show, eq]
-
-type like = {
- id: string;
- actor: string;
- published: Ptime.t option;
- obj: string;
- raw: yojson;
-}
-[@@deriving show, eq]
-
-
-type core_obj = [
- `Person of person
- | `Follow of follow
- | `Note of note
- | `Block of block
- | `Like of like
- | `Link of string
-] [@@deriving show, eq]
-
-type core_event = core_obj event
-[@@deriving show, eq]
-
-type obj = [ core_obj | core_event ]
-[@@deriving show, eq]
-
-module Webfinger = struct
-
- type ty = [ `Html | `Json | `ActivityJson | `ActivityJsonLd ]
- [@@deriving show, eq]
-
- type link =
- | Self of ty * string
- | ProfilePage of ty * string
- | OStatusSubscribe of string
- [@@deriving show, eq]
-
- type query_result = {
- subject: string;
- aliases: string list;
- links: link list;
- }
- [@@deriving show, eq]
-
- let self_link query =
- query.links
- |> List.find_map (function
- | Self ((`ActivityJson | `ActivityJsonLd | `Json), url) -> Some (Uri.of_string url)
- | _ -> None)
-
-end
-
-module Nodeinfo = struct
-
- type software = {
- name: string;
- version: string;
- }
- [@@deriving show, eq]
-
- type usage_users = {
- total: int;
- active_month: int;
- active_half_year: int;
- }
- [@@deriving show, eq]
-
- type usage = {
- local_posts: int;
- users: usage_users;
- }
- [@@deriving show, eq]
-
- type t = {
- software: software;
- protocols: string list;
- inbound_services: string list;
- outbound_services: string list;
- usage: usage;
- open_registrations: bool;
- metadata: yojson option;
- raw: yojson;
- }
- [@@deriving show, eq]
-
-end