From e2128761a42b7e7733ca1bae669a7053fb24b3f4 Mon Sep 17 00:00:00 2001 From: nukosuke Date: Tue, 4 Dec 2018 23:16:45 +0900 Subject: [PATCH] Add GetLocales() --- zendesk/locale.go | 20 ++++++++++++++++++++ zendesk/locale_test.go | 21 +++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 zendesk/locale_test.go diff --git a/zendesk/locale.go b/zendesk/locale.go index 7534088d..fd09b061 100644 --- a/zendesk/locale.go +++ b/zendesk/locale.go @@ -1,6 +1,7 @@ package zendesk import ( + "encoding/json" "time" ) @@ -14,3 +15,22 @@ type Locale struct { CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } + +// GetLocales lists the translation locales available for the account. +// https://developer.zendesk.com/rest_api/docs/support/locales#list-locales +func (z *Client) GetLocales() ([]Locale, error) { + var data struct { + Locales []Locale `json:"locales"` + } + + body, err := z.Get("/locales.json") + if err != nil { + return nil, err + } + + err = json.Unmarshal(body, &data) + if err != nil { + return nil, err + } + return data.Locales, nil +} diff --git a/zendesk/locale_test.go b/zendesk/locale_test.go new file mode 100644 index 00000000..e880148f --- /dev/null +++ b/zendesk/locale_test.go @@ -0,0 +1,21 @@ +package zendesk + +import ( + "net/http" + "testing" +) + +func TestGetLocales(t *testing.T) { + mockAPI := newMockAPI(http.MethodGet, "locales.json") + client := newTestClient(mockAPI) + defer mockAPI.Close() + + locales, err := client.GetLocales() + if err != nil { + t.Fatalf("Failed to get locales: %s", err) + } + + if len(locales) != 3 { + t.Fatalf("expected length of groups is 3, but got %d", len(locales)) + } +}