1
0
mirror of https://github.com/dstotijn/go-notion.git synced 2024-12-10 10:40:09 +02:00
go-notion/icon.go
Lucas a0926892c2
Add support for Page's Icon retrieval and updates (#21)
* Add support for Page's Icon retrieval and updates

* Add support for creating a page with an icon

* Fix tests, add icon validation

* Remove unknown icon type `file`

* Add icon support for "create database" endpoint

Co-authored-by: David Stotijn <dstotijn@gmail.com>
2021-12-09 17:57:08 +01:00

39 lines
791 B
Go

package notion
import "errors"
type IconType string
const (
IconTypeEmoji IconType = "emoji"
IconTypeExternal IconType = "external"
)
// Icon has one non-nil Emoji or External field, denoted by the corresponding
// IconType.
type Icon struct {
Type IconType `json:"type"`
Emoji *string `json:"emoji,omitempty"`
External *IconExternal `json:"external,omitempty"`
}
type IconExternal struct {
URL string `json:"url"`
}
func (icon Icon) Validate() error {
if icon.Type == "" {
return errors.New("icon type cannot be empty")
}
if icon.Type == IconTypeEmoji && icon.Emoji == nil {
return errors.New("icon emoji cannot be empty")
}
if icon.Type == IconTypeExternal && icon.External == nil {
return errors.New("icon external cannot be empty")
}
return nil
}