پرش به مستندات
Go

پیکربندی

هر گزینهٔ کلاینت، آنچه از محیط می‌خواند و آنچه رد می‌کند.

گزینه‌ها

client.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کلید API فضای کاری که با oe_live_ یا oe_test_ آغاز می‌شود. در یک فراخوانی، فقط برای همان فراخوانی با کلید دیگری عمل می‌کند.
WithAccessTokenیک توکن دسترسی OAuth، برای برنامه‌ای که یک شخص متصل کرده است. یک کلید یا یک توکن بدهید، نه هر دو.
WithAccessTokenFuncتابعی که توکن دسترسی را برمی‌گرداند. پیش از هر درخواست اجرا می‌شود، پس جای تمدید توکن همین‌جاست.
WithBaseURLمبدأ API. به میزبان ساده‌ای مانند localhost:2222 طرح آن افزوده می‌شود.
WithHTTPClientیک *http.Client، یا هر چیزی با همان متد Do. آزمون اینجا یک کلاینت ساختگی می‌دهد.
WithTimeoutاینکه یک تلاش چقدر می‌تواند طول بکشد. پیش‌فرض 30 ثانیه است، صفر آن را خاموش می‌کند، و بارگذاری‌ها دست‌کم ده دقیقه صبر می‌کنند.
WithMaxRetriesتعداد دفعاتی که یک درخواست ناموفق دوباره امتحان می‌شود. پیش‌فرض 2 است، و 0 یک بار می‌فرستد.
WithUserAgentسرآیند User-Agent را جایگزین می‌کند، که openemail-go/ و نسخه است.
WithHeaderیک سرآیند به هر درخواست اضافه می‌کند.

هر چه را ننویسید از محیط خوانده می‌شود: OPENEMAIL_API_KEY، سپس OPENEMAIL_ACCESS_TOKEN، و OPENEMAIL_BASE_URL. client.Mode() می‌گوید کلید یک کلید live است یا test.

زمینه و مهلت‌ها

هر متد نخست یک context.Context می‌گیرد. لغو آن فراخوانی را بی‌درنگ متوقف می‌کند، و سررسید آن کل فراخوانی را همراه با تلاش‌های دوباره محدود می‌کند، در حالی که WithTimeout هر تلاش را محدود می‌کند. WithTimeout روی یک فراخوانی تکی هم کار می‌کند.

deadline.go
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. هر متد گزینه‌هایی را می‌پذیرد که مدخلش در مرجع فهرست کرده است، و گزینه‌ای که به آن مربوط نیست پیش از ارسال هر چیزی رد می‌شود.

another_workspace.go
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، که نشانی‌ای است که سرور روی آن گوش می‌دهد. از 127.0.0.1 با همان درگاه استفاده کنید.
  • شناسهٔ خالی، یا شناسه‌ای که فقط از نقطه ساخته شده و تجزیه‌گر URL آن را حذف می‌کند.
  • دنبال کردن تغییر مسیر. کلاینت HTTP پیش‌فرض آن را به‌صورت خطا برمی‌گرداند، پس اعتبارنامه هرگز به میزبان دیگری نمی‌رود.

چاپ کردن یک کلاینت، یک گزینه یا یک خطا هرگز اعتبارنامه را نشان نمی‌دهد. کلید، توکن و مقدار سرآیندهای سفارشی از خروجی fmt، log/slog و encoding/json بیرون می‌مانند.

نقطهٔ پایانی بدون متد

client.Request هر مسیری را با اعتبارنامه، نشانی پایه، مهلت و سیاست تلاش دوبارهٔ کلاینت فراخوانی می‌کند. مسیر باید با یک / تکی شروع شود، و مسیری که از مبدأ نشانی پایه بیرون برود رد می‌شود.

request.go
label, err := client.Request(ctx, http.MethodPost, "/labels", openemail.Body{"name": "Invoices"})if err != nil {	return err} fmt.Println(label)