Browse Source

fetch & parse custom emojis

kPherox 4 years ago
parent
commit
0ea84b4027
2 changed files with 66 additions and 0 deletions
  1. 49 0
      emojis.go
  2. 17 0
      masto-emoji-pack.go

+ 49 - 0
emojis.go

@@ -0,0 +1,49 @@
+package main
+
+import (
+	"encoding/json"
+	"io/ioutil"
+	"net/http"
+	"net/url"
+)
+
+type Emojis []Emoji
+
+type Emoji struct {
+	Shortcode       string `json:"shortcode"`
+	Url             string `json:"url"`
+	StaticUrl       string `json:"static_url"`
+	VisibleInPicker bool   `json:"visible_in_picker"`
+	Category        string `json:"category"`
+}
+
+func NewEmojiList(domain string) (Emojis, error) {
+	emojis := Emojis{}
+
+	bytes, err := fetchCustomEmojis(domain)
+	if err != nil {
+		return emojis, err
+	}
+
+	if err := json.Unmarshal(bytes, &emojis); err != nil {
+		return emojis, err
+	}
+
+	return 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 err != nil {
+		return nil, err
+	}
+	defer resp.Body.Close()
+
+	return ioutil.ReadAll(resp.Body)
+}

+ 17 - 0
masto-emoji-pack.go

@@ -0,0 +1,17 @@
+package main
+
+import (
+	"fmt"
+	"log"
+)
+
+func main() {
+	es, err := NewEmojiList("pl.kpherox.dev")
+	if err != nil {
+		log.Fatal(err)
+	}
+
+	for _, e := range es {
+		fmt.Printf("%s, %s, %s\n", e.Shortcode, e.Url, e.Category)
+	}
+}