package main import ( "bytes" "encoding/json" "net/http" ) type Social interface { Post(location string, text string) } type Socials []Social // Post to all socials func (socials *Socials) Post(location string, text string) { for _, social := range *socials { social.Post(location, text) } } // Microblog.pub type MicroblogPub struct { url string token string } func (social *MicroblogPub) Post(location string, text string) { if len(text) == 0 { text = location } note := &struct { Content string `json:"content"` }{ Content: "[" + text + "](" + location + ")", } bytesRepresentation, err := json.Marshal(note) if err != nil { return } client := &http.Client{} req, _ := http.NewRequest("POST", social.url+"api/new_note", bytes.NewBuffer(bytesRepresentation)) req.Header.Add("Content-Type", "application/json") req.Header.Add("Authorization", "Bearer "+social.token) _, _ = client.Do(req) }