initial commits
parent
9c9c77200d
commit
32a3183a1c
|
@ -0,0 +1,67 @@
|
|||
package ent
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"sourcecode.social/reiver/go-erorr"
|
||||
"sourcecode.social/reiver/go-opt"
|
||||
"sourcecode.social/reiver/go-nul"
|
||||
)
|
||||
|
||||
var _ json.Marshaler = Application{}
|
||||
|
||||
const (
|
||||
errCannotMashalApplicationAsJSONNoName = erorr.Error("cannot marshal ent.Application to JSON — no ‘name’ set")
|
||||
errCannotMashalApplicationAsJSONNoVapidKey = erorr.Error("cannot marshal ent.Application to JSON — no ‘vapid_key’ set")
|
||||
)
|
||||
|
||||
// Appication represents a Mastodon API "Appication".
|
||||
//
|
||||
// See:
|
||||
// https://docs.joinmastodon.org/entities/Application/
|
||||
type Application struct {
|
||||
Name opt.Optional[string] `json:"name"`
|
||||
WebSite nul.Nullable[string] `json:"website"`
|
||||
VapidKey opt.Optional[string] `json:"vapid_key"`
|
||||
ClientID opt.Optional[string] `json:"client_id"`
|
||||
ClientSecret opt.Optional[string] `json:"client_secret"`
|
||||
}
|
||||
|
||||
func (receiver Application) MarshalJSON() ([]byte, error) {
|
||||
var data map[string]interface{}
|
||||
|
||||
{
|
||||
val, found := receiver.Name.Get()
|
||||
if !found {
|
||||
return nil, errCannotMashalApplicationAsJSONNoName
|
||||
}
|
||||
|
||||
data["name"] = val
|
||||
}
|
||||
|
||||
receiver.WebSite.WhenSomething(func(value string){
|
||||
data["website"] = value
|
||||
})
|
||||
receiver.WebSite.WhenNull(func(){
|
||||
data["website"] = nil
|
||||
})
|
||||
|
||||
{
|
||||
val, found := receiver.VapidKey.Get()
|
||||
if !found {
|
||||
return nil, errCannotMashalApplicationAsJSONNoVapidKey
|
||||
}
|
||||
|
||||
data["vapid_key"] = val
|
||||
}
|
||||
|
||||
receiver.ClientID.WhenSomething(func(value string){
|
||||
data["client_id"] = value
|
||||
})
|
||||
|
||||
receiver.ClientSecret.WhenSomething(func(value string){
|
||||
data["client_secret"] = value
|
||||
})
|
||||
|
||||
return json.Marshal(data)
|
||||
}
|
Loading…
Reference in New Issue