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