Yapılandırma
İstemcinin her seçeneği, ortamdan okudukları ve reddettikleri.
Seçenekler
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())| Seçenek | Ne yapar |
|---|---|
| WithAPIKey | oe_live_ ya da oe_test_ ile başlayan çalışma alanı API anahtarı. Bir çağrıda verildiğinde, yalnızca o çağrı için başka bir anahtarla işlem yapar. |
| WithAccessToken | Bir kişinin bağladığı uygulama için OAuth erişim belirteci. Bir anahtar ya da bir belirteç geçirin, ikisini birden değil. |
| WithAccessTokenFunc | Erişim belirtecini döndüren bir işlev. Her istekten önce çalışır, bu yüzden belirteci yenilemenin yeri burasıdır. |
| WithBaseURL | API'nin kaynağı. localhost:2222 gibi yalın bir ana makineye şeması eklenir. |
| WithHTTPClient | Bir *http.Client ya da aynı Do yöntemine sahip herhangi bir şey. Bir test buraya sahte bir istemci geçirir. |
| WithTimeout | Tek bir denemenin ne kadar sürebileceği. Varsayılan 30 saniyedir, sıfır bunu kapatır ve yüklemeler en az on dakika bekler. |
| WithMaxRetries | Başarısız bir isteğin kaç kez yeniden deneneceği. Varsayılan 2'dir, 0 ise bir kez gönderir. |
| WithUserAgent | openemail-go/ ve sürümden oluşan User-Agent üstbilgisinin yerine geçer. |
| WithHeader | Her isteğe bir üstbilgi ekler. |
Belirtmediğiniz her şey ortamdan okunur: OPENEMAIL_API_KEY, ardından OPENEMAIL_ACCESS_TOKEN ve OPENEMAIL_BASE_URL. client.Mode() anahtarın live mi yoksa test anahtarı mı olduğunu söyler.
Bağlam ve zaman aşımları
Her yöntem önce bir context.Context alır. Onu iptal etmek çağrıyı hemen durdurur, son tarihi yeniden denemeler dahil tüm çağrıyı sınırlar, WithTimeout ise her denemeyi sınırlar. WithTimeout tek bir çağrıda da çalışır.
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"))Bir çağrıdaki seçenekler
Sorgu parametreleri ve çağrı ayarları, bağımsız değişkenlerden sonra geçirilen işlevlerdir; örneğin openemail.WithLimit, openemail.WithCursor ve openemail.WithIdempotencyKey. Her yöntem, başvuru girdisinde listelenen seçenekleri kabul eder ve uymayan bir seçenek hiçbir şey gönderilmeden reddedilir.
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)İstemcinin reddettikleri
oe_live_ya daoe_test_ile başlamayan bir anahtar ve bir erişim belirteciyle birlikte verilen bir anahtar.- Sunucu bu makinede
localhost, bir127.x.x.xadresi ya da::1üzerinde değilse, bir kimlik bilgisini düzhttp:üzerinden göndermek. - Bir sunucunun dinlediği adres olan
0.0.0.0üzerindeki bir temel URL. Aynı bağlantı noktasıyla127.0.0.1kullanın. - Boş bir kimlik ya da yalnızca noktalardan oluşan ve bir URL ayrıştırıcısının kaldıracağı bir kimlik.
- Bir yönlendirmeyi izlemek. Varsayılan HTTP istemcisi onu hata olarak döndürür, böylece bir kimlik bilgisi asla başka bir ana makineye gitmez.
Bir istemciyi, bir seçeneği ya da bir hatayı yazdırmak hiçbir zaman kimlik bilgisi göstermez. Anahtar, belirteç ve özel üstbilgilerin değerleri fmt, log/slog ve encoding/json çıktısının dışında tutulur.
Yöntemi olmayan bir uç nokta
client.Request, istemcinin kimlik bilgisi, temel URL'si, zaman aşımı ve yeniden deneme kurallarıyla herhangi bir yolu çağırır. Yol tek bir / ile başlamalıdır ve temel URL'nin kaynağının dışına çıkan bir yol reddedilir.
label, err := client.Request(ctx, http.MethodPost, "/labels", openemail.Body{"name": "Invoices"})if err != nil { return err} fmt.Println(label)