>>> ktistec: Building testing/ktistec 0_git20231216-r0 (using abuild 3.12.0-r0) started Wed, 27 Dec 2023 21:44:43 +0000 >>> ktistec: Checking sanity of /home/buildozer/aports/testing/ktistec/APKBUILD... >>> ktistec: Analyzing dependencies... >>> ktistec: Installing for build: build-base tzdata crystal libxml2-dev musl-utils openssl-dev shards sqlite-dev yaml-dev (1/46) Installing tzdata (2023d-r0) (2/46) Installing gc (8.2.4-r1) (3/46) Installing libgc++ (8.2.4-r1) (4/46) Installing gc-dev (8.2.4-r1) (5/46) Installing libgmpxx (6.3.0-r0) (6/46) Installing gmp-dev (6.3.0-r0) (7/46) Installing libatomic_ops (7.8.0-r4) (8/46) Installing libbz2 (1.0.8-r6) (9/46) Installing libffi (3.4.4-r3) (10/46) Installing gdbm (1.23-r1) (11/46) Installing xz-libs (5.4.5-r0) (12/46) Installing mpdecimal (2.5.1-r2) (13/46) Installing libpanelw (6.4_p20231125-r0) (14/46) Installing readline (8.2.7-r0) (15/46) Installing sqlite-libs (3.44.2-r0) (16/46) Installing python3 (3.11.6-r1) (17/46) Installing python3-pycache-pyc0 (3.11.6-r1) (18/46) Installing pyc (3.11.6-r1) (19/46) Installing python3-pyc (3.11.6-r1) (20/46) Installing libevent (2.1.12-r7) (21/46) Installing libevent-dev (2.1.12-r7) (22/46) Installing libevent-static (2.1.12-r7) (23/46) Installing bsd-compat-headers (0.7.2-r5) (24/46) Installing libformw (6.4_p20231125-r0) (25/46) Installing libmenuw (6.4_p20231125-r0) (26/46) Installing libncurses++ (6.4_p20231125-r0) (27/46) Installing ncurses-dev (6.4_p20231125-r0) (28/46) Installing libedit-dev (20230828.3.1-r3) (29/46) Installing zlib-dev (1.3-r2) (30/46) Installing libpcre2-16 (10.42-r2) (31/46) Installing libpcre2-32 (10.42-r2) (32/46) Installing pcre2-dev (10.42-r2) (33/46) Installing libxml2 (2.11.6-r0) (34/46) Installing llvm16-libs (16.0.6-r7) (35/46) Installing crystal (1.10.1-r0) (36/46) Installing xz (5.4.5-r0) (37/46) Installing xz-dev (5.4.5-r0) (38/46) Installing libxml2-utils (2.11.6-r0) (39/46) Installing libxml2-dev (2.11.6-r0) (40/46) Installing openssl-dev (3.1.4-r2) (41/46) Installing yaml (0.2.5-r2) (42/46) Installing shards (0.17.4-r0) (43/46) Installing sqlite (3.44.2-r0) (44/46) Installing sqlite-dev (3.44.2-r0) (45/46) Installing yaml-dev (0.2.5-r2) (46/46) Installing .makedepends-ktistec (20231227.214446) Executing busybox-1.36.1-r18.trigger OK: 601 MiB in 152 packages >>> ktistec: Cleaning up srcdir >>> ktistec: Cleaning up pkgdir >>> ktistec: Cleaning up tmpdir >>> ktistec: Fetching https://distfiles.alpinelinux.org/distfiles/edge/ktistec-0_git20231216.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 146 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 curl: (22) The requested URL returned error: 404 >>> ktistec: Fetching ktistec-0_git20231216.tar.gz::https://github.com/toddsundsted/ktistec/archive/b331b7fd82b9fd8cf76a23fe48c11adfa92c875c.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 3257k 0 3257k 0 0 4871k 0 --:--:-- --:--:-- --:--:-- 9608k >>> ktistec: Fetching https://distfiles.alpinelinux.org/distfiles/edge/ktistec-0_git20231216.tar.gz >>> ktistec: Checking sha512sums... ktistec-0_git20231216.tar.gz: OK ktistec.initd: OK ktistec.confd: OK >>> ktistec: Unpacking /var/cache/distfiles/edge/ktistec-0_git20231216.tar.gz... Resolving dependencies Fetching https://github.com/kemalcr/kemal.git Fetching https://github.com/toddsundsted/slang.git Fetching https://github.com/crystal-lang/crystal-sqlite3.git Fetching https://github.com/toddsundsted/libxml_ext.git Fetching https://github.com/toddsundsted/openssl_ext.git Fetching https://github.com/toddsundsted/web_finger.git Fetching https://github.com/toddsundsted/school.git Fetching https://github.com/icyleaf/markd.git Fetching https://gitlab.com/arctic-fox/spectator.git Fetching https://github.com/luislavena/radix.git Fetching https://github.com/crystal-loot/exception_page.git Fetching https://github.com/sija/backtracer.cr.git Fetching https://github.com/crystal-lang/crystal-db.git Fetching https://github.com/toddsundsted/host_meta.git Installing radix (0.4.1) Installing backtracer (1.2.2) Installing exception_page (0.3.0) Installing kemal (1.3.0) Installing slang (1.7.1 at 8f8ad82) Installing db (0.12.0) Installing sqlite3 (0.20.0) Installing libxml_ext (0.1.2) Installing openssl_ext (0.1.6) Installing host_meta (0.2.3) Installing web_finger (0.2.4) Installing school (0.2.4) Installing markd (0.5.0) Installing spectator (0.11.7) >>> ktistec: Creating group ktistec >>> ktistec: Creating user ktistec add-down-at-to-actors: applied in 0.0012s add-index-on-iri-to-accounts: applied in 0.0004s migrate-notifications: applied in 0.0003s create-last-times: applied in 0.0008s migrate-account-state: applied in 0.0001s rename-column-on-objects: applied in 0.0065s ContentRules .new creates an instance #run given an empty outbox adds the activity to the outbox given an empty inbox does not add the activity to the inbox owner in recipients adds the activity to the inbox public URL in recipients does not add the activity to the inbox and owner is follows activity's actor adds the activity to the inbox followers collection in recipients does not add the activity to the inbox and owner is follows activity's actor adds the activity to the inbox given no notifications does not add the create to the notifications does not add the announce to the notifications does not add the like to the notifications adds the follow to the notifications object mentions the owner adds the object to the notifications object mentions another actor does not add the object to the notifications another object mentions the owner does not add the object to the notifications object is in reply to an object attributed to the owner adds the reply to the notifications object is in reply to an object attributed to another actor does not add the reply to the notifications in a thread being followed by the owner adds the reply to the notifications adds the reply to the notifications in a thread being followed by another actor does not add the reply to the notifications does not add the reply to the notifications another object is in reply to an object attributed to the owner does not add the reply to the notifications object is tagged with hashtags where 'foo' is followed by the owner adds the object to the notifications adds the object to the notifications and 'bar' is followed by the owner adds a single object to the notifications adds a single object to the notifications where 'foo' is followed by another actor does not add the object to the notifications does not add the object to the notifications and 'bar' is followed by another actor does not add the object to the notifications does not add the object to the notifications object is tagged with mentions where 'foo@remote.com' is followed by the owner adds the object to the notifications adds the object to the notifications and 'bar@remote.com' is followed by the owner adds a single object to the notifications adds a single object to the notifications where 'foo@remote.com' is followed by another actor does not add the object to the notifications does not add the object to the notifications and 'bar@remote.com' is followed by another actor does not add the object to the notifications does not add the object to the notifications object is attributed to the owner adds the announce to the notifications adds the like to the notifications another object is attributed to the owner does not add the announce to the notifications does not add the like to the notifications follow does not follow the owner does not add the follow to the notifications given notifications with a followed hashtag already added does not add another object to the notifications does not add another object to the notifications given notifications with a followed mention already added does not add another object to the notifications does not add another object to the notifications given notifications with a followed thread reply already added does not add another object to the notifications does not add another object to the notifications given notifications with mention already added does not add the mention to the notifications removes the mention from the notifications and an unrelated delete does not remove the mention from the notifications and an unrelated undo does not remove the mention from the notifications given notifications with reply already added does not add the reply to the notifications removes the reply from the notifications and an unrelated delete does not remove the reply from the notifications and an unrelated undo does not remove the reply from the notifications given notifications with an announce already added does not add the announce to the notifications removes the announce from the notifications does not remove the announce from the notifications given notifications with another announce for the same object adds the announce to the notifications removes the previous announce from the notifications given notifications with a like already added does not add the like to the notifications removes the like from the notifications does not remove the like from the notifications given notifications with another like for the same object adds the like to the notifications removes the previous like from the notifications given notifications with follow already added does not add the follow to the notifications removes the follow from the notifications does not remove the follow from the notifications given notifications with an announce that has been undone removes the announce from the notifications given an empty timeline adds the object to the timeline adds the object to the timeline object is a reply does not add the object to the timeline adds the object to the timeline but is attributed to the owner adds the object to the timeline another object is a reply adds the object to the timeline adds the object to the timeline object mentions the owner adds the object to the timeline adds the object to the timeline object mentions the owner and another actor adds the object to the timeline adds the object to the timeline object mentions another actor does not add the object to the timeline adds the object to the timeline but is attributed to the owner adds the object to the timeline given a timeline with an object already added and an associated create does not add the object to the timeline removes the object from the timeline and an unrelated delete does not remove the object from the timeline and an unrelated undo does not remove the object from the timeline and an associated announce does not add the object to the timeline removes the object from the timeline and a related undo removes the object from the timeline and another announce does not remove the object from the timeline that has been undone removes the object from the timeline given a timeline with another object already added does not remove the object from the timeline does not remove the object from the timeline given a timeline with an object that has been deleted destroys the timeline entry given an empty timeline adds the object to the timeline adds the object to the timeline given a content filter adds the object to the timeline adds the object to the timeline given a content filter of the actor adds the object to the timeline adds the object to the timeline adds the object to the timeline adds the object to the timeline given a content filter adds the object to the timeline adds the object to the timeline given a content filter of the actor does not add the object to the timeline does not add the object to the timeline object thread.html.slang does not render a button to dereference the link if authenticated renders a button to dereference the link if not a reply does not render a button to dereference the link notifications partial notifications.html.slang renders an empty page given an announce notification renders a sharing message given another announce notification renders a sharing message given a like notification renders a liking message given another like notification renders a liking message given a hashtag notification renders a tagged message given a mention notification renders a tagged message given a thread notification renders a replied to message notifications.json.ecr renders an empty collection partials collection.json.ecr when paginated renders a collection page contains the id of the collection page contains a page of items does not contain navigation links and on the second page contains a link to the previous page and contains more contains a link to the next page when not paginated renders a collection contains the id of the collection does not contain any items contains the first collection page contains the first collection page contains the first collection page of items does not contain navigation links and contains more contains a link to the next page actor-panel.html.slang if anonymous does not render an internal link to the actor does not render buttons and actor is local renders a button to remote follow and actor is down does not render a down warning message if authenticated renders an internal link to the actor and account actor is actor does not render buttons and following actor renders a button to unfollow does not render a button to block renders a button to follow and actor is blocked renders a button to unblock does not render a button to follow renders a blocked message segment does not render a blocked message segment renders a button to block and actor is down renders a down warning message actor-card.html.slang if anonymous does not render an internal link to the actor does not render buttons and actor is local renders a button to remote follow if authenticated renders an internal link to the actor if account actor is actor does not render buttons and on a page of actors the actor is following if already following renders a button to unfollow renders a button to follow having not accepted or rejected a follow if following renders a button to accept renders a button to reject renders a button to block renders a button to accept renders a button to reject renders a button to block having accepted or rejected a follow if following renders a button to unfollow does not render a button to block renders a button to follow renders a button to block if following renders a button to unfollow does not render a button to block renders a button to follow renders a button to block editor.html.slang if authenticated given a new object renders an id does not render an input with the object iri includes an input to save draft does not include a link to return to drafts given a saved object renders an id renders an input with the object iri given a reply renders an input with the replied to object's iri given a draft object includes an input to publish post includes an input to save draft includes a link to return to drafts given a published object includes an input to update post does not include an input to save draft does not include a link to return to drafts an object with errors renders the error class reply.html.slang if authenticated prepopulates editor with mentions FooBarController GET /foo/bar/id_param/:id is not successful for non-numeric parameters is successful for numeric parameters it returns the id of the resource GET /foo/bar/iri_param/:id is not successful for invalid parameters is successful for valid parameters it returns the IRI of the resource helpers paginate does not render pagination controls with more pages renders the next link on the second page renders the prev link .wrap_filter_term wraps a filter term in a span wraps a wildcard % in a span wraps a wildcard _ in a span wraps an escaped wildcard % in a span wraps an escaped wildcard _ in a span does not wrap text activity_button emits a form with nested content emits a form with a csrf token emits a form with a hidden input specifying the object emits a form with a hidden input specifying the type emits a form with a hidden input specifying the visibility specifies the action specifies the method specifies the form class specifies the button class without a body emits a form with nested content given data attributes emits form data attributes emits button data attributes given a DELETE method emits a hidden input sets the method to POST given a GET method does not emit a csrf token form_button emits a form with nested content emits a form with a csrf token specifies the action specifies the method specifies the form class specifies the button class without a body emits a form with nested content given data attributes emits form data attributes emits button data attributes given a DELETE method emits a hidden input sets the method to POST given a GET method does not emit a csrf token authenticity_token emits input tag with the authenticity token error_messages emits nested div containing error message form_tag emits a form with nested content emits a form with a csrf token specifies the action specifies the method sets the error class given data attributes emits data attributes given a nil model does not set the error class given a DELETE method emits a hidden input sets the method to POST given a GET method does not emit a csrf token sets the method to GET input_tag emits div containing label and input tags emits a label tag with the label text emits an input tag with the specified name emits an input tag with the associated value specifies the class overrides the default type specifies the placeholder sets the error class given data attributes emits data attributes given a nil model emits an input tag with the specified name does not set the error class given a value with an ampersand and quotes emits an input tag with the associated value select_tag emits div containing label and select tags emits a label tag with the label text emits a select tag with the specified name emits option tags with the specified values emits option tags with the specified text given a field value that matches an option emits an option tag with the option selected given a selected value that matches an option emits an option tag with the option selected specifies the class sets the error class given data attributes emits data attributes given a nil model emits a select tag with the specified name does not set the error class submit_button emits an input of type submit specifies the value specifies the class params_to_inputs emits hidden fields emits hidden field emits hidden field emits hidden field activity_pub_collection generates a JSON-LD document is an ordered collection nests the first page of items the first page of items is an ordered collection page includes an ordered collection of items does not include a link to the next page with more pages includes a link to the next page the second page of items is an ordered collection page includes an ordered collection of items includes a link to the previous page does not include a link to the previous page with more pages includes a link to the next page error_block emits a block of errors field_pair emits a key/value pair sanitize sanitizes HTML pluralize pluralizes the noun does not pluralize the noun pluralizes the noun comma emits a comma does not emit a comma id generates an id back_path gets the back path home_path gets the home path sessions_path gets the sessions path search_path gets the search path settings_path gets the settings path filters_path gets the filters path filter_path given a term gets the filter path gets the filter path metrics_path gets the metrics path remote_activity_path given an activity gets the remote activity path gets the remote activity path activity_path given an activity gets the activity path gets the activity path anchor given an object gets the anchor gets the anchor objects_path gets the objects path remote_object_path given an object gets the remote object path gets the remote object path object_path given an object gets the object path gets the object path remote_thread_path given an object gets the remote thread path gets the remote thread path thread_path given an object gets the thread path gets the thread path edit_object_path given an object gets the edit object path gets the edit object path reply_path given an object gets the reply path gets the reply path approve_path given an object gets the approve path gets the approve path unapprove_path given an object gets the unapprove path gets the unapprove path block_object_path given an object gets the block object path gets the block object path unblock_object_path given an object gets the unblock object path gets the unblock object path remote_actor_path given an actor gets the remote actor path gets the remote actor path actor_path given an actor gets the actor path gets the actor path block_actor_path given an actor gets the block actor path gets the block actor path unblock_actor_path given an actor gets the unblock actor path gets the unblock actor path actor_relationships_path given an actor and a relationship gets the actor relationships path gets the actor relationships path outbox_path given an actor gets the outbox path gets the outbox path inbox_path given an actor gets the inbox path gets the inbox path actor_remote_follow_path given an actor gets the actor remote follow path gets the actor remote follow path object partials label.html.slang the actor is the author renders one profile icon the actor is not the author renders two profile icons content.html.slang given HTML content renders the content as is given Markdown content renders the content as HTML does not render a button to the threaded conversation does not render a button to the threaded conversation does not render a button to the threaded conversation when authenticated renders a button to the threaded conversation renders a button to the threaded conversation renders a button to the threaded conversation if approved renders a button to the threaded conversation renders a button to the threaded conversation when is draft does not render a button to edit when authenticated does not render a button to reply does not render a button to like does not render a button to share renders a button to delete renders a button to edit does not render a button to block does not render a button to unblock when is remote does not render a button to block does not render a button to unblock when authenticated renders a button to block does not render a button to unblock if object is blocked does not render a button to block renders a button to unblock and object has been announced does not render a button to block and object has been liked does not render a button to block when in reply to a post by the account's actor does not render a checkbox does not render a checkbox when authenticated renders a checkbox renders a checkbox expects the checkbox not to be checked expects the checkbox to be checked if object content is externally hosted renders link to the external content if object content is not externally hosted renders name of the object object_partial renders the activity type as a class when with detail renders the activity type as a class when in a thread renders the activity type as a class actor actor.html.slang does not render an editor if authenticated does not render an editor if account actor is actor renders an editor actor.json.ecr does not render a shared inbox endpoint if local renders a shared inbox endpoint Ktistec::Handler::Canonical get /does/not/exist returns 404 returns 200 given a canonical mapping returns 200 returns 301 and a request for JSON does not redirect does not redirect and a request with a segment suffix returns 200 returns 301 Ktistec::Lexer #advance returns a token is end of input is a literal string is a literal string is an error if the string is unterminated is a literal int is a literal float is a literal int is a literal float is a literal int is a literal float is a constant is an identifier is an operator is an operator is an operator ignores whitespace ignores comments handles successive tokens handles successive tokens ignores whitespace ignores comments Ktistec::Network .resolve returns the IRI resolves and returns the IRI resolves and returns the IRI Ktistec::HTML .enhance returns enhancements returns attachments for embedded images strips attributes from the figure strips attributes from the figcaption removes the anchor but preserves the img and figcaption preserves lone br removes trailing br replaces double br with p handles inline elements correctly handles inline elements correctly handles inline elements correctly handles inline elements correctly handles block elements correctly handles block elements correctly handles block elements correctly handles block elements correctly handles block elements correctly handles block elements correctly handles block elements correctly handles block elements correctly handles block elements correctly handles block elements correctly handles Trix figure elements correctly preserves adjacent elements preserves text trims empty p hashtags replaces hashtags with markup preserves adjacent text skips hashtags inside links returns hashtags mentions replaces matched mentions with links preserves adjacent text skips mentions inside links returns mentions given a mention that doesn't match any actor replaces unmatched mentions with spans doesn't return mentions handles both hashtags and mentions Ktistec::Node #clone clones the node Ktistec::PrefixOperator #nud returns a prefix operator consumes the expression to the right raises an error if there is no expression to the right Ktistec::InfixOperator #led returns an infix operator consumes the expression to the right raises an error if there is no expression to the right Ktistec::RuleDefinition::Pattern #parse allows keywords as arguments allows expressions as arguments allows keywords in option keys allows expressions in option values raises on error if option key is invalid raises an error if definition includes multiple constants raises an error if definition does not include a constant given a pattern returns a pattern parses the constant parses the arguments parses the options positions the parser on the next token Ktistec::RuleDefinition #std returns a rule parses the name parses the trace keyword parses the patterns raises an error if name is not a literal string raises an error if end is missing #clone deep copies patterns Ktistec::Parser #current returns a node is a constant is an identifier is an operator is a rule definition is a keyword raises an error when string is unterminated raises an error when operator is invalid #advance raises an error if specified id does not match the current node's id #expression is end of input given a prefix operator parses the expression positions the parser on the next token positions the parser on the next token positions the parser on the next token raises an error if there is no expression to the right raises an error if there is no expression to the right given an infix operator parses the expression positions the parser on the next token positions the parser on the next token positions the parser on the next token raises an error if there is no expression to the right raises an error if there is no expression to the right raises an error if there is no expression to the left given a function operator parses the expression positions the parser on the next token positions the parser on the next token positions the parser on the next token raises an error if there is no closing parenthesis raises an error if there is no closing parenthesis raises an error if there is no expression to the left raises an error if the expression to the left is not an identifier #statement is end of input given a rule definition parses the statement positions the parser on the next token raises an error if end is missing #statements returns no statements returns two rules Ktistec::Database .recreate_timeline_and_notifications given notifications leaves entries that belong removes entries that don't belong adds entries that are missing given a timeline leaves entries that belong removes entries that don't belong adds entries that are missing Ktistec::Compiler #compile returns a domain compiles rule definitions given a rule the compiled domain defines one rule with rule has the specified name defines conditions with conditions is a literal is a variable handles not handles not with accessor invokes accessor raises an error if receiver doesn't respond to accessor raises an error if receiver is unbound is a literal is a variable handles not handles not with accessor invokes accessor raises an error if receiver doesn't respond to accessor raises an error if receiver is unbound defines actions with actions invokes assert method invokes retract method given a rule with 'within' supports the predicate 'within' given a rule with 'strip' supports the function 'strip' given a rule with 'filter' supports the function 'filter' given a rule definition with trace specified enables tracing given a rule definition using any defines conditions is Any given a rule definition using none defines conditions is None given a rule definition using a fact defines conditions is a nullary pattern given a fact and a rule definition asserting a fact defines actions asserts a fact and a rule definition retracting a fact defines actions retracts a fact given a rule definition using a property fact defines conditions is a unary pattern given a fact and a rule definition asserting a property fact defines actions asserts a fact and a rule definition retracting a property fact defines actions retracts a fact given a rule definition using a relationship fact defines conditions is a binary pattern given a fact and a rule definition asserting a relationship fact defines actions asserts a fact and a rule definition retracting a relationship fact defines actions retracts a fact raises an error if constant is undefined raises an error if there are too many arguments raises an error if accessor is undefined TaskWorker #work calls perform on all scheduled tasks ensures task is not left running stores the backtrace when task throws an uncaught exception sets complete to true sets complete to true unless task wasn't scheduled sets complete to true unless task throws an uncaught exception sets complete to true unless task is rescheduled sets last_attempt_at returns true if work was done returns false if work was not done .destroy_old_tasks destroys old complete tasks destroys old failed tasks ignores new tasks .clean_up_running_tasks sets running tasks to not running Point .charts returns the names of all charts .chart returns the points in the chart returns the points before the ending of the range returns the points after the beginning of the range does not return points not in the chart Relationship validations runs validation and rejects runs validation and rejects rejects duplicates successfully validates instance Account #password= changes the encrypted_password does not change the encrypted_password if the password is nil does not change the encrypted_password if the password is an empty string #encrypted_password returns the encrypted password #check_password returns true if supplied password is correct returns false if supplied password is not correct #validate rejects the username as too short rejects the username as containing invalid characters rejects the username as not unique rejects the password as too short rejects the password as weak rejects the timezone as unsupported given an actor to associate with #actor= updates the iri #actor updates the actor #save updates the associated actor's public key updates the associated actor's private key #sessions gets related sessions Relationship::Content::Approved validation rejects missing actor rejects missing object successfully validates instance Relationship::Content::Inbox creation creates confirmed relationships by default validation rejects missing owner rejects missing activity permits duplicates successfully validates instance Relationship::Content::Notification creation creates confirmed relationships by default validation rejects missing owner successfully validates instance Relationship::Content::Outbox creation creates confirmed relationships by default validation rejects missing owner rejects missing activity permits duplicates successfully validates instance Relationship::Content::Timeline creation creates confirmed relationships by default validation rejects missing owner rejects missing object successfully validates instance Relationship::Content::Canonical validation rejects relative from_iri rejects relative to_iri given a route rejects a from_iri that routes rejects a to_iri that does not route given an exiting relationship rejects existing from_iri rejects existing to_iri successfully validates instance Relationship::Content::Follow::Hashtag validation rejects missing actor rejects blank name successfully validates instance #name= sets to_iri #name gets to_iri Relationship::Content::Follow::Thread validation rejects missing actor rejects blank thread successfully validates instance #thread= sets to_iri #thread gets to_iri Relationship::Content::Follow::Mention validation rejects missing actor rejects blank name successfully validates instance #name= sets to_iri #name gets to_iri Relationship::Social::Follow validation rejects missing actor rejects missing actor successfully validates instance #activity? returns nil given an associated follow activity returns the associated follow activity that has been undone returns nil given multiple associated follow activities returns the most recent follow activity Tag #save increments the count #destroy decrements the count .match returns the best match returns no match validations rejects if subject_iri is blank rejects if subject_iri is not an absolute URI successfully validates instance ActivityPub .from_json_ld raises an error if the type is not specified defaults the instance to the specified class raises an error if the type is not supported defaults the instance to the specified class instantiates the correct subclass creates an instance if one doesn't exist updates the instance if it already exists .from_json_ld? returns nil if the type is not specified returns nil if the type is not supported Task #runnable? is true if running is false, complete is false and backtrace is nil is false if running is true is false if complete is true is false if backtrace is not nil #past_due? is true if next_attempt_at is nil is true if next_attempt_at is in the past is false if next_attempt_at is in the future #schedule raises an error if the task is running raises an error if the task has a backtrace sets the next_attempt_at if specified sets complete to false saves the task .scheduled returns the scheduled tasks in priority order does not reserve the scheduled tasks returns the scheduled tasks in priority order reserves the scheduled tasks LastTime validations rejects blank name rejects duplicates rejects non-existent account accepts nil account_id successfully validates instance ActivityPub::Object #source= assigns content assigns media type assigns attachments assigns hashtags creates hashtags assigns mentions creates mentions doesn't assign if the object isn't local addressing (to) replaces mentions when validating returns false if the canonical path is not valid is valid given embedded objects gets the ids caches the replies .from_json_ld instantiates the subclass creates a new instance when addressed to the public collection is visible #from_json_ld updates an existing instance when addressed to the public collection is visible #to_json_ld renders an identical instance renders hashtags renders mentions #make_delete_activity instantiates a delete activity for the subject assigns the subject's attributed_to as the actor assigns the subject as the object copies the subject's to copies the subject's cc .federated_posts instantiates the correct subclass filters out deleted posts filters out blocked posts filters out posts by deleted actors filters out posts by blocked actors filters out non-public posts paginates the results .public_posts instantiates the correct subclass filters out deleted posts filters out blocked posts filters out posts by deleted actors filters out posts by blocked actors filters out non-public posts filters out replies filters out objects belonging to undone activities includes posts only once paginates the results .public_posts_count instantiates the correct subclass filters out deleted posts filters out blocked posts filters out posts by deleted actors filters out posts by blocked actors filters out non-public posts filters out replies filters out objects belonging to undone activities counts posts only once returns the count #with_statistics! updates announces count updates likes count doesn't fail when the object hasn't been saved filters out undone announces filters out undone likes #thread sets thread to its iri given a reply and a thread on object sets thread to object's thread and an in_reply_to_iri on object sets thread to object's in_reply_to_iri and an in_reply_to_iri on reply sets thread to its in_reply_to_iri sets thread to object's iri when saving the root in a thread sets reply's thread to object's thread given a follow updates follow relationships when thread changes given an existing follow relationship updates follow relationships when thread changes when threaded #with_replies_count! returns the count of replies omits deleted replies and their children omits blocked replies and their children omits destroyed replies and their children omits replies with deleted attributed to actors omits replies with blocked attributed to actors omits replies with destroyed attributed to actors given an actor doesn't count any replies and an approved object omits unapproved replies but includes their approved children doesn't include the actor's unapproved replies #thread returns all replies properly nested omits deleted replies and their children omits blocked replies and their children omits destroyed replies and their children omits replies with deleted attributed to actors omits replies with blocked attributed to actors omits replies with destroyed attributed to actors returns the depths given an approval only includes the subject and an approved object omits unapproved replies but includes their approved children doesn't include the actor's unapproved replies #ancestors returns all ancestors omits deleted replies and their parents omits blocked replies and their parents omits destroyed replies and their parents omits replies with deleted attributed to actors omits replies with blocked attributed to actors omits replies with destroyed attributed to actors returns the depths given an actor only includes the subject and an approved object omits unapproved replies but includes their approved parents doesn't include the actor's unapproved replies #activities returns the associated activities given a like includes only activities of the specified class excludes all activities of the specified class filters out undone activities filters out activities of deleted actors filters out activities of blocked actors #approved_by? returns true if approved by actor returns false if not approved by actor #external? returns true #draft? returns true if draft returns false if not local returns false if published canonical path #canonical_path returns nil by default given an existing canonical relationship returns the canonical path given an existing canonical relationship #save doesn't destroy the canonical path #canonical_path= assigns a new canonical path adds the canonical path to urls given an existing canonical relationship updates the canonical path adds the canonical path to urls removes the canonical path removes the canonical path from urls given existing urls adds the canonical URL to the urls #delete destroys the associated canonical path #destroy destroys the associated canonical path #tags returns tags ActivityPub::Collection when validating must be an absolute URI must be unique is valid .from_json_ld creates a new instance extracts items identifiers extracts items identifiers handles ordered items handles embedded first handles embedded last handles embedded prev handles embedded next handles embedded current raises an error #from_json_ld updates an existing instance extracts items identifiers extracts items identifiers handles ordered items handles embedded first handles embedded last handles embedded prev handles embedded next handles embedded current raises an error #to_json_ld renders an identical instance embeds first embeds last embeds prev embeds next embeds current embeds local item links remote item links item links item ActivityPub::Activity when validating is valid given embedded objects caches the actor caches the object caches the target .from_json_ld instantiates the subclass creates a new instance when addressed to the public collection is visible #from_json_ld updates an existing instance when addressed to the public collection is visible #to_json_ld renders an identical instance renders object and target recursively by default renders everything recursively if true renders nothing recursively if false Ktistec::Model::Serialized .new includes Ktistec::Model::Serialized .dig? returns the value cast to the specified type returns nil if key does not exist .dig_value? given a nested object returns the result of the block given an array of nested objects returns the result of the block on the first element .dig_values? given a nested object returns the result of the block as an array given an array of nested objects returns the result of the block on all elements .dig_id? given a nested object returns the identifier given a link returns the identifier given an identifier returns the identifier given an array of nested objects returns the first identifier given an array of links returns the first identifier given an array of identifiers returns the first identifier .dig_ids? given a nested object returns the identifier as an array given a link returns the identifier as an array given an identifier returns the identifier as an array given an array of nested objects returns all the identifiers given an array of links returns all the identifiers given an array of identifiers returns all the identifiers Ktistec::Model::Linked .new includes Ktistec::Model::Linked validation may be absent must be present must be an absolute URI must be unique is valid the generated accessor does not fetch and does not return the object fetches but does not return the object fetches but does not return the object when linked object is local returns but does not fetch the object returns but does not fetch the object returns but does not fetch the object when linked object is remote does not fetch and does not return the object fetches and returns the object fetches and returns the object when object is cached returns but does not fetch the object returns but does not fetch the object fetches and returns the object when linked object is cached and unchanged returns but does not fetch the object fetches and returns the object when linked object is changed returns but does not fetch the object fetches and returns the object .dereference? fetches but does not return the object fetches but does not return the object when linked object is local returns but does not fetch the object returns but does not fetch the object when object is deleted does not return and does not fetch the object returns but does not fetch the object when linked object is remote fetches and returns the object fetches and returns the object when object is cached returns but does not fetch the object fetches and returns the object when object is deleted fetches and returns the object returns but does not fetch the object #origin returns the origin #uid returns the unique identifier #local? indicates if the instance is local #cached? indicates if the instance is cached Ktistec::Model::Blockable .new includes Ktistec::Model::Blockable #block! blocks the instance sets blocked_at #unblock! unblocks the instance clears blocked_at Ktistec::Model::Renderable .new includes Ktistec::Model::Renderable #to_html renders HTML as HTML renders Markdown as HTML ActivityPub::Activity::Create #actor returns an actor or actor subclass #object returns an object or object subclass validations validates the actor is local validates the object is attributed to the actor passes validation ActivityPub::Activity::Accept #actor returns an actor or actor subclass #object returns a follow or follow subclass ActivityPub::Activity::Follow #actor returns an actor or actor subclass #object returns an actor or actor subclass #accepted_or_rejected returns nil when accepted returns the accept activity when rejected returns the reject activity validations validates the actor is local validates the object has an inbox passes validation ActivityPub::Activity::Undo #actor returns an actor or actor subclass #object returns a activity or activity subclass validations validates the actor is the object's actor passes validation ActivityPub::Activity::Delete #actor returns an actor or actor subclass #object returns an actor, object or one of their subclasses validations when the object is an object fails if the actor is not the object's creator passes validation if the object has been deleted passes validation when the object is an actor fails if the actors do not match passes validation if the object has been deleted passes validation #to_json_ld doesn't recursively serialize the actor doesn't recursively serialize the object ActivityPub::Activity::Reject #actor returns an actor or actor subclass #object returns a follow or follow subclass ActivityPub::Activity::Like #actor returns an actor or actor subclass #object returns a object or object subclass ActivityPub::Actor #username= assigns iri assigns inbox assigns outbox assigns following assigns followers assigns urls assigns attachments doesn't assign if the actor isn't local .match? returns the matched actor returns nil on failed match given empty urls matches on the iri given nil urls matches on the iri #public_key returns the public key #private_key returns the private key when using the keypair verifies the signed message when validating is valid .map given an array of icons with width and height picks the largest icon given an array of icons picks the first icon .from_json_ld instantiates the subclass creates a new instance includes the public key given an array of URLs parses the array of URLs #from_json_ld updates an existing instance includes the public key given an array of URLs parses the array of URLs #to_json_ld renders an identical instance renders the URL given an array of URLs renders the array of URLs given an array of attachments renders the array of attachments, with html links #make_delete_activity instantiates a delete activity for the subject assigns the subject as the actor assigns the subject as the object addresses (to) the public collection addresses (cc) the subject's followers and following #down? indicates that the actor is down indicates that the actor is not down #up? indicates that the actor is not up indicates that the actor is up #follow adds a public following relationship adds a public followers relationship adds a non-public following relationship adds a non-public followers relationship does not display a deleted following actor does not display a blocked following actor does not display a deleted followers actor #follows? filters response based on confirmed state filters response based on visible state returns falsey for deleted actors returns falsey for blocked actors #drafts instantiates the correct subclass filters out deleted posts filters out blocked posts filters out published posts includes only posts attributed to subject paginates the results for outbox #in_outbox instantiates the correct subclass filters out non-public posts filters out deleted posts filters out blocked posts filters out posts by deleted actors filters out posts by blocked actors filters out undone activities includes replies paginates the results #in_outbox? returns true if object is in outbox returns false if object has been deleted returns false if object has been blocked returns false if actor of activity has been deleted returns false if actor of activity has been blocked returns false if activity has been undone returns false if object is not in outbox for inbox #in_inbox instantiates the correct subclass filters out non-public posts filters out deleted posts filters out blocked posts filters out posts by deleted actors filters out posts by blocked actors filters out undone activities includes replies paginates the results #in_inbox? returns true if object is in inbox returns false if object has been deleted returns false if object has been blocked returns false if actor of activity has been deleted returns false if actor of activity has been blocked returns false if activity has been undone returns false if object is not in inbox #find_activity_for instantiates the correct subclass filters out deleted posts filters out blocked posts filters out posts by deleted actors filters out posts by blocked actors filters out undone activities filters for specific activities filters out specific activities returns the first activity #known_posts instantiates the correct subclass filters out non-public posts filters out deleted posts filters out blocked posts paginates the results #public_posts instantiates the correct subclass filters out deleted posts filters out blocked posts filters out posts by deleted actors filters out posts by blocked actors filters out non-public posts filters out replies filters out objects belonging to undone activities includes objects only once paginates the results #all_posts instantiates the correct subclass filters out deleted posts filters out blocked posts filters out posts by deleted actors filters out posts by blocked actors includes non-public posts includes replies filters out objects belonging to undone activities includes objects only once paginates the results #timeline instantiates the correct subclass returns the count filters out deleted posts filters out blocked posts filters out posts by deleted actors filters out posts by blocked actors filters out posts not associated with included activities filters out posts not associated with included activities given a prior create not in timeline includes announcements by default includes announcements filters out announcements given a reply includes replies by default includes replies filters out replies given a local post includes the post given a post without an associated activity includes the post paginates the results #notifications instantiates the correct subclass returns the count filters out undone activities filters out activities with deleted objects filters out activities with blocked objects filters out activities from deleted actors filters out activities from blocked actors given a hashtag notification includes the hashtag notification returns the count filters out deleted objects filters out blocked objects filters out objects by deleted actors filters out objects by blocked actors paginates the results approvals #approve approves the object #unapprove unapproves the object terms #terms instantiates the correct subclass paginates the results #account_uri returns the webfinger account uri Tag::Hashtag validation rejects missing subject .all_objects returns objects with the tag filters out draft objects filters out deleted objects filters out blocked objects filters out objects with deleted attributed to actors filters out objects with blocked attributed to actors filters out objects with destroyed attributed to actors paginates the results .count_objects returns count of objects with the mention filters out draft objects filters out deleted objects filters out blocked objects filters out objects with deleted attributed to actors filters out objects with blocked attributed to actors filters out objects with destroyed attributed to actors .public_objects returns objects with the tag filters out non-published objects filters out non-visible objects filters out deleted objects filters out blocked objects filters out objects with deleted attributed to actors filters out objects with blocked attributed to actors filters out objects with destroyed attributed to actors given a remote object filters out the object that has been approved includes the object paginates the results Tag::Mention validation rejects missing subject .all_objects returns objects with the mention filters out draft objects filters out deleted objects filters out blocked objects filters out objects with deleted attributed to actors filters out objects with blocked attributed to actors filters out objects with destroyed attributed to actors paginates the results .count_objects returns count of objects with the mention filters out draft objects filters out deleted objects filters out blocked objects filters out objects with deleted attributed to actors filters out objects with blocked attributed to actors filters out objects with destroyed attributed to actors Session #body= sets the body #body gets the body #string stores a string value in the session retrieves a string value from the session #string? retrieves a string value from the session #account= sets the account #account gets the account #generate_jwt generates a web token .find_by_jwt? returns the session returns nil returns nil .clean_up_stale_sessions removes old, anonymous sessions Task::RefreshActor validation rejects missing source rejects missing actor rejects local actor when task already exists for that actor rejects task rejects task if existing task is running successfully validates task if existing task is complete successfully validates task if existing task has a backtrace successfully validates task .exists? returns true if existing task is scheduled returns true if existing task is running returns false if existing task is complete returns false if existing task has a backtrace #perform fetches the actor updates the actor documents the error if fetch fails Task::Deliver validation rejects missing sender rejects missing activity successfully validates instance #recipients includes the sender by default addressed to a local recipient includes the recipient addressed to a remote recipient that is cached includes the recipient that is not cached includes the recipient addressed to a local collection does not include the collection of the sender's followers does not include the collection includes the followers when follows are not confirmed does not include the followers when followers have been deleted does not include the recipients addressed to a remote collection does not include the collection addressed to the public collection does not include the collection #perform when the object has been deleted does not fail Task::Transfer #transfer dereferences the recipient does not dereference the transferer sends the activity to the local recipient sends the activity to the remote recipient does not send the activity to the transferer given an OpenSSL error doesn't raise an error stores the failure reason does not mark the recipient as down given a Socket error doesn't raise an error stores the failure reason does not mark the recipient as down given three errors for the same recipient within the last ten days marks the recipient as down given only two errors for the same recipient does not mark the recipient as down given only two errors within the last ten days does not mark the recipient as down when the recipient is down does not send the activity to the recipient Task::UpdateMetrics #last_id retrieves the last id value from the state #last_id= stores the last id value in the state .schedule_unless_exists schedules a new task given an existing task does not schedule a new task #perform sets the next attempt at given items in the inbox creates points accumulates points for activities on the same day accumulates points in the timezone of the account creates points for activities created since the last run point already exists increments point value sets the last_id Task::Performance .schedule_unless_exists schedules a new task given an existing task does not schedule a new task #perform sets the next attempt at records three data points Task::Backup .schedule_unless_exists schedules a new task given an existing task does not schedule a new task #perform_backup sets the next attempt at dumps a backup file Task::Receive validation rejects missing receiver rejects missing activity successfully validates instance #deliver_to retrieves the deliver to value from the state retrieves the deliver to value from the state #deliver_to= stores the deliver to value in the state #recipients does not include the receiver by default addressed to the receiver includes the receiver addressed to a local recipient does not include the recipient addressed to a remote recipient does not include the recipient addressed to a local collection does not include the collection of the receiver's followers given a reply does not include the collection does not include the followers which is addressed to the local collection includes the followers when follows are not confirmed does not include the followers when followers have been deleted does not include the recipients when the original is not attributed to the receiver does not include the followers but it is itself a reply to another post by the receiver includes the followers unless it doesn't address the local colletion does not include the followers addressed to a remote collection does not include the collection does not include the receiver of the senders's followers includes the receiver when collection isn't the followers collection does not include the receiver when follows are not confirmed does not include the receiver addressed to the public collection does not include the collection does not include the receiver the receiver is a follower of the sender includes the receiver #perform when the object has already been deleted does not fail Task::Terminate validation rejects missing source rejects missing subject rejects remote subject successfully validates instance #perform when an object exists deletes the object when the object is published creates a delete activity for the object schedules a task to deliver the activity reschedules itself when no objects exist deletes the actor creates a delete activity for the actor schedules a task to deliver the activity does not reschedule itself SettingsController GET /settings returns 401 if not authorized when authorized and accepting HTML succeeds renders a form renders a form and accepting JSON succeeds renders an object POST /settings/actor returns 401 if not authorized when authorized and posting form data succeeds updates the name updates the summary updates the timezone given an account with a timezone does not updates the timezone if blank updates the password does not update the password if blank does not update the password if empty updates the image updates the icon given an actor with an image and an icon removes the image removes the icon updates the attachments and posting JSON data succeeds updates the name updates the summary updates the timezone given an account with a timezone does not updates the timezone if blank updates the password does not update the password if blank does not update the password if null updates the image updates the icon given an actor with an image and an icon removes the image removes the icon updates the attachments POST /settings/service returns 401 if not authorized when authorized and posting form data succeeds changes the footer changes the site does not change the site and posting JSON data succeeds changes the footer changes the site does not change the site POST /settings/terminate returns 401 if not authorized when authorized schedules a terminate task destroys the account ends the session redirects TagsController GET /tags/:hashtag succeeds succeeds renders the collection renders the collection renders the collection renders the collection if authenticated renders the collection renders the collection returns 404 if no tagged objects exist POST /tags/:hashtag/follow returns 401 when authenticated succeeds follows the tag given a follow returns 400 within a turbo-frame succeeds renders an unfollow button returns 404 if no tagged objects exist POST /tags/:hashtag/unfollow returns 401 when authenticated returns 400 given a follow succeeds unfollows the tag within a turbo-frame succeeds renders a follow button returns 404 if no tagged objects exist ActivitiesController GET /activities/:id renders the activity returns 404 if activity is not visible returns 404 if activity is remote returns 404 if activity does not exist when the user is the owner renders the activity returns 404 if activity is remote GET /remote/activities/:id returns 401 if not authorized when authorized renders the activity returns 404 if activity is not visible returns 404 if activity is remote returns 404 if activity does not exist and it is addressed to the public collection renders the activity renders the activity and the user is the owner renders the activity renders the activity RelationshipsController POST /actors/:username/outbox returns 401 if not authorized when authorized returns 404 if not found returns 403 if not the current account returns 400 if activity type is not supported on announce returns 400 if the object iri is missing returns 400 if object does not exist redirects when successful creates an announce activity does not create a visible activity if not public creates a visible activity if public addresses (to) the public collection addresses (to) the object's actor addresses (cc) the actor's followers collection puts the activity in the actor's outbox sends the activity to the other's inbox puts the object in the actor's timeline and the object's already in the timeline does not put the object in the actor's timeline and the object is a reply puts the object in the actor's timeline on like returns 400 if the object iri is missing returns 400 if object does not exist redirects when successful creates a like activity does not create a visible activity if not public creates a visible activity if public addresses (to) the public collection addresses (to) the object's actor addresses (cc) the actor's followers collection puts the activity in the actor's outbox sends the activity to the other's inbox does not put the object in the actor's timeline on publish returns 400 if the content is missing when validation fails returns 422 renders a form with the object redirects when successful redirects to the object view redirects to the threaded view creates a create activity creates a note object given a canonical path sets the canonical path when a draft object is specified creates a create activity does not create an object does not change the iri changes the published timestamp returns 400 if object does not exist returns 403 if attributed to another account when a published object is specified creates an update activity does not create an object does not change the iri does not change the published timestamp changes the content changes the object replied to returns 400 if object does not exist returns 403 if attributed to another account does not create a visible activity if not public creates a visible activity if public does not create a visible object if not public creates a visible object if public includes the IRI of the replied to object returns 400 if the replied to object does not exist addresses (to) the specified actor addresses (to) all mentioned actors addresses (to) the specified actor and all mentioned actors addresses (cc) the specified actor addresses (to) the public collection addresses (cc) the actor's followers collection addresses (to) the replied to object's attributed to actor enhances the content enhances the content puts the activity in the actor's outbox sends the activity to the other's inbox puts the object in the actor's timeline and the object's already in the timeline does not put the object in the actor's timeline and the object is a reply does not put the object in the actor's timeline on follow returns 400 if object does not exist redirects when successful creates an unconfirmed follow relationship creates a follow activity puts the activity in the actor's outbox sends the activity to the object's outbox does not put the object in the actor's timeline on accept returns 400 if a follow activity does not exist returns 400 if the follow activity does not belong to the actor returns 400 if the relationship does not exist confirms the follow relationship creates an accept activity puts the activity in the actor's outbox sends the activity to the other's inbox on reject returns 400 if a follow activity does not exist returns 400 if the follow activity does not belong to the actor returns 400 if the relationship does not exist confirms the follow relationship creates a reject activity puts the activity in the actor's outbox sends the activity to the other's inbox when undoing an announce returns 400 if the announce activity does not exist returns 400 if the announce activity does not belong to the actor addresses (cc) the actor's followers collection undoes the announce puts the activity in the actor's outbox sends the activity to the other's inbox when undoing a like returns 400 if the like activity does not exist returns 400 if the like activity does not belong to the actor addresses (cc) the actor's followers collection undoes the like puts the activity in the actor's outbox sends the activity to the other's inbox when undoing a follow returns 400 if the follow activity does not exist returns 400 if the follow activity does not belong to the actor returns 400 if the relationship does not exist destroys the relationship undoes the follow puts the activity in the actor's outbox sends the activity to the other's inbox on delete given an object returns 400 if the object does not exist returns 400 if the object is not local returns 400 if the object was not attributed to the actor redirects when successful redirects to the actor's home page redirects back deletes the object puts the activity in the actor's outbox sends the activity to the other's inbox given an actor returns 400 if the actor does not exist returns 400 if the actor is not local returns 400 if the actor is not the actor deletes the actor puts the activity in the actor's outbox sends the activity to the other's inbox given a remote object sends the activity to the object's inbox given a local object sends the activity to the object's inbox SearchesController GET /search returns 401 if not authorized returns 401 if not authorized when authorized presents a search form presents a search form given a handle to an actor retrieves and saves an actor retrieves and saves an actor works with a leading @ if present works with a leading @ if present ignores surrounding whitespace if present ignores surrounding whitespace if present that already exists updates the actor updates the actor presents a follow button with an existing follow presents an unfollow button with a public key doesn't nuke the public key that is local doesn't fetch the actor that is down marks the actor as up given a URL to an actor retrieves and saves an actor retrieves and saves an actor that already exists updates the actor updates the actor presents a follow button with an existing follow presents an unfollow button with a public key doesn't nuke the public key that is local doesn't fetch the actor that is down marks the actor as up given a URL to an object retrieves and saves an object retrieves and saves an object of an existing object updates the object updates the object presents a like button with an existing like presents an undo button of a local object doesn't fetch the object given a non-existent host returns 400 returns 400 given bad JSON returns 400 returns 400 RemoteFollowsController GET /actors/:username/remote-follow when accepting HTML returns 404 if not found succeeds renders a form when accepting JSON returns 404 if not found succeeds returns a template POST /actors/:username/remote-follow when posting form data returns 404 if not found renders an error if address is missing renders an error if address is blank retains the address if address is invalid redirects if succesful returns the remote location if successful returns the remote location if successful when posting JSON data returns 404 if not found returns an error message if address is missing returns an error message if address is blank retains the address if address is invalid succeeds returns the remote location if successful returns the remote location if successful GET /actors/:username/authorize-follow when accepting HTML returns 404 if not found returns 403 if different account returns 400 if the uri is missing returns 400 if the uri can't be dereferenced succeeds renders a follow page when accepting JSON returns 404 if not found returns 403 if different account returns 400 if the uri is missing returns 400 if the uri can't be dereferenced succeeds returns the actor HomeController on step 1 (set host and site names) GET / renders a form returns a template POST / rerenders if host is invalid rerenders if site is invalid rerenders if host is invalid rerenders if site is invalid sets host and redirects sets site and redirects sets host and redirects sets site and redirects on step 2 (create account) GET / renders a form returns a template POST / redirects if params are missing redirects if params are missing rerenders if params are invalid rerenders if params are invalid redirects and sets cookie creates account creates actor associates account and actor returns token creates account creates actor associates account and actor when requesting the home page if unauthenticated GET / renders a list of local actors renders a list of local actors when author is local given a create renders the object's create aspect given an announce renders the object's announce aspect given a create and an announce renders the object's create aspect when author is remote given a create and an announce renders the object's announce aspect if authenticated GET / redirects to the user's page redirects to the user's page POST / returns 404 returns 404 EverythingController /everything returns 401 if not authorized returns 401 if not authorized when authorized succeeds succeeds renders the collection renders the collection SessionsController GET /sessions responds with HTML responds with JSON POST /sessions redirects if params are missing redirects if params are missing rerenders if params are incorrect rerenders if params are incorrect sets cookie and redirects  returns token DELETE /sessions fails to authenticate fails to authenticate destroys session and redirects destroys session and redirects ObjectsController POST /objects returns 401 if not authorized when authorized succeeds succeeds creates an object creates an object when validation fails returns 422 if validation fails returns 422 if validation fails renders a form with the object renders the object GET /objects/:id succeeds succeeds renders the object renders the object returns 404 if object is a draft returns 404 if object is not visible returns 404 if object is remote returns 404 if object does not exist when authorized redirects if draft but not the author returns 404 and it's in the user's inbox succeeds if local succeeds if local returns 404 if object is remote GET /objects/:id/thread succeeds succeeds renders the collection renders the collection returns 404 if object is a draft returns 404 if object is not visible returns 404 if object is remote returns 404 if object does not exist when authorized redirects if draft but not the author returns 404 and it's in the user's inbox succeeds if local succeeds if local returns 404 if object is remote with replies renders the collection renders the collection that are approved renders the collection renders the collection GET /objects/:id/edit returns 401 if not authorized when authorized given a draft post succeeds succeeds renders a form with the object renders a button that submits to the outbox path renders a button that submits to the object update path renders an input with the draft content renders the content with a canonical path renders an input with the canonical path renders the canonical path as URL given a published post succeeds succeeds renders a form with the object renders a button that submits to the outbox path does not render a button that submits to the object update path renders an input with the content renders the content with a canonical path renders an input with the canonical path renders the canonical path as URL returns 404 if not attributed to actor returns 404 if object does not exist POST /objects/:id returns 401 if not authorized when authorized succeeds succeeds changes the content changes the content updates the canonical path updates the canonical path when validation fails returns 422 if validation fails returns 422 if validation fails renders a form with the object renders the object returns 404 if not a draft returns 404 if object does not exist DELETE /objects/:id returns 401 if not authorized when authorized succeeds succeeds deletes the object deletes the object returns 404 if not a draft returns 404 if object does not exist GET /remote/objects/:id returns 401 if not authorized when authorized succeeds succeeds renders the object renders the object returns 404 if object is a draft returns 404 if object is not visible returns 404 if object is remote if remote object is visible succeeds returns 404 if object does not exist and it's in the user's inbox succeeds succeeds GET /remote/objects/:id/thread returns 401 when authorized succeeds succeeds renders the collection renders the collection returns 404 if object is a draft returns 404 if object is not visible returns 404 if object is remote if remote object is visible succeeds returns 404 if object does not exist and it's in the user's inbox succeeds succeeds with replies renders the collection renders the collection GET /remote/objects/:id/reply returns 401 when authorized succeeds renders the object renders the form prepopulates editor with mentions returns 404 if object is a draft returns 404 if object is not visible returns 404 if object is remote if remote object is visible succeeds returns 404 if object does not exist POST /remote/objects/:id/approve returns 401 when authorized succeeds approves the object but it's already approved returns 400 returns 404 if object does not exist POST /remote/objects/:id/unapprove returns 401 when authorized succeeds unapproves the object but it's already unapproved returns 400 returns 404 if object does not exist POST /remote/objects/:id/block returns 401 when authorized succeeds blocks the object returns 404 if object does not exist POST /remote/objects/:id/unblock returns 401 when authorized succeeds unblocks the object returns 404 if object does not exist POST /remote/objects/:id/follow returns 401 when authorized succeeds follows the thread within a turbo-frame succeeds renders an unfollow button given a reply succeeds follows the root object of the thread within a turbo-frame succeeds renders an unfollow button returns 404 if object is draft returns 404 if object does not exist POST /remote/objects/:id/unfollow returns 401 when authorized given a follow succeeds unfollows the thread within a turbo-frame succeeds renders a follow button given a reply succeeds unfollows the root object of the thread within a turbo-frame succeeds renders a follow button returns 404 if object is draft returns 404 if object does not exist POST /remote/objects/fetch returns 401 if not authorized when authorized succeeds succeeds makes a request fetch the object makes a request fetch the object makes a request to fetch the actor makes a request to fetch the actor if object has been deleted renders an error message if post not found renders an error message if post not found if author has been deleted renders an error message if post's author not found renders an error message if post's author not found RelationshipsController POST /actors/:username/inbox returns 404 if account not found returns 400 if activity is blank returns 400 if activity can't be verified returns 409 if activity was already received and processed does not return 409 if the activity is accept does not return 409 if the activity is reject returns 403 if the activity claims to be local returns 403 if the activity's actor claims to be local returns 400 if the activity cannot be deserialized due to an unsupported type returns 400 if activity is not supported returns 400 if actor is not present does not save the activity on failure when unsigned retrieves the activity from the origin does not retrieve the actor from the origin saves the activity is successful and the actor is not cached retrieves the actor from the origin saves the actor saves the actor's public key is successful and the actor is embedded in the activity retrieves the actor from the origin saves the actor saves the actor's public key is successful and the actor is referenced by the activity retrieves the actor from the origin saves the actor saves the actor's public key is successful when signed does not retrieve the activity from the origin does not retrieve the actor from the origin saves the activity is successful and the actor is not cached retrieves the actor from the origin saves the actor saves the actor's public key is successful and the actor is embedded in the activity retrieves the remote actor from the origin saves the actor saves the actor's public key is successful and the actor is referenced by the activity retrieves the remote actor from the origin saves the actor saves the actor's public key is successful and the actor is cached but doesn't have a public key retrieves the actor from the origin updates the actor's public key is successful but the public key is wrong retrieves the activity from the origin does not retrieve the actor from the origin returns 400 if the activity can't be verified when the other actor is down marks the actor as up on announce returns 400 if no object is included fetches object if remote doesn't fetch the object if embedded fetches the attributed to actor saves the object puts the activity in the actor's inbox puts the activity in the actor's notifications puts the object in the actor's timeline and the object's already in the timeline does not put the object in the actor's timeline and the object's a reply puts the object in the actor's timeline and the activity is addressed to the other's followers does not put the activity in the actor's inbox and the actor follows other puts the activity in the actor's inbox and the activity is addressed to the public collection does not put the activity in the actor's inbox and the actor follows other puts the activity in the actor's inbox is successful on like returns 400 if no object is included fetches object if remote doesn't fetch the object if embedded fetches the attributed to actor saves the object puts the activity in the actor's inbox puts the activity in the actor's notifications does not put the object in the actor's timeline on create returns 400 if no object is included returns 400 if object is not attributed to activity's actor fetches object if remote doesn't fetch the object if embedded saves the object puts the activity in the actor's inbox does not put the activity in the actor's notifications puts the object in the actor's timeline and the object's already in the timeline does not put the object in the actor's timeline and the object's a reply does not put the object in the actor's timeline and object mentions the actor puts the activity in the actor's notifications and the activity is addressed to the other's followers does not put the activity in the actor's inbox and the actor follows other puts the activity in the actor's inbox and the activity is addressed to the public collection does not put the activity in the actor's inbox and the actor follows other puts the activity in the actor's inbox is successful on update returns 400 if no object is included returns 400 if object is not attributed to activity's actor fetches object if remote doesn't fetch the object if embedded updates the object puts the activity in the actor's inbox is successful on follow returns 400 if actor is missing returns 400 if object is missing when object is this account creates an unconfirmed follow relationship puts the activity in the actor's inbox puts the activity in the actor's notifications does not put the object in the actor's timeline and activity isn't addressed puts the activity in the actor's inbox when object is not this account does not create a follow relationship puts the activity in the actor's inbox does not put the activity in the actor's notifications does not put the object in the actor's timeline and activity isn't addressed puts the activity in the actor's inbox on accept returns 400 if relationship does not exist returns 400 if related activity does not exist returns 400 if it's not accepting the actor's follow accepts the relationship accepts the relationship even if previously received on reject returns 400 if relationship does not exist returns 400 if related activity does not exist returns 400 if it's not rejecting the actor's follow rejects the relationship rejects the relationship even if previously received when undoing an announce returns 400 if related activity does not exist returns 400 if the announce and undo aren't from the same actor puts the activity in the actor's inbox marks the announce as undone succeeds a like returns 400 if related activity does not exist returns 400 if the like and undo aren't from the same actor puts the activity in the actor's inbox marks the like as undone succeeds a follow returns 400 if relationship does not exist returns 400 if related activity does not exist returns 400 if the follow to undo isn't for this actor returns 400 if the follow and undo aren't from the same actor puts the activity in the actor's inbox destroys the relationship marks the follow as undone succeeds when deleting an object returns 400 if the object does not exist returns 400 if the object isn't from the activity's actor marks the object as deleted succeeds using a tombstone marks the object as deleted succeeds signature is not valid but the remote object no longer exists checks for the existence of the object marks the object as deleted succeeds an actor returns 400 if the actor does not exist returns 400 if the actor isn't the activity's actor marks the actor as deleted succeeds signature is not valid but the remote actor no longer exists checks for the existence of the actor marks the actor as deleted succeeds MetricsController::Chart .labels returns the labels at daily granularity returns the labels at weekly granularity returns the labels at monthly granularity returns the labels at yearly granularity returns an empty collection #data returns the summated data at daily granularity returns the summated data at weekly granularity returns the summated data at monthly granularity returns the summated data at yearly granularity returns the averaged data at daily granularity returns the averaged data at weekly granularity returns the averaged data at monthly granularity returns the averaged data at yearly granularity returns an empty collection MetricsController /metrics returns 401 if not authorized returns 401 if not authorized when authorized succeeds succeeds renders metrics chart renders metrics labels renders metrics datasets renders metrics data WellKnownController webfinger returns 400 if bad request returns 400 if bad request returns 400 if bad host returns 404 if not found returns 200 if found returns 200 if 'acct' URI scheme is missing returns 200 if 'https' URI scheme is used returns 200 if 'https' URI scheme is used returns the subject returns aliases returns reference to the actor document returns reference to the profile page returns reference to the template nodeinfo returns 200 returns reference to the nodeinfo document returns the version returns software returns protocols returns services returns open registrations returns usage returns metadata RelationshipsController GET /actors/:username/:relationship returns 404 if not found returns 404 if not found returns 401 if relationship type is not supported returns 401 if relationship type is not supported when unauthorized renders only the related public actors renders only the related public actors when authorized renders all the related actors renders all the related actors renders only the related public actors renders only the related public actors UploadsController POST /uploads returns 401 if not authorized when authorized is successful returns the resource URL in the location header returns the resource path in the response stores the file if file is not present returns 400 DELETE /uploads/:p1/:p2/:p3/:id returns 401 if not authorized when authorized is successful deletes the file returns 400 if the path contains invalid characters returns 403 if the upload does not belong to the user returns 404 if the upload does not exist DELETE /uploads returns 401 if not authorized when authorized is successful deletes the file returns 400 if the path contains invalid characters returns 403 if the upload does not belong to the user returns 404 if the upload does not exist SuggestionsController /tags returns 401 if not authorized when authorized hashtag returns the best match mention returns the best match returns 400 if no prefix is specified MentionsController GET /mentions returns 401 returns 401 when authenticated succeeds succeeds renders the collection renders the collection renders the collection renders the collection returns 404 if no such mention exists POST /mentions/follow returns 401 when authenticated succeeds follows the mention given a follow returns 400 within a turbo-frame succeeds renders an unfollow button returns 404 if no mentioned objects exist POST /mentions/unfollow returns 401 when authenticated returns 400 given a follow succeeds unfollows the mention within a turbo-frame succeeds renders a follow button returns 404 if no mentioned objects exist ActorsController GET /actors/:username returns 404 if not found returns 404 if not found returns 200 if found returns 200 if found responds with HTML responds with JSON when authorized with no filters it renders all posts filters out shares from posts given a reply with no filters it renders all posts filters out replies from posts GET /actors/:username/public-posts returns 404 if not found returns 404 if not found succeeds succeeds when author is local given a create renders the object's create aspect given an announce renders the object's announce aspect given a create and an announce renders the object's create aspect when author is remote given a create and an announce renders the object's announce aspect renders the collection renders the collection GET /actors/:username/posts returns 401 if not authorized returns 401 if not authorized when authorized returns 404 if not found returns 404 if not found returns 403 if different account returns 403 if different account succeeds succeeds when author is local given a create renders the object's create aspect given an announce renders the object's announce aspect given a create and an announce renders the object's create aspect when author is remote given a create and an announce renders the object's announce aspect renders the collection renders the collection GET /actors/:username/timeline returns 401 if not authorized returns 401 if not authorized when authorized returns 404 if not found returns 404 if not found returns 403 if different account returns 403 if different account succeeds succeeds updates the last checked timestamp updates the last checked timestamp when author is the actor given a create renders the object's create aspect given an announce renders the object's announce aspect when author is not the actor given a create renders the object's create aspect given an announce renders the object's announce aspect given both a create and an announce outside of actor's mailbox renders the object without aspect given a create, and an announce outside of actor's mailbox renders the object's create aspect given an announce, and a create outside of actor's mailbox renders the object's announce aspect given a like renders the object without aspect and a create renders the object's create aspect and an announce renders the object's announce aspect renders an empty collection renders an empty collection GET /actors/:username/notifications returns 401 if not authorized returns 401 if not authorized when authorized returns 404 if not found returns 404 if not found returns 403 if different account returns 403 if different account succeeds succeeds updates the last checked timestamp updates the last checked timestamp renders an empty collection renders an empty collection GET /actors/:username/drafts returns 401 if not authorized returns 401 if not authorized when authorized returns 404 if not found returns 404 if not found returns 403 if different account returns 403 if different account succeeds succeeds renders the collection renders the collection GET /remote/actors/:id returns 401 if not authorized returns 401 if not authorized when authorized returns 404 if not found returns 404 if not found renders the actor renders the actor POST /remote/actors/:id/block returns 401 if not authorized when authorized returns 404 if not found succeeds blocks the actor POST /remote/actors/:id/unblock returns 401 if not authorized when authorized returns 404 if not found succeeds unblocks the actor POST /remote/actors/:id/refresh returns 401 if not authorized when authorized returns 404 if not found schedules the refresh task FiltersController GET /filters returns 401 if not authorized returns 401 if not authorized when authorized succeeds succeeds renders the collection renders the collection POST /filters returns 401 if not authorized returns 401 if not authorized when authorized succeeds succeeds adds a new content filter term adds a new content filter term returns 422 if term is blank returns 422 if term is blank renders an error message if term is blank returns an error message if term is blank given existing terms returns 422 if term already exists returns 422 if term already exists renders an error message if term already exists renders an error message if term already exists DELETE /filters/:id returns 401 if not authorized returns 401 if not authorized when authorized returns 404 if term does not exist returns 404 if term does not exist given existing terms returns 403 if term does not belong to the actor returns 403 if term does not belong to the actor redirects if successful redirects if successful destroys the term destroys the term Ktistec::Model::Common .new includes Ktistec::Model::Common timestamps sets created_at sets updated_at does not change created_at changes updated_at Ktistec::Model::Undoable .new includes Ktistec::Model::Undoable #undo! undoes the instance sets undone_at an undone record isn't counted isn't counted unless explicitly included isn't counted isn't counted unless explicitly included isn't returned isn't returned unless explicitly included can't be found can't be found unless explicitly included can't be found can't be found unless explicitly included can't be found can't be found unless explicitly included can't be found can't be found unless explicitly included an undone instance won't be validated won't be saved Ktistec::Model::Deletable .new includes Ktistec::Model::Deletable #delete! deletes the instance sets deleted_at a deleted record isn't counted isn't counted unless explicitly included isn't counted isn't counted unless explicitly included isn't returned isn't returned unless explicitly included can't be found can't be found unless explicitly included can't be found can't be found unless explicitly included can't be found can't be found unless explicitly included can't be found can't be found unless explicitly included a deleted instance won't be validated won't be saved Ktistec::Model::Polymorphic .new includes Ktistec::Model::Polymorphic .count returns the count returns the count for subclass .all finds all instances finds all instances of subclass .where finds all matching instances does not find any matching instances of subclass .find finds the matching instance finds the matching instance of subclass returns the correct subclass populates the uninherited properties of subclass populates the uninherited properties of subclass populates the uninherited properties of subclass raises an error raises an error when instantiating an abstract model raises an error raises an error #as_a returns the correct subclass raises an error Ktistec::Settings initializes instance from the persisted values #save persists assigned values to the database #assign sets the host sets the site sets the footer #valid? expects host to be present expects host to specify a scheme expects host to specify a host name expects host to specify a host name expects host to specify a host name expects host not to specify a fragment expects hosts not to specify a query expects host not to specify a path expects site to be present Ktistec ::VERSION should return the version .settings returns the settings singleton given previous errors clears the errors when getting the settings singleton given initialized settings .host returns the host .site returns the site .footer returns the footer Ktistec::CSRF sends GETs to next handler blocks POSTs without the token allows POSTs with the correct token in FORM submit allows POSTs with the correct token in HTTP header allows POSTs to allowed route allows POSTs to allowed route using wildcards does not allow POSTs to mismatched route using wildcards outputs error string calls an error proc with context Ktistec::Rewrite get /@foobar rewrites the request get /%40foobar rewrites the request Ktistec::Database .all_migrations returns migrations .all_versions returns versions .all_applied_versions does not include test migration .all_pending_versions includes test migration .do_operation creates and destroys the migration applies and reverts the migration Ktistec::Database::Migration .columns returns the table's columns .indexes returns the table's indexes .add_column adds the column adds the index .remove_column removes the column removes the index retains the data Ktistec::Rule .make_pattern inherits from School::Pattern given a pattern class #vars returns the vars returns the vars returns the vars returns the vars returns the vars and a database and models #match with no arguments invokes the block once for each match does not bind values with an undefined argument raises an error with a lit target that matches a model invokes the block once does not bind values with a lit target that does not match a model does not invoke the block does not bind values does not invoke the block does not bind values with an unbound var target invokes the block once for each match binds the target to each match with a bound var target that matches a model invokes the block once binds the target to the match with a bound var target that does not match a model does not invoke the block does not bind values does not invoke the block does not bind values with a not target invokes the block once for each match binds the target to each match invokes the block once for each match binds the target to each match with a within target invokes the block once for each match binds the target to each match does not invoke the block does not bind values with a lit association that matches a model invokes the block once does not bind values with a lit association that does not match a model does not invoke the block does not bind values with an unbound var association invokes the block once for each match binds the association to each match with a bound var association that matches a model invokes the block once binds the match with a bound var association that does not match a model does not invoke the block does not bind values with a not association invokes the block once binds the match invokes the block once binds the match with a within association invokes the block once binds the match invokes the block once binds the match with a lit property that matches a model value invokes the block once does not bind values with a lit property that matches a model value through accessor invokes the block once does not bind values with a lit property that does not match a model value does not invoke the block does not bind values does not invoke the block does not bind values with an unbound var property invokes the block once for each match binds the property value to each match with a bound var property that matches a model value invokes the block once binds the match with a bound var property that does not match a model value does not invoke the block does not bind values does not invoke the block does not bind values with a not property invokes the block twice binds the match invokes the block twice binds the match with a within property invokes the block twice binds the match invokes the block twice binds the match with a property and the function 'strip' invokes the block once binds the match invokes the block once binds the match invokes the block once binds the match with a property and the predicate 'filter' invokes the block once binds the match invokes the block once binds the match invokes the block once binds the match with a property, the predicate 'filter', and the function 'strip' invokes the block once binds the match invokes the block once binds the match invokes the block once binds the match with a wildcard invokes the block once binds the match with an escaped wildcard invokes the block once binds the match with an escaped escape invokes the block once binds the match via a derived property invokes the block once binds the match with a target with a cached association invokes the block once binds the association with a target with an uncached association does not invoke the block does not bind values with a target with a non-nil property invokes the block once binds the association with a target with a nil property does not invoke the block does not bind values .assert creates an instance creates an instance .retract destroys an instance destroys an instance Ktistec::Util .id generates a random identifier .render_as_text ignores empty content removes inline markup replaces block elements with newlines leaves bare text alone leaves escaped content alone .sanitize ignores empty content removes forbidden tags and their content entirely replaces unsupported tags with their content preserves supported tags strips attributes preserves href on links, adds target and rel attributes to remote links preserves href on links, adds data-turbo-frame attribute to local links preserves href on paths, adds data-turbo-frame attribute preserves src and alt on images, adds loading attribute and compatibility classes preserves 'invisible' in class attribute on span elements preserves 'ellipsis' in class attribute on span elements doesn't corrupt element order leaves bare text alone leaves escaped content alone .to_sentence returns an empty string returns the word returns the words in sentence form returns the words in sentence form uses the specified words connector uses the specified last word connector .pluralize pluralizes the noun pluralizes the noun pluralizes the noun pluralizes the noun Ktistec::Util::PaginatedArray .more changes the indicator #map returns a paginated array returns a paginated array with the results of applying the supplied block returns an indication of whether there are more results Ktistec::JWT .encode encodes the payload .decode decodes the token raises an error if the token is not well-formed raises an error if the token is not encoded correctly raise an error if the signature is not correct .expired? returns true if payload is expired returns false if payload is not expired Ktistec::JSON_LD ::CONTEXTS loads stored contexts .expand returns a JSON document given JSON document with vocabulary #[] returns terms given JSON-LD document with embedded context #[] returns mapped terms given JSON-LD document with remote context #[] returns mapped terms given JSON-LD document with mixed context #[] returns mapped terms given JSON-LD document using compact IRIs #[] returns mapped terms returns mapped terms returns mapped terms given JSON-LD document with mapped keys #[] returns mapped terms given JSON-LD document with nested objects #[] returns mapped terms given JSON-LD document with natural language values #[] returns merged values given JSON-LD document with no natural language values #[] returns value as a map given JSON-LD document with uncached context #[] gently ignores the context given a context term without an id #[] ignores the invalid term given no context #[] assumes an activitystreams context applies given a URL to a locally hosted litepub schema #[] assumes a canonical litepub context applies Ktistec::Method post /foo/bar/delete invokes the delete action invokes the post action Ktistec::Auth get /foo/bar/auth anonymous session fails to authenticate fails to authenticate authenticated session successfully authenticates successfully authenticates get /foo/bar/skip anonymous session doesn't authenticate but doesn't fail doesn't authenticate but doesn't fail authenticated session successfully authenticates successfully authenticates Ktistec::Open .open fetches the page follows redirects to page fails on errors fails on errors fails on errors fails on errors .open? returns nil on errors Ktistec::Signature .sign returns headers includes a signature includes digest header if the body is supplied does not include digest header if the body is not supplied includes content type header if content type is supplied does not include content type header if content type is not supplied includes content length header if content length is supplied does not include content length header if content length is not supplied includes accept header if accept is supplied does not include accept header if accept is not supplied with hs2019 sets the algorithm signature parameter to 'rsa-sha256' sets the created signature parameter sets the expires signature parameter includes (created) in the headers signature parameter includes (expires) in the headers signature parameter with rsa-sha256 sets the algorithm signature parameter to 'rsa-sha256' includes date in the headers signature parameter .verify raises an error if the signature header is not present raises an error if the signature header is malformed raises an error if the signing keys don't match raises an error if the host header isn't signed raises an error if the host doesn't match raises an error if the port doesn't match given a non-standard port raises an error if the port doesn't match verifies signature raises an error if the (request-target) header isn't signed raises an error if the request target path doesn't match raises an error if the request target method doesn't match with hs2019 raises an error if the (created) header isn't signed raises an error if the (created) header doesn't match raises an error if the (expires) header doesn't match raises an error if date is out of range raises an error if date is out of range verifies signature with rsa-sha256 raises an error if the date header isn't signed raises an error if the date header doesn't match raises an error if date is out of range raises an error if date is out of range verifies signature raises an error if the digest header isn't signed raises an error if the digest header doesn't match raises an error if the body digest doesn't match raises an error if the content type header doesn't match raises an error if the content length header doesn't match raises an error if the accept header doesn't match Ktistec::Controller get /foo/bar/host gets the host get /foo/bar/accepts responds with html responds with text responds with json responds with json responds with json post /foo/bar/turbo-frame responds with turbo-frame does not respond with turbo-frame get /foo/bar/created redirects with 302 redirects with 201 get /foo/bar/redirect redirects with 301 sets the location header includes the body /foo/bar/ok responds with json responds with text responds with html responds with json by default prefers json sets the content type sets the content type sets the content type HTTP::Server::Context creates a new session returns the session token in a header returns the session token in a cookie anonymous session uses an existing session with expired token creates a new session with invalid token creates a new session with new secret key creates a new session authenticated session uses an existing session with expired token creates a new session with invalid token creates a new session with new secret key creates a new session SQLite3 extensions given an array deserializes a read serializes a write given JSON deserializes a read serializes a write deserializes a read serializes a write deserializes a read serializes a write strip strips the markup strips the markup strips the markup Ktistec::Model .table_name returns the table name returns the table name #table_name returns the table name returns the table name .values raises an error if column doesn't exist .conditions raises an error if column doesn't exist .all_subtypes returns type and all subtypes returns type and all subtypes .query_and_paginate includes the additional columns .query_all includes the additional columns .query_one includes the additional columns #to_sentence converts the type to a string converts the type to a string converts the types to a string converts the types to a string .new creates a new instance bulk assigns properties bulk assigns properties supports assignment of nil assigns belongs_to associations assigns belongs_to associations raises an error if property type is wrong raises an error if property type is wrong raises an error if a non-nilable property is not assigned raises an error if a non-nilable property is not assigned does not raise an error if the non-nilable property is assigned via an alias does not raise an error if the non-nilable property is assigned via an association #assign bulk assigns properties bulk assigns properties bulk assigns properties supports assignment of nil assigns belongs_to associations assigns has_one associations assigns has_many associations raises an error if property type is wrong raises an error if property type is wrong #== returns true if all properties are equal returns true if all properties are equal #hash returns the hash returns the hash .empty? returns true returns true .count returns the count of persisted instances returns the count of matching instances returns the count of matching instances returns the count of persisted instances returns the count of matching instances returns the count of matching instances .all returns all persisted instances returns all persisted instances .find given the id finds the saved instance finds the updated instance finds the saved instance raises an error given properties finds the saved instance finds the saved instance finds the updated instance finds the updated instance finds the saved instance finds the saved instance raises an error given associations finds the saved instance using the foreign key finds the saved instance using the foreign key finds the saved instance using the association finds the saved instance using the association when instantiating an abstract model raises an error .find? returns nil returns nil returns nil .where given properties returns the saved instances returns the saved instances returns the saved instances returns the updated instances returns the updated instances returns the updated instances returns the saved instances returns the saved instances returns the saved instances returns an empty collection returns an empty collection returns an empty collection returns an empty collection given associations returns the saved instances using the foreign key returns the saved instances using the foreign key returns the saved instances using the association returns the saved instances using the association .scalar returns the count of saved instances returns the count of saved instances .exec deletes the saved instances deletes the saved instances returns the count of rows affected returns the count of rows affected .sql given a saved instance returns the saved instances returns the saved instances returns an empty collection returns an empty collection #serialize_graph serializes the graph of models skips associated instances #valid? performs the validations performs the validations performs the validations even if unchanged if called directly passes the validations validates the associated instance validates the associated instance does not validate the associated instance does not validate the associated instance if it's unchanged before validate lifecycle callback runs the callback runs the callback even if unchanged if called directly runs the callback on associated instance does not run the callback on associated instance if it's unchanged after validate lifecycle callback runs the callback runs the callback even if unchanged if called directly runs the callback on associated instance does not run the callback on associated instance if it's unchanged #save new instance saves a new instance assigns an id saves a new instance with an assigned id saves a new instance even if unchanged if saved directly raises a validation exception doesn't raise a validation exception saves the properties saves the properties saves the associated instance doesn't save the associated instance doesn't save the associated instance if it's unchanged doesn't save the instance existing instance does not save a new instance does not assign an id does not save a new instance with an assigned id updates the instance even if unchanged if saved directly raises a validation exception doesn't raise a validation exception updates the properties updates the properties saves the associated instance doesn't save the associated instance doesn't save the associated instance if it's unchanged doesn't save the instance before save lifecycle callback runs the callback runs the callback even if unchanged if called directly runs the callback on associated instance does not run the callback on associated instance if it's unchanged after save lifecycle callback runs the callback runs the callback even if unchanged if called directly runs the callback on associated instance does not run the callback on associated instance if it's unchanged #update_property given an instance raises an error that has been saved updates the saved property #destroy destroys the persisted instance before destroy lifecycle callback runs the callback after destroy lifecycle callback runs the callback #reload! reloads the model properties from the database clears the changed status raises an error if not found raises an error if unsaved #new_record? returns true if the record has not been saved returns false if the record has been saved #changed? returns true if the record is new returns true if the record is new even if it was cleared returns false if the record has not been changed returns true if the record has been changed returns false if the record has been cleared after it was changed returns false if the record has been saved returns false if the record has been saved given a saved record returns false if queried returns false if queried returns false if queried returns false if queried returns false if queried returns false if queried returns false if queried with inverse associations does not mark inverse record as changed does not mark inverse record as changed does not mark inverse record as changed does not mark inverse record as changed returns false if the property has not been changed returns true if the property has been changed returns false if the property has been cleared after it was changed returns true if the property has been changed #to_s returns a string representation #inspect returns a string representation #to_json returns the JSON representation #to_h returns the hash representation derived properties sets the aliased property gets the aliased property when queried via the aliased property returns the model associations belongs_to assigns the associated instance assigns the associated instance assigns the associated instance assigns the associated instance finds a deleted instance if explicitly specified finds a deleted instance if explicitly specified finds an undone instance if explicitly specified finds an undone instance if explicitly specified updates the foreign key when saved updates the foreign key when saved has_many assigns the inverse association assigns the inverse association does not destroy unassociated instances on assignment destroys unassociated instances on assignment and save does not save through a destroyed instance does not save through a deleted instance includes a deleted instance if explicitly specified includes an undone instance if explicitly specified has_one assigns the inverse association assigns the inverse association does not destroy unassociated instances on assignment destroys unassociated instances on assignment and save does not save through a destroyed instance does not save through a deleted instance finds a deleted instance if explicitly specified finds a deleted instance if explicitly specified finds an undone instance if explicitly specified finds an undone instance if explicitly specified returns the correct instance returns the correct instance returns nil returns nil Finished in 4:39 2765 examples, 0 failures >>> ktistec: Entering fakeroot... created directory: '/home/buildozer/aports/testing/ktistec/pkg/' created directory: '/home/buildozer/aports/testing/ktistec/pkg/ktistec/' created directory: '/home/buildozer/aports/testing/ktistec/pkg/ktistec/usr/' created directory: '/home/buildozer/aports/testing/ktistec/pkg/ktistec/usr/bin' 'server' -> '/home/buildozer/aports/testing/ktistec/pkg/ktistec/usr/bin/ktistec' created directory: '/home/buildozer/aports/testing/ktistec/pkg/ktistec/var/' created directory: '/home/buildozer/aports/testing/ktistec/pkg/ktistec/var/lib/' created directory: '/home/buildozer/aports/testing/ktistec/pkg/ktistec/var/lib/ktistec' '/home/buildozer/aports/testing/ktistec/pkg/ktistec/var/lib/ktistec/uploads' -> 'public/uploads' >>> ktistec-openrc*: Running split function openrc... >>> ktistec-openrc*: Preparing subpackage ktistec-openrc... >>> ktistec-openrc*: Running postcheck for ktistec-openrc >>> ktistec*: Running postcheck for ktistec >>> ktistec*: Preparing package ktistec... >>> ktistec*: Stripping binaries >>> ktistec*: Script found. /bin/sh added as a dependency for ktistec-0_git20231216-r0.apk >>> ktistec*: Adding .pre-install >>> ktistec-openrc*: Scanning shared objects >>> ktistec*: Scanning shared objects >>> ktistec-openrc*: Tracing dependencies... >>> ktistec-openrc*: Package size: 24.0 KB >>> ktistec-openrc*: Compressing data... >>> ktistec-openrc*: Create checksum... >>> ktistec-openrc*: Create ktistec-openrc-0_git20231216-r0.apk >>> ktistec*: Tracing dependencies... tzdata /bin/sh so:libc.musl-x86_64.so.1 so:libcrypto.so.3 so:libevent-2.1.so.7 so:libgc.so.1 so:libgcc_s.so.1 so:libgmp.so.10 so:libpcre2-8.so.0 so:libsqlite3.so.0 so:libssl.so.3 so:libxml2.so.2 so:libz.so.1 >>> ktistec*: Package size: 15.1 MB >>> ktistec*: Compressing data... >>> ktistec*: Create checksum... >>> ktistec*: Create ktistec-0_git20231216-r0.apk >>> ktistec: Build complete at Wed, 27 Dec 2023 22:02:21 +0000 elapsed time 0h 17m 38s >>> ktistec: Cleaning up srcdir >>> ktistec: Cleaning up pkgdir >>> ktistec: Uninstalling dependencies... (1/46) Purging .makedepends-ktistec (20231227.214446) (2/46) Purging tzdata (2023d-r0) (3/46) Purging libxml2-dev (2.11.6-r0) (4/46) Purging xz-dev (5.4.5-r0) (5/46) Purging xz (5.4.5-r0) (6/46) Purging libxml2-utils (2.11.6-r0) (7/46) Purging openssl-dev (3.1.4-r2) (8/46) Purging shards (0.17.4-r0) (9/46) Purging crystal (1.10.1-r0) (10/46) Purging gc-dev (8.2.4-r1) (11/46) Purging libgc++ (8.2.4-r1) (12/46) Purging gmp-dev (6.3.0-r0) (13/46) Purging libgmpxx (6.3.0-r0) (14/46) Purging libatomic_ops (7.8.0-r4) (15/46) Purging libevent-dev (2.1.12-r7) (16/46) Purging libevent-static (2.1.12-r7) (17/46) Purging pcre2-dev (10.42-r2) (18/46) Purging libedit-dev (20230828.3.1-r3) (19/46) Purging bsd-compat-headers (0.7.2-r5) (20/46) Purging ncurses-dev (6.4_p20231125-r0) (21/46) Purging libncurses++ (6.4_p20231125-r0) (22/46) Purging zlib-dev (1.3-r2) (23/46) Purging libpcre2-16 (10.42-r2) (24/46) Purging libpcre2-32 (10.42-r2) (25/46) Purging sqlite-dev (3.44.2-r0) (26/46) Purging sqlite (3.44.2-r0) (27/46) Purging yaml-dev (0.2.5-r2) (28/46) Purging yaml (0.2.5-r2) (29/46) Purging gc (8.2.4-r1) (30/46) Purging libevent (2.1.12-r7) (31/46) Purging libformw (6.4_p20231125-r0) (32/46) Purging libmenuw (6.4_p20231125-r0) (33/46) Purging llvm16-libs (16.0.6-r7) (34/46) Purging python3-pyc (3.11.6-r1) (35/46) Purging python3-pycache-pyc0 (3.11.6-r1) (36/46) Purging pyc (3.11.6-r1) (37/46) Purging python3 (3.11.6-r1) (38/46) Purging gdbm (1.23-r1) (39/46) Purging libbz2 (1.0.8-r6) (40/46) Purging libffi (3.4.4-r3) (41/46) Purging libpanelw (6.4_p20231125-r0) (42/46) Purging libxml2 (2.11.6-r0) (43/46) Purging mpdecimal (2.5.1-r2) (44/46) Purging readline (8.2.7-r0) (45/46) Purging sqlite-libs (3.44.2-r0) (46/46) Purging xz-libs (5.4.5-r0) Executing busybox-1.36.1-r18.trigger OK: 378 MiB in 106 packages >>> ktistec: Updating the testing/x86_64 repository index... >>> ktistec: Signing the index...