initial commits
							parent
							
								
									67dd384e1c
								
							
						
					
					
						commit
						686fae8598
					
				| 
						 | 
					@ -0,0 +1,64 @@
 | 
				
			||||||
 | 
					package mstdn
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"encoding/json"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"sourcecode.social/reiver/go-opt"
 | 
				
			||||||
 | 
						"sourcecode.social/reiver/go-nul"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var _ json.Marshaler = Field{}
 | 
				
			||||||
 | 
					var _ json.Unmarshaler = &Field{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Field represents a Mastodon API "Field".
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// See:
 | 
				
			||||||
 | 
					// https://docs.joinmastodon.org/entities/Field/
 | 
				
			||||||
 | 
					type Field struct {
 | 
				
			||||||
 | 
						Name         opt.Optional[string] `json:"name"`
 | 
				
			||||||
 | 
						Value        opt.Optional[string] `json:"value"`
 | 
				
			||||||
 | 
						VerifiedAt   nul.Nullable[string] `json:"verified_at"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func FieldNameValue(name string, value string) Field {
 | 
				
			||||||
 | 
						return Field{
 | 
				
			||||||
 | 
							Name:  opt.Something(name),
 | 
				
			||||||
 | 
							Value: opt.Something(value),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func FieldVerifiedNameValue(when string, name string, value string) Field {
 | 
				
			||||||
 | 
						return Field{
 | 
				
			||||||
 | 
							Name:       opt.Something(name),
 | 
				
			||||||
 | 
							Value:      opt.Something(value),
 | 
				
			||||||
 | 
							VerifiedAt: nul.Something(when),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (receiver Field) MarshalJSON() ([]byte, error) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						duplicate := receiver
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						duplicate.VerifiedAt.WhenNothing(func(){
 | 
				
			||||||
 | 
							duplicate.VerifiedAt = nul.Null[string]()
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return json.Marshal(duplicate)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (receiver *Field) UnmarshalJSON(data []byte) error {
 | 
				
			||||||
 | 
						if nil == receiver {
 | 
				
			||||||
 | 
							return errNilReceiver
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err := json.Unmarshal(data, receiver)
 | 
				
			||||||
 | 
						if nil != err {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if nul.Null[string]() == receiver.VerifiedAt {
 | 
				
			||||||
 | 
							receiver.VerifiedAt = nul.Nothing[string]()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue