Kalo te dokumentacioni
Go

Konfigurimi

Çdo opsion i klientit, çfarë lexon nga mjedisi dhe çfarë refuzon.

Opsionet

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())
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.
WithAccessTokenNjë token aksesi OAuth, për një aplikacion që e ka lidhur një person. Jepni një çelës ose një token, jo të dy.
WithAccessTokenFuncNjë funksion që kthen tokenin e aksesit. Ekzekutohet para çdo kërkese, prandaj është vendi ku rinovohet një token.
WithBaseURLOrigjina e API-së. Një hosti të thjeshtë si localhost:2222 i shtohet skema.
WithHTTPClientNjë *http.Client, ose çdo gjë me të njëjtën metodë Do. Një test jep këtu një klient të rremë.
WithTimeoutSa mund të zgjasë një përpjekje. Parazgjedhja është 30 sekonda, zeroja e fik, dhe ngarkimet presin të paktën dhjetë minuta.
WithMaxRetriesSa herë riprovohet një kërkesë e dështuar. Parazgjedhja është 2, dhe 0 dërgon një herë.
WithUserAgentZëvendëson kokën User-Agent, që është openemail-go/ dhe versioni.
WithHeaderI 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.

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"))

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.

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)

Çfarë refuzon klienti

  • Një çelës që nuk fillon me oe_live_ ose oe_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ë, te localhost, te një adresë 127.x.x.x ose te ::1.
  • Një URL bazë te 0.0.0.0, që është një adresë ku dëgjon një server. Përdorni 127.0.0.1 me 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.

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