Go
設定
クライアントのすべてのオプション、環境から読むもの、拒否するもの。
オプション
client := openemail.New( openemail.WithAPIKey(os.Getenv("OPENEMAIL_API_KEY")), openemail.WithBaseURL("https://api.openemail.uk"), openemail.WithTimeout(30*time.Second), openemail.WithMaxRetries(2), openemail.WithHeader("X-Team", "billing"),) if err := client.Err(); err != nil { return err} fmt.Println(client.Mode(), client.BaseURL())| オプション | 機能 |
|---|---|
| WithAPIKey | oe_live_ または oe_test_ で始まるワークスペース API キー。呼び出しに渡すと、その呼び出しだけ別のキーで実行されます。 |
| WithAccessToken | ユーザーが接続したアプリ用の OAuth アクセストークンです。キーかトークンのどちらか一方を渡してください。 |
| WithAccessTokenFunc | アクセストークンを返す関数です。リクエストのたびに事前に実行されるため、トークンを更新する場所になります。 |
| WithBaseURL | API のオリジンです。localhost:2222 のようなホストだけの値にはスキームが補われます。 |
| WithHTTPClient | *http.Client、または同じ Do メソッドを持つものです。テストではここに偽のクライアントを渡します。 |
| WithTimeout | 1 回の試行にかけられる時間。既定は 30 秒で、ゼロにすると無効になり、アップロードは少なくとも 10 分待ちます。 |
| WithMaxRetries | 失敗したリクエストを再試行する回数です。既定値は 2 で、0 にすると 1 回だけ送信します。 |
| WithUserAgent | openemail-go/ とバージョンからなる User-Agent ヘッダーを置き換えます。 |
| WithHeader | すべてのリクエストにヘッダーを追加します。 |
省略したものは環境から読み込まれます。OPENEMAIL_API_KEY、次に OPENEMAIL_ACCESS_TOKEN、そして OPENEMAIL_BASE_URL です。client.Mode() はキーが live キーか test キーかを返します。
コンテキストとタイムアウト
すべてのメソッドは最初に context.Context を受け取ります。キャンセルすると呼び出しはすぐに止まり、その期限は再試行を含む呼び出し全体を制限します。WithTimeout は 1 回ごとの試行を制限します。WithTimeout は個別の呼び出しにも使えます。
ctx, cancel := context.WithTimeout(ctx, 10*time.Second)defer cancel() thread, err := client.Threads.Get(ctx, "CAHk7pQ2x9LmZ4-mail.example.com", openemail.WithTimeout(5*time.Second))if err != nil { return err} fmt.Println(thread.Int("messageCount"))呼び出しごとのオプション
クエリパラメーターと呼び出しの設定は、引数のあとに渡す関数です。たとえば openemail.WithLimit、openemail.WithCursor、openemail.WithIdempotencyKey があります。各メソッドはリファレンスの項目に載っているオプションを受け付け、当てはまらないオプションは何も送信される前に拒否されます。
page, err := client.Emails.List(ctx, openemail.WithStatus("failed", "bounced"), openemail.WithLimit(50), openemail.WithAPIKey(os.Getenv("OTHER_WORKSPACE_KEY")),)if err != nil { return err} fmt.Println(len(page.Items), page.HasMore)クライアントが拒否するもの
oe_live_またはoe_test_で始まらないキー、およびアクセストークンと一緒に渡されたキー。- 平文の
http:での資格情報の送信。ただしサーバーがこのマシンのlocalhost、127.x.x.xのアドレス、または::1にある場合は除きます。 0.0.0.0のベース URL。これはサーバーが待ち受けるアドレスです。同じポートで127.0.0.1を使ってください。- 空の id、またはドットだけでできた id。URL パーサーが取り除いてしまいます。
- リダイレクトの追跡。既定の HTTP クライアントはリダイレクトをエラーとして返すため、資格情報が別のホストへ渡ることはありません。
クライアント、オプション、エラーを出力しても、資格情報は表示されません。キー、トークン、カスタムヘッダーの値は、fmt、log/slog、encoding/json の出力に含まれません。
メソッドのないエンドポイント
client.Request は、クライアントの資格情報、ベース URL、タイムアウト、再試行ポリシーを使って任意のパスを呼び出します。パスは 1 つの / で始まる必要があり、ベース URL のオリジンから外れるパスは拒否されます。
label, err := client.Request(ctx, http.MethodPost, "/labels", openemail.Body{"name": "Invoices"})if err != nil { return err} fmt.Println(label)