diff --git a/v1/types.go b/v1/types.go index 6510cb2..da074d6 100644 --- a/v1/types.go +++ b/v1/types.go @@ -447,14 +447,20 @@ type Suggestion struct { } type TemplateInfo struct { - Code string `json:"code"` - Name string `json:"name"` - Namespace string `json:"namespace"` - Lang string `json:"lang"` - HeaderParams *HeaderParams `json:"headerParams,omitempty"` - Footer string `json:"footer,omitempty"` - ButtonParams []ButtonParam `json:"buttonParams,omitempty"` - Args []string `json:"args,omitempty"` + Code string `json:"code"` + Variables TemplateVariables `json:"variables,omitempty"` +} + +type TemplateVariables struct { + Header []string `json:"header,omitempty"` + Attachments []TemplateAttachment `json:"attachments,omitempty"` + Body []string `json:"body,omitempty"` + Buttons [][]string `json:"buttons,omitempty"` +} + +type TemplateAttachment struct { + ID string `json:"id"` + Caption string `json:"caption"` } // FileItem struct. diff --git a/v1/types_test.go b/v1/types_test.go index 2d4d7f5..80076dd 100644 --- a/v1/types_test.go +++ b/v1/types_test.go @@ -174,39 +174,32 @@ func TestTransportErrorResponse(t *testing.T) { func TestTemplateInfoUnmarshal(t *testing.T) { tmplJSON := `{ "code": "namespace#BABA_JABA#ru", - "name": "BABA_JABA", - "lang": "ru", - "namespace": "namespace", - "args": ["BABA", "JABA"], - "headerParams": { - "textVars": ["Hey", "Jony"], - "imageUrl": "https://example.com/intaro/ddd22", - "videoUrl": "https://example.com/intaro/ddd23", - "documentUrl": "https://example.com/intaro/ddd24" - }, - "footer": "Scooter", - "buttonParams": [ - { - "urlParameter": "ququq", - "type": "URL", - "text": "CHUCHUH" - } - ] + "variables": { + "header": [ + "header1", + "header2" + ], + "attachments": [ + {"caption":"test-caption", "id":"550e8400-e29b-41d4-a716-446655440000"} + ], + "body": [ + "BABA", + "JABA" + ], + "buttons": [ + ["button1"], + [], + ["button2"] + ] + } }` var tmpl TemplateInfo assert.NoError(t, json.Unmarshal([]byte(tmplJSON), &tmpl)) assert.Equal(t, "namespace#BABA_JABA#ru", tmpl.Code) - assert.Equal(t, "namespace", tmpl.Namespace) - assert.Equal(t, "BABA_JABA", tmpl.Name) - assert.Equal(t, "ru", tmpl.Lang) - assert.Equal(t, []string{"BABA", "JABA"}, tmpl.Args) - assert.Equal(t, []string{"Hey", "Jony"}, tmpl.HeaderParams.TextVars) - assert.Equal(t, "https://example.com/intaro/ddd22", tmpl.HeaderParams.ImageURL) - assert.Equal(t, "https://example.com/intaro/ddd23", tmpl.HeaderParams.VideoURL) - assert.Equal(t, "https://example.com/intaro/ddd24", tmpl.HeaderParams.DocumentURL) - assert.Equal(t, "Scooter", tmpl.Footer) - assert.Equal(t, "URL", string(tmpl.ButtonParams[0].ButtonType)) - assert.Equal(t, "ququq", tmpl.ButtonParams[0].URLParameter) - assert.Equal(t, "CHUCHUH", tmpl.ButtonParams[0].Text) + assert.Equal(t, []string{"header1", "header2"}, tmpl.Variables.Header) + assert.Equal(t, "550e8400-e29b-41d4-a716-446655440000", tmpl.Variables.Attachments[0].ID) + assert.Equal(t, "test-caption", tmpl.Variables.Attachments[0].Caption) + assert.Equal(t, []string{"BABA", "JABA"}, tmpl.Variables.Body) + assert.Equal(t, [][]string{{"button1"}, {}, {"button2"}}, tmpl.Variables.Buttons) }