Code Monkey home page Code Monkey logo

activitystreams's Introduction

License: MIT GitHub issues GitHub forks GitHub stars NuGet Downloads (official NuGet)

ActivityStreams

A .NET implementation of the Activity Streams vocabulary in the form of classes that can be serialized/deserialized using System.Text.Json

The specifications can be seen here: https://www.w3.org/TR/activitystreams-vocabulary/

These types are famously used in the ActivityPub specification which is used in the Fediverse including Mastodon.

We have chosen that it should also implement the properties that are specific to ActivityPub as these don't change any of the existing properties and because they are very few.

Features

  • Classes for Core Types.
    • Class for Object
    • Class for Link
    • Class for Activity
    • Class for IntransitiveActivity
    • Class for Collection
    • Class for OrderedCollection
    • Class for CollectionPage
    • Class for OrderedCollectionPage
  • Extended classes for Activity Types.
  • Extended classes for Actor Types.
  • Extended classes for Object and Link Types.
  • Properties specific to ActivityPub
  • Support for retrieving @context JSON-LD defintions.
  • Support for serializing

Related repositories

This is used in the following repositories.

activitystreams's People

Contributors

deathau avatar kristofferstrube avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

activitystreams's Issues

Standard values for `@context` and `type`.

It would be very useful if all Object instances had @context be equal to new List<ReferenceTermDefinition>() { new(new("https://www.w3.org/ns/activitystreams")) } by default and for the Type to be overridden by each inheriting class as I basically set this for all new objects I create manually. We just need to be sure that we don't use these defaults when we parse objects from JSON. One way to achieve this is by only having it (the default) on the Object class, not the IObject interface which is used for serialization/deserialization.

Of cause, we need to ensure that this doesn't break any of the existing tests.

Can't be used with System.Text.Json source generation

While working on a project using ActivityStreams I thought I'd try using the new System.Text.Json source generation.

Unfortunately there's an issue because the converter types are internal.

[JsonSerializable(typeof(Person))]
public partial class ActivityStreamJsonSerializerContext : JsonSerializerContext {}

Produces the following compiler errors.

error CS0122: 'LinkConverter' is inaccessible due to its protection level
error CS0122: 'EndpointsOrLinkConverter' is inaccessible due to its protection level
error CS0122: 'ObjectOrLinkConverter' is inaccessible due to its protection level
error CS0122: 'ImageOrLinkConverter' is inaccessible due to its protection level
error CS0122: 'CollectionPageOrLinkConverter' is inaccessible due to its protection level
error CS0122: 'TermDefinitionConverter' is inaccessible due to its protection level
error CS0122: 'XMLTimeSpanConverter' is inaccessible due to its protection level

Could the converters please be changed to public?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.