VPSでビルド用のサーバーを動かしているという話を書いたかと思います。
自分しか使わないのでベーシック認証を書ける形に変更しています。
その前に:echoについてちょっと
雑にいうと、expressとかsinatraとかっぽい書き方でサーバーを書けるGoのライブラリっぽいです。
最小に近いサンプルはこんな感じで、e.GETにパスとリクエストハンドラみたいなのを書いてあげればOKというシンプルな感じです。
1func main() {
2 e := echo.New()
3 e.GET("/hello", func(c echo.Context) error {
4 return c.String(http.StatusOK, "Hello")
5 })
6 e.GET("/world", func(c echo.Context) error {
7 return c.String(http.StatusOK, "World")
8 })
9 e.Logger.Fatal(e.Start(":1323"))
10}
実際、Advertising API用のコードもかなりシンプルです。
↓は参考にさせてもらった元のコードです。この部分でasinを受け取るリクエストを処理してます。
main.go · master · longkey1 / amazon-product-json · GitLab
ベーシック認証
公式にドキュメントにちゃんと書いてあります。めちゃくちゃシンプル。
Basic Auth Middleware | Echo - High performance, minimalist Go web framework
まず、importにmiddlewareを使うべく一行追加。
1import (
2 // 略
3 "github.com/labstack/echo"
4 "github.com/labstack/echo/middleware" // この行
5)
続いてmainでmiddlewareを使う旨と、usernameやパスワードを書いておいてあげます。
1func main() {
2 e := echo.New()
3 // 略
4 e.Use(middleware.BasicAuth(func(username, password string, c echo.Context) (bool, error) {
5 if username == "joe" && password == "secret" {
6 return true, nil
7 }
8 return false, nil
9 }))
10 // 略
11}
という感じで設定できましたー。
あとは使う側がusername:password@hostnameでアクセスすれば良いです。