Go client for the Write.as API https://developers.write.as
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

49 行
960 B

  1. package writeas
  2. import (
  3. "errors"
  4. "fmt"
  5. "io/ioutil"
  6. "net/http"
  7. "time"
  8. )
  9. const (
  10. apiURL = "https://write.as/api"
  11. )
  12. type API struct {
  13. BaseURL string
  14. }
  15. // defaultHTTPTimeout is the default http.Client timeout.
  16. const defaultHTTPTimeout = 10 * time.Second
  17. var httpClient = &http.Client{Timeout: defaultHTTPTimeout}
  18. func GetAPI() *API {
  19. return &API{apiURL}
  20. }
  21. func (a API) Call(method, path string) (int, string, error) {
  22. if method != "GET" && method != "HEAD" {
  23. return 0, "", errors.New(fmt.Sprintf("Method %s not currently supported by library (only HEAD and GET).\n", method))
  24. }
  25. r, _ := http.NewRequest(method, fmt.Sprintf("%s%s", a.BaseURL, path), nil)
  26. r.Header.Add("User-Agent", "writeas-go v1")
  27. resp, err := httpClient.Do(r)
  28. if err != nil {
  29. return 0, "", err
  30. }
  31. defer resp.Body.Close()
  32. content, err := ioutil.ReadAll(resp.Body)
  33. if err != nil {
  34. return resp.StatusCode, "", err
  35. }
  36. return resp.StatusCode, string(content), nil
  37. }