streaming

package
v0.5.0-rc3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 26, 2022 License: AGPL-3.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// BasePath is the path for the streaming api
	BasePath = "/api/v1/streaming"

	// StreamQueryKey is the query key for the type of stream being requested
	StreamQueryKey = "stream"

	// AccessTokenQueryKey is the query key for an oauth access token that should be passed in streaming requests.
	AccessTokenQueryKey = "access_token"
)

Variables

This section is empty.

Functions

func New

func New(processor processing.Processor) api.ClientModule

New returns a new streaming module

Types

type Module

type Module struct {
	// contains filtered or unexported fields
}

Module implements the api.ClientModule interface for everything related to streaming

func (*Module) Route

func (m *Module) Route(r router.Router) error

Route attaches all routes from this module to the given router

func (*Module) StreamGETHandler

func (m *Module) StreamGETHandler(c *gin.Context)

StreamGETHandler swagger:operation GET /api/v1/streaming streamGet

Initiate a websocket connection for live streaming of statuses and notifications.

The scheme used should *always* be `wss`. The streaming basepath can be viewed at `/api/v1/instance`.

On a successful connection, a code `101` will be returned, which indicates that the connection is being upgraded to a secure websocket connection.

As long as the connection is open, various message types will be streamed into it.

GoToSocial will ping the connection every 30 seconds to check whether the client is still receiving.

If the ping fails, or something else goes wrong during transmission, then the connection will be dropped, and the client will be expected to start it again.

--- tags: - streaming

produces: - application/json

schemes: - wss

parameters:

  • name: access_token type: string description: Access token for the requesting account. in: query required: true

  • name: stream type: string description: |- Type of stream to request.

    Options are:

    `user`: receive updates for the account's home timeline. `public`: receive updates for the public timeline. `public:local`: receive updates for the local timeline. `hashtag`: receive updates for a given hashtag. `hashtag:local`: receive local updates for a given hashtag. `list`: receive updates for a certain list of accounts. `direct`: receive updates for direct messages. in: query required: true

security: - OAuth2 Bearer:

  • read:streaming

responses:

'101':
  schema:
    type: object
    properties:
      stream:
        type: array
        items:
          type: string
          enum:
          - user
          - public
          - public:local
          - hashtag
          - hashtag:local
          - list
          - direct
      event:
        description: |-
          The type of event being received.

          `update`: a new status has been received.
          `notification`: a new notification has been received.
          `delete`: a status has been deleted.
          `filters_changed`: not implemented.
        type: string
        enum:
        - update
        - notification
        - delete
        - filters_changed
      payload:
        description: |-
          The payload of the streamed message.
          Different depending on the `event` type.

          If present, it should be parsed as a string.

          If `event` = `update`, then the payload will be a JSON string of a status.
          If `event` = `notification`, then the payload will be a JSON string of a notification.
          If `event` = `delete`, then the payload will be a status ID.
        type: string
        example: "{\"id\":\"01FC3TZ5CFG6H65GCKCJRKA669\",\"created_at\":\"2021-08-02T16:25:52Z\",\"sensitive\":false,\"spoiler_text\":\"\",\"visibility\":\"public\",\"language\":\"en\",\"uri\":\"https://gts.superseriousbusiness.org/users/dumpsterqueer/statuses/01FC3TZ5CFG6H65GCKCJRKA669\",\"url\":\"https://gts.superseriousbusiness.org/@dumpsterqueer/statuses/01FC3TZ5CFG6H65GCKCJRKA669\",\"replies_count\":0,\"reblogs_count\":0,\"favourites_count\":0,\"favourited\":false,\"reblogged\":false,\"muted\":false,\"bookmarked\":fals…//gts.superseriousbusiness.org/fileserver/01JNN207W98SGG3CBJ76R5MVDN/header/original/019036W043D8FXPJKSKCX7G965.png\",\"header_static\":\"https://gts.superseriousbusiness.org/fileserver/01JNN207W98SGG3CBJ76R5MVDN/header/small/019036W043D8FXPJKSKCX7G965.png\",\"followers_count\":33,\"following_count\":28,\"statuses_count\":126,\"last_status_at\":\"2021-08-02T16:25:52Z\",\"emojis\":[],\"fields\":[]},\"media_attachments\":[],\"mentions\":[],\"tags\":[],\"emojis\":[],\"card\":null,\"poll\":null,\"text\":\"a\"}"
'401':
   description: unauthorized
'400':
   description: bad request

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL