diff --git a/marusia/skill.go b/marusia/skill.go index 526445e0..d257f787 100644 --- a/marusia/skill.go +++ b/marusia/skill.go @@ -356,6 +356,9 @@ const ( // Карточка vk miniapp'а. MiniApp CardType = "MiniApp" + + // Стилизованная ссылка. + Link CardType = "Link" ) // CardItem элемент карточки. @@ -375,10 +378,15 @@ type Card struct { // Тип карточки. Type CardType `json:"type"` - // Заголовок изображения. + // Заголовок изображения или ссылки. Title string `json:"title,omitempty"` + // Описание ссылки. + Text string `json:"text,omitempty"` + // Описание изображения. + // + // Deprecated: исчезло из документации. Description string `json:"description,omitempty"` // ID изображения из раздела "Медиа-файлы" в настройках скилла @@ -429,6 +437,17 @@ func NewMiniApp(url string) *Card { } } +// NewLink возвращает карточку с стилизованной ссылкой. +func NewLink(url, title, text string, imageID int) *Card { + return &Card{ + Type: Link, + URL: url, + Title: title, + Text: text, + ImageID: imageID, + } +} + // Response данные для ответа пользователю. type Response struct { // Текст, который следует показать и сказать пользователю. Максимум 1024 diff --git a/marusia/skill_test.go b/marusia/skill_test.go index 5399bece..cb45caf8 100644 --- a/marusia/skill_test.go +++ b/marusia/skill_test.go @@ -93,6 +93,28 @@ func TestNewMiniApp(t *testing.T) { ) } +func TestNewLink(t *testing.T) { + t.Parallel() + + f := func(url, title, text string, imageID int, actual *marusia.Card) { + t.Helper() + + card := marusia.NewLink(url, title, text, imageID) + + assert.Equal(t, card, actual) + } + + f("url", "title", "text", 1234, + &marusia.Card{ + Type: marusia.Link, + URL: "url", + Title: "title", + Text: "text", + ImageID: 1234, + }, + ) +} + func TestNewImageList(t *testing.T) { t.Parallel()