package lib import ( "bytes" "encoding/json" "io" "net/http" ) type PandocClient struct { client *http.Client address string } func NewPandocClient(client *http.Client, address string) *PandocClient { return &PandocClient{ client: client, address: address, } } type convertRequest struct { Text string `json:"text"` From string `json:"from"` To string `json:"to"` } func (client *PandocClient) convert(text, from, to string) (string, error) { body, err := json.Marshal(convertRequest{ Text: text, From: from, To: to, }) if err != nil { return "", err } buf := bytes.NewBuffer(body) resp, err := client.client.Post(client.address, "application/json", buf) if err != nil { return "", err } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { return "", err } body, err = io.ReadAll(resp.Body) if err != nil { return "", err } return string(body), nil } func (client *PandocClient) ConvertLatexToHtml5(text string) (string, error) { return client.convert(text, "latex", "html5") }