anderssorby / elm-mastodon / Mastodon.EncodeDecode

Encoders and Decoders for JSON that goes over the wire.

You will rarely use any of these. Encoding and decoding will usually be done for you by by Mastodon.Requests.requestToRawRequest, which your code will call indirectly via Mastodon.Requests.serverRequest.

For the one type to rule them all

encodeEntity : Mastodon.Entity.Entity -> Json.Encode.Value

Encode an Entity into a Value.

entityDecoder : String -> Json.Decode.Decoder Mastodon.Entity.Entity

Decode an Entity.

You'll usually know which entity you're looking for, and will use its decoder explicitly. In case you don't...

The urlString is used only to decode an Instance. It is used to default fields when the server returns {} (which it shouldn't, but some do).

entityValue : Mastodon.Entity.Entity -> Json.Encode.Value

Similar to encodeEntity, but returns the v field, if it is non-null,

giving you the raw data that came over the wire, if this entity DID come over the wire, and is not one of the few that don't have a v field.

For the individual entity types

accountDecoder : Json.Decode.Decoder Mastodon.Entity.Account

Decode an Account.

encodeAccount : Mastodon.Entity.Account -> Json.Encode.Value

Encode an Account.

fieldDecoder : Json.Decode.Decoder Mastodon.Entity.Field

Decode a Field.

encodeField : Mastodon.Entity.Field -> Json.Encode.Value

Encode a Field.

appDecoder : Json.Decode.Decoder Mastodon.Entity.App

Decode an App.

encodeApp : Mastodon.Entity.App -> Json.Encode.Value

Encode an App.

sourceDecoder : Json.Decode.Decoder Mastodon.Entity.Source

Decode a Source.

encodeSource : Mastodon.Entity.Source -> Json.Encode.Value

Encode a Source.

tokenDecoder : Json.Decode.Decoder Mastodon.Entity.Token

Decode a Token.

encodeToken : Mastodon.Entity.Token -> Json.Encode.Value

Encode a Token.

applicationDecoder : Json.Decode.Decoder Mastodon.Entity.Application

Decode an Application.

encodeApplication : Mastodon.Entity.Application -> Json.Encode.Value

Encode an Application.

attachmentDecoder : Json.Decode.Decoder Mastodon.Entity.Attachment

Decode an Attachment.

encodeAttachment : Mastodon.Entity.Attachment -> Json.Encode.Value

Encode an Attachment.

cardDecoder : Json.Decode.Decoder Mastodon.Entity.Card

Decode a Card.

encodeCard : Mastodon.Entity.Card -> Json.Encode.Value

Encode a Card.

contextDecoder : Json.Decode.Decoder Mastodon.Entity.Context

Decode a Context.

encodeContext : Mastodon.Entity.Context -> Json.Encode.Value

Encode a Context.

visibilityDecoder : Json.Decode.Decoder Mastodon.Entity.Visibility

Decode a Visibility.

encodeVisibility : Mastodon.Entity.Visibility -> Json.Encode.Value

Encode a Visibility.

emojiDecoder : Json.Decode.Decoder Mastodon.Entity.Emoji

Decode an Emoji.

encodeEmoji : Mastodon.Entity.Emoji -> Json.Encode.Value

Encode an Emoji.

encodeStatus : Mastodon.Entity.Status -> Json.Encode.Value

Encode a Status.

statusDecoder : Json.Decode.Decoder Mastodon.Entity.Status

Decode a Status.

This integrates the non-standard fields, so that you can just use content for the full HTML to actually display.

rawStatusDecoder : Json.Decode.Decoder Mastodon.Entity.RawStatus

Decode a RawStatus.

simpleStatusDecoder : Json.Decode.Decoder Mastodon.Entity.Status

Just decode the fields that are supported by all servers.

The content field means different things on some servers, so use statusDecoder if you want it to have the full HTML for the post.

encodeError : Mastodon.Entity.Error -> Json.Encode.Value

Encode an Error.

Note that the httpStatus field does NOT get encoded. You'll probably never need to encode one of these, anyway.

errorDecoder : String -> Json.Decode.Decoder Mastodon.Entity.Error

Decode an Error.

Since the httpStatus comes from the HTTP headers, it needs to be passed in here as a parameter, as it isn't in the JSON.

encodePoll : Mastodon.Entity.Poll -> Json.Encode.Value

Encode a Poll.

pollDecoder : Json.Decode.Decoder Mastodon.Entity.Poll

Decode a Poll.

encodeFilter : Mastodon.Entity.Filter -> Json.Encode.Value

Encode a Filter.

filterDecoder : Json.Decode.Decoder Mastodon.Entity.Filter

Decode a Filter.

encodeFilterContext : Mastodon.Entity.FilterContext -> Json.Encode.Value

Encode a FilterContext.

filterContextDecoder : Json.Decode.Decoder Mastodon.Entity.FilterContext

Decode a FilterContext.

encodeInstance : Mastodon.Entity.Instance -> Json.Encode.Value

Encode an Instance.

instanceDecoder : String -> Json.Decode.Decoder Mastodon.Entity.Instance

Decode an Instance.

defaultedInstance : String -> Json.Encode.Value -> Mastodon.Entity.Instance

Return the default instance for a URL string.

Used for servers that return a malformed Instance or no JSON at all.

encodeActivity : Mastodon.Entity.Activity -> Json.Encode.Value

Encode an Activity.

Mastodon encodes all the Int fields as strings, so we follow suit here.

activityDecoder : Json.Decode.Decoder Mastodon.Entity.Activity

Decode an Activity

encodeListEntity : Mastodon.Entity.ListEntity -> Json.Encode.Value

Encode a ListEntity.

listEntityDecoder : Json.Decode.Decoder Mastodon.Entity.ListEntity

Decode a ListEntity.

encodeNotification : Mastodon.Entity.Notification -> Json.Encode.Value

Encode a Notification.

notificationDecoder : Json.Decode.Decoder Mastodon.Entity.Notification

Decode a Notification.

encodeNotificationType : Mastodon.Entity.NotificationType -> Json.Encode.Value

Encode a NotificationType.

notificationTypeDecoder : Json.Decode.Decoder Mastodon.Entity.NotificationType

Decode a `NotificationType.

encodePushSubscription : Mastodon.Entity.PushSubscription -> Json.Encode.Value

Encoder for PushSubscription.

pushSubscriptionDecoder : Json.Decode.Decoder Mastodon.Entity.PushSubscription

Decoder for PushSubscription.

encodeRelationship : Mastodon.Entity.Relationship -> Json.Encode.Value

Encoder for Relationship.

relationshipDecoder : Json.Decode.Decoder Mastodon.Entity.Relationship

Decode a Relationship.

encodeResults : Mastodon.Entity.Results -> Json.Encode.Value

Encoder for Results.

resultsDecoder : Json.Decode.Decoder Mastodon.Entity.Results

Decoder for Results.

encodeScheduledStatus : Mastodon.Entity.ScheduledStatus -> Json.Encode.Value

Encoder for ScheduledStatus.

scheduledStatusDecoder : Json.Decode.Decoder Mastodon.Entity.ScheduledStatus

Decoder for ScheduledStatus.

encodeConversation : Mastodon.Entity.Conversation -> Json.Encode.Value

Encoder for Conversation.

conversationDecoder : Json.Decode.Decoder Mastodon.Entity.Conversation

Decoder for Conversation.

encodeGroup : Mastodon.Entity.Group -> Json.Encode.Value

Encoder for Group.

groupDecoder : Json.Decode.Decoder Mastodon.Entity.Group

Decoder for Group.

encodeGroupRelationship : Mastodon.Entity.GroupRelationship -> Json.Encode.Value

Encoder for GroupRelationship.

groupRelationshipDecoder : Json.Decode.Decoder Mastodon.Entity.GroupRelationship

Decoder for GroupRelationship.

encodeTag : Mastodon.Entity.Tag -> Json.Encode.Value

Encode a Tag.

tagDecoder : Json.Decode.Decoder Mastodon.Entity.Tag

Decode a Tag.

Encoder and decoder for the login parameters.

encodeAuthorization : Mastodon.Entity.Authorization -> Json.Encode.Value

Encoder for Authorization.

authorizationDecoder : Json.Decode.Decoder Mastodon.Entity.Authorization

Decoder for Authorization.

Utilities

encodeMaybe : (x -> Json.Encode.Value) -> Maybe x -> Json.Encode.Value

Encode Maybe x to Json.Encode.null if it's Nothing,

or with the encoder otherwise.

privacyToString : Mastodon.Entity.Privacy -> String

Convert Privacy to a String.

notificationTypeToString : Mastodon.Entity.NotificationType -> String

Convert a NoticiationType to a string

filterContextToString : Mastodon.Entity.FilterContext -> String

Turn a FilterContext into a String.