Go
Go SDK
bannerify-go モジュールで、画像と PDF を生成する方法を説明します。
bannerify-go は、Go 向けの Bannerify クライアントです。リクエストごとに context.Context を受け取り、エラーを値として返します。
インストール
go get github.com/bannerify/bannerify-go
クライアントを作成する
API キーが必要です。ダッシュボードの API Keys ページで作成し、サーバー側で管理してください。
import "github.com/bannerify/bannerify-go"
client := bannerify.NewClient(os.Getenv("BANNERIFY_API_KEY"))
画像を生成する
Modification の Name 以外のフィールドは、すべてポインターです。例では、次のヘルパーでポインターを作っています。
package main
import (
"context"
"fmt"
"os"
"github.com/bannerify/bannerify-go"
)
func ptr[T any](value T) *T { return &value }
func main() {
client := bannerify.NewClient(os.Getenv("BANNERIFY_API_KEY"))
result := client.CreateImage(context.Background(), "tpl_xxx", &bannerify.CreateImageOptions{
Modifications: []bannerify.Modification{
{Name: "headline", Text: ptr("Summer sale")},
},
})
if result.Error != nil {
fmt.Println(result.Error.Message)
return
}
if err := os.WriteFile("banner.png", result.Result, 0o644); err != nil {
fmt.Println(err)
}
}
result.Result は、画像を保持する []byte です。
メソッド
| メソッド | 戻り値 | 用途 |
|---|---|---|
CreateImage |
*Response |
画像のバイト列を Result に取得する |
CreatePDF |
*Response |
PDF を Result に取得する |
RenderVideo (Beta) |
iter.Seq[RenderVideoEvent] |
動画をレンダリングし、進行状況を追う |
RenderAndWaitVideo (Beta) |
string と error |
動画をレンダリングし、MP4 の URL を取得する |
CreateVideo (Beta) |
*CreatedVideo と error |
待たずに動画を開始し、その ID をすぐに取得する |
GetVideo (Beta) |
*Video と error |
ID から、動画のステータスと MP4 の URL を読み取る |
WatchVideo (Beta) |
iter.Seq[RenderVideoEvent] |
ID から、動画の進行状況をもう一度追う |
GenerateImageSignedURL |
string と error |
開かれたときにレンダリングされるリンクを作る |
動画のメソッドは、動画のレンダリングで説明しています。Go SDK には、保存済み画像のメソッドがありません。保存済み画像を作成するを、REST で呼び出してください。
最初の 2 つは画像と PDF の作成で、最後の 1 つは署名付き URLで説明しています。
エラーを処理する
CreateImage と CreatePDF は *Response を返します。Result を読む前に、Error を確認してください。
type Response struct {
Result []byte
Error *ErrorResponse
}
type ErrorResponse struct {
Code string
Message string
Docs string
}
API が 200 以外のステータスで応答すると、SDK はコード HTTP_ERROR を返します。CreateImage では、メッセージにステータスとレスポンスボディが入ります。レスポンスボディは、API が返す JSON のエラーオブジェクトです。CreatePDF では、メッセージにステータスだけが入ります。
SDK は、ほかにもいくつかのエラーを自分で作ります。
| コード | 意味 |
|---|---|
INVALID_FORMAT |
形式が png、jpeg、webp のいずれでもない |
JSON_ERROR |
SDK がリクエストボディをエンコードできなかった |
REQUEST_ERROR |
SDK がリクエストを組み立てられなかった |
HTTP_ERROR |
API が応答する前にリクエストが失敗した、または API が 200 以外のステータスで応答した |
READ_ERROR |
SDK がレスポンスボディを読み取れなかった |
TIMEOUT_ERROR |
動画のストリームが切れ、SDK が動画をもう一度読み取れなかった |
GenerateImageSignedURL は、形式がサポートされていない場合に error を返します。
オプション
オプションは、API キーのあとに NewClient へ渡します。
client := bannerify.NewClient(
os.Getenv("BANNERIFY_API_KEY"),
bannerify.WithTimeout(30*time.Second),
)
| オプション | 既定値 | 説明 |
|---|---|---|
WithBaseURL(url) |
https://api.bannerify.co/v1 |
API のベース URL |
WithTimeout(duration) |
60 秒 | リクエストのタイムアウト |
WithHTTPClient(client) |
タイムアウト 60 秒のクライアント | 自分の *http.Client。既定のクライアントを置き換えるため、タイムアウトはそのクライアントに設定してください |