diff --git a/formatting.go b/formatting.go new file mode 100644 index 0000000..5a85aee --- /dev/null +++ b/formatting.go @@ -0,0 +1,39 @@ +package writeas + +import ( + "fmt" + "net/http" +) + +type BodyResponse struct { + Body string `json:"body"` +} + +// Markdown takes raw Markdown and renders it into usable HTML. See +// https://developers.write.as/docs/api/#render-markdown. +func (c *Client) Markdown(body, collectionURL string) (string, error) { + p := &BodyResponse{} + data := struct { + RawBody string `json:"raw_body"` + CollectionURL string `json:"collection_url,omitempty"` + }{ + RawBody: body, + CollectionURL: collectionURL, + } + + env, err := c.post("/markdown", data, p) + if err != nil { + return "", err + } + + var ok bool + if p, ok = env.Data.(*BodyResponse); !ok { + return "", fmt.Errorf("Wrong data returned from API.") + } + status := env.Code + + if status != http.StatusOK { + return "", fmt.Errorf("Problem getting markdown: %d. %s\n", status, env.ErrorMessage) + } + return p.Body, nil +} diff --git a/formatting_test.go b/formatting_test.go new file mode 100644 index 0000000..0a83844 --- /dev/null +++ b/formatting_test.go @@ -0,0 +1,23 @@ +package writeas + +import ( + "testing" +) + +func TestMarkdown(t *testing.T) { + dwac := NewDevClient() + + in := "This is *formatted* in __Markdown__." + out := `

This is formatted in Markdown.

+` + + res, err := dwac.Markdown(in, "") + if err != nil { + t.Errorf("Unexpected fetch results: %+v, err: %v\n", res, err) + } + + if res != out { + t.Errorf(`Got: '%s' +Expected: '%s'`, res, out) + } +}