Konfigurimi
Çdo opsion i klientit, çfarë lexon nga mjedisi dhe çfarë refuzon.
Opsionet
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())| Opsioni | Çfarë bën |
|---|---|
| WithAPIKey | Çelësi API i hapësirës së punës, që fillon me oe_live_ ose oe_test_. Në një thirrje, vepron me një çelës tjetër vetëm për atë thirrje. |
| WithAccessToken | Një token aksesi OAuth, për një aplikacion që e ka lidhur një person. Jepni një çelës ose një token, jo të dy. |
| WithAccessTokenFunc | Një funksion që kthen tokenin e aksesit. Ekzekutohet para çdo kërkese, prandaj është vendi ku rinovohet një token. |
| WithBaseURL | Origjina e API-së. Një hosti të thjeshtë si localhost:2222 i shtohet skema. |
| WithHTTPClient | Një *http.Client, ose çdo gjë me të njëjtën metodë Do. Një test jep këtu një klient të rremë. |
| WithTimeout | Sa mund të zgjasë një përpjekje. Parazgjedhja është 30 sekonda, zeroja e fik, dhe ngarkimet presin të paktën dhjetë minuta. |
| WithMaxRetries | Sa herë riprovohet një kërkesë e dështuar. Parazgjedhja është 2, dhe 0 dërgon një herë. |
| WithUserAgent | Zëvendëson kokën User-Agent, që është openemail-go/ dhe versioni. |
| WithHeader | I shton një kokë çdo kërkese. |
Çdo gjë që e lini jashtë lexohet nga mjedisi: OPENEMAIL_API_KEY, pastaj OPENEMAIL_ACCESS_TOKEN, dhe OPENEMAIL_BASE_URL. client.Mode() tregon nëse çelësi është çelës live apo test.
Konteksti dhe afatet kohore
Çdo metodë merr së pari një context.Context. Anulimi i tij e ndal thirrjen menjëherë, dhe afati i tij kufizon gjithë thirrjen, bashkë me riprovimet, ndërsa WithTimeout kufizon çdo përpjekje. WithTimeout funksionon edhe në një thirrje të vetme.
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"))Opsionet në një thirrje
Parametrat e kërkimit dhe cilësimet e një thirrjeje janë funksione që jepen pas argumenteve, si openemail.WithLimit, openemail.WithCursor dhe openemail.WithIdempotencyKey. Çdo metodë pranon opsionet që rendit hyrja e saj në referencë, dhe një opsion që nuk i përket refuzohet para se të dërgohet diçka.
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)Çfarë refuzon klienti
- Një çelës që nuk fillon me
oe_live_oseoe_test_, dhe një çelës së bashku me një token aksesi. - Dërgimin e një kredenciali përmes
http:të thjeshtë, përveç kur serveri është në këtë makinë, telocalhost, te një adresë127.x.x.xose te::1. - Një URL bazë te
0.0.0.0, që është një adresë ku dëgjon një server. Përdorni127.0.0.1me të njëjtën portë. - Një id bosh, ose një të përbërë vetëm nga pika, të cilën një analizues URL-je do ta hiqte.
- Ndjekjen e një ridrejtimi. Klienti HTTP i parazgjedhur e kthen si gabim, kështu që një kredencial nuk udhëton kurrë te një host tjetër.
Shtypja e një klienti, e një opsioni ose e një gabimi nuk tregon kurrë një kredencial. Çelësi, tokeni dhe vlerat e kokave të personalizuara mbahen jashtë daljes së fmt, log/slog dhe encoding/json.
Një endpoint pa metodë
client.Request thërret çdo shteg me kredencialin, URL-në bazë, afatin kohor dhe rregullat e riprovimit të klientit. Shtegu duhet të fillojë me një / të vetme, dhe një shteg që del nga origjina e URL-së bazë refuzohet.
label, err := client.Request(ctx, http.MethodPost, "/labels", openemail.Body{"name": "Invoices"})if err != nil { return err} fmt.Println(label)