1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- package main
- import (
- "encoding/json"
- "io/ioutil"
- "net/http"
- "net/url"
- )
- type Emojisp struct {
- Emojis Emojis `json:"emojis"`
- }
- type Emojis []Emoji
- type Emoji struct {
- Shortcode string `json:"shortcode"`
- Name string `json:"name"`
- Url string `json:"url"`
-
-
- Category string `json:"category"`
- }
- func NewEmojiList(domain string) (Emojis, error) {
- emojis := Emojisp{}
- bytes, err := fetchCustomEmojis(domain)
- if err != nil {
- return emojis.Emojis, err
- }
-
- if err := json.Unmarshal(bytes, &emojis.Emojis); err != nil {
- if err = json.Unmarshal(bytes, &emojis); err != nil {
- return emojis.Emojis, err
- }
- }
- return emojis.Emojis, nil
- }
- func fetchCustomEmojis(domain string) ([]byte, error) {
- u, err := url.Parse("https://example.com/api/v1/custom_emojis")
- if err != nil {
- return nil, err
- }
- u.Host = domain
- resp, err := http.Get(u.String())
- if resp.StatusCode != http.StatusOK {
-
- u.Path = "/api/emojis"
- resp, err = http.Get(u.String())
- }
- if err != nil {
- return nil, err
- }
- defer resp.Body.Close()
- return ioutil.ReadAll(resp.Body)
- }
|