123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- package apmodels
- import (
- "fmt"
- )
- // WebfingerResponse represents a Webfinger response.
- type WebfingerResponse struct {
- Aliases []string `json:"aliases"`
- Subject string `json:"subject"`
- Links []Link `json:"links"`
- }
- // WebfingerProfileRequestResponse represents a Webfinger profile request response.
- type WebfingerProfileRequestResponse struct {
- Self string
- }
- // Link represents a Webfinger response Link entity.
- type Link struct {
- Rel string `json:"rel"`
- Type string `json:"type"`
- Href string `json:"href"`
- }
- // MakeWebfingerResponse will create a new Webfinger response.
- func MakeWebfingerResponse(account string, inbox string, host string) WebfingerResponse {
- accountIRI := MakeLocalIRIForAccount(account)
- streamIRI := MakeLocalIRIForStreamURL()
- logoIRI := MakeLocalIRIforLogo()
- logoType := GetLogoType()
- return WebfingerResponse{
- Subject: fmt.Sprintf("acct:%s@%s", account, host),
- Aliases: []string{
- accountIRI.String(),
- },
- Links: []Link{
- {
- Rel: "self",
- Type: "application/activity+json",
- Href: accountIRI.String(),
- },
- {
- Rel: "http://webfinger.net/rel/profile-page",
- Type: "text/html",
- Href: accountIRI.String(),
- },
- {
- Rel: "http://webfinger.net/rel/avatar",
- Type: logoType,
- Href: logoIRI.String(),
- },
- {
- Rel: "alternate",
- Type: "application/x-mpegURL",
- Href: streamIRI.String(),
- },
- },
- }
- }
- // MakeWebFingerRequestResponseFromData converts WebFinger data to an easier
- // to use model.
- func MakeWebFingerRequestResponseFromData(data []map[string]interface{}) WebfingerProfileRequestResponse {
- response := WebfingerProfileRequestResponse{}
- for _, link := range data {
- if link["rel"] == "self" {
- return WebfingerProfileRequestResponse{
- Self: link["href"].(string),
- }
- }
- }
- return response
- }
|