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