gitee.com/larksuite/oapi-sdk-go/v3@v3.0.3/card/model.go (about)

     1  /*
     2   * MIT License
     3   *
     4   * Copyright (c) 2022 Lark Technologies Pte. Ltd.
     5   *
     6   * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
     7   *
     8   * The above copyright notice and this permission notice, shall be included in all copies or substantial portions of the Software.
     9   *
    10   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    11   */
    12  
    13  package larkcard
    14  
    15  import (
    16  	"encoding/json"
    17  
    18  	larkcore "gitee.com/larksuite/oapi-sdk-go/v3/core"
    19  	larkevent "gitee.com/larksuite/oapi-sdk-go/v3/event"
    20  )
    21  
    22  const (
    23  	TemplateBlue      = "blue"
    24  	TemplateWathet    = "wathet"
    25  	TemplateTurquoise = "turquoise"
    26  	TemplateGreen     = "green"
    27  	TemplateYellow    = "yellow"
    28  	TemplateOrange    = "orange"
    29  	TemplateRed       = "red"
    30  	TemplateCarmine   = "carmine"
    31  	TemplateViolet    = "violet"
    32  	TemplatePurple    = "purple"
    33  	TemplateIndigo    = "indigo"
    34  	TemplateGrey      = "grey"
    35  )
    36  
    37  type MessageCard struct {
    38  	Config_       *MessageCardConfig       `json:"config,omitempty"`
    39  	Header_       *MessageCardHeader       `json:"header,omitempty"`
    40  	Elements_     []MessageCardElement     `json:"elements,omitempty"`
    41  	I18nElements_ *MessageCardI18nElements `json:"i18n_elements,omitempty"`
    42  	CardLink_     *MessageCardURL          `json:"card_link,omitempty"`
    43  }
    44  
    45  func (m *MessageCard) String() (string, error) {
    46  	bs, err := json.Marshal(m)
    47  	if err != nil {
    48  		return "", err
    49  	}
    50  	return string(bs), nil
    51  }
    52  func NewMessageCard() *MessageCard {
    53  	return &MessageCard{}
    54  }
    55  
    56  func (card *MessageCard) Config(config *MessageCardConfig) *MessageCard {
    57  	card.Config_ = config
    58  	return card
    59  }
    60  
    61  func (card *MessageCard) Header(header *MessageCardHeader) *MessageCard {
    62  	card.Header_ = header
    63  	return card
    64  }
    65  
    66  func (card *MessageCard) Elements(elements []MessageCardElement) *MessageCard {
    67  	card.Elements_ = elements
    68  	return card
    69  }
    70  
    71  func (card *MessageCard) I18nElements(i18nElements *MessageCardI18nElements) *MessageCard {
    72  	card.I18nElements_ = i18nElements
    73  	return card
    74  }
    75  
    76  func (card *MessageCard) CardLink(cardLink *MessageCardURL) *MessageCard {
    77  	card.CardLink_ = cardLink
    78  	return card
    79  }
    80  
    81  func (card *MessageCard) Build() *MessageCard {
    82  	return card
    83  }
    84  
    85  type MessageCardI18nElements struct {
    86  	ZhCN_ []MessageCardElement `json:"zh_cn,omitempty"`
    87  	EnUS_ []MessageCardElement `json:"en_us,omitempty"`
    88  	JaJP_ []MessageCardElement `json:"ja_jp,omitempty"`
    89  }
    90  
    91  func NewMessageCardI18nElements() *MessageCardI18nElements {
    92  	return &MessageCardI18nElements{}
    93  }
    94  
    95  func (i18nEle *MessageCardI18nElements) ZhCN(zhCn []MessageCardElement) *MessageCardI18nElements {
    96  	i18nEle.ZhCN_ = zhCn
    97  	return i18nEle
    98  }
    99  
   100  func (i18nEle *MessageCardI18nElements) EnUS(enUS []MessageCardElement) *MessageCardI18nElements {
   101  	i18nEle.EnUS_ = enUS
   102  	return i18nEle
   103  }
   104  
   105  func (i18nEle *MessageCardI18nElements) JaJP(jaJP []MessageCardElement) *MessageCardI18nElements {
   106  	i18nEle.JaJP_ = jaJP
   107  	return i18nEle
   108  }
   109  
   110  func (i18nEle *MessageCardI18nElements) Build() *MessageCardI18nElements {
   111  	return i18nEle
   112  }
   113  
   114  type MessageCardElement interface {
   115  	Tag() string
   116  	MarshalJSON() ([]byte, error)
   117  }
   118  
   119  type MessageCardActionElement interface {
   120  	MessageCardElement
   121  	IsAction()
   122  }
   123  
   124  type MessageCardExtraElement interface {
   125  	MessageCardElement
   126  	IsExtra()
   127  }
   128  
   129  type MessageCardNoteElement interface {
   130  	MessageCardElement
   131  	IsNote()
   132  }
   133  
   134  type MessageCardHr struct {
   135  }
   136  
   137  func NewMessageCardHr() *MessageCardHr {
   138  	return &MessageCardHr{}
   139  }
   140  
   141  func (hr *MessageCardHr) Build() *MessageCardHr {
   142  	return hr
   143  }
   144  
   145  func (m *MessageCardHr) Tag() string {
   146  	return "hr"
   147  }
   148  
   149  func (m *MessageCardHr) MarshalJSON() ([]byte, error) {
   150  	return messageCardElementJson(m)
   151  }
   152  
   153  func messageCardElementJson(e MessageCardElement) ([]byte, error) {
   154  	data, err := larkcore.StructToMap(e)
   155  	if err != nil {
   156  		return nil, err
   157  	}
   158  	data["tag"] = e.Tag()
   159  	return json.Marshal(data)
   160  }
   161  
   162  type MessageCardMarkdown struct {
   163  	Content_ string                     `json:"content,omitempty"`
   164  	Href_    map[string]*MessageCardURL `json:"href,omitempty"`
   165  }
   166  
   167  func NewMessageCardMarkdown() *MessageCardMarkdown {
   168  	return &MessageCardMarkdown{}
   169  }
   170  
   171  func (markDown *MessageCardMarkdown) Content(content string) *MessageCardMarkdown {
   172  	markDown.Content_ = content
   173  	return markDown
   174  }
   175  
   176  func (markDown *MessageCardMarkdown) Href(href map[string]*MessageCardURL) *MessageCardMarkdown {
   177  	markDown.Href_ = href
   178  	return markDown
   179  }
   180  
   181  func (markDown *MessageCardMarkdown) Build() *MessageCardMarkdown {
   182  	return markDown
   183  }
   184  
   185  func (m *MessageCardMarkdown) Tag() string {
   186  	return "markdown"
   187  }
   188  
   189  func (m *MessageCardMarkdown) MarshalJSON() ([]byte, error) {
   190  	return messageCardElementJson(m)
   191  }
   192  
   193  type MessageCardDiv struct {
   194  	Text_   MessageCardText         `json:"text,omitempty"`
   195  	Fields_ []*MessageCardField     `json:"fields,omitempty"`
   196  	Extra_  MessageCardExtraElement `json:"extra,omitempty"`
   197  }
   198  
   199  func NewMessageCardDiv() *MessageCardDiv {
   200  	return &MessageCardDiv{}
   201  }
   202  
   203  func (div *MessageCardDiv) Text(text MessageCardText) *MessageCardDiv {
   204  	div.Text_ = text
   205  	return div
   206  }
   207  
   208  func (div *MessageCardDiv) Fields(fields []*MessageCardField) *MessageCardDiv {
   209  	div.Fields_ = fields
   210  	return div
   211  }
   212  
   213  func (div *MessageCardDiv) Extra(extra MessageCardExtraElement) *MessageCardDiv {
   214  	div.Extra_ = extra
   215  	return div
   216  }
   217  
   218  func (div *MessageCardDiv) Build() *MessageCardDiv {
   219  	return div
   220  }
   221  
   222  type MessageCardField struct {
   223  	IsShort_ bool            `json:"is_short,omitempty"`
   224  	Text_    MessageCardText `json:"text,omitempty"`
   225  }
   226  
   227  func NewMessageCardField() *MessageCardField {
   228  	return &MessageCardField{}
   229  }
   230  
   231  func (field *MessageCardField) IsShort(isShort bool) *MessageCardField {
   232  	field.IsShort_ = isShort
   233  	return field
   234  }
   235  
   236  func (field *MessageCardField) Text(text MessageCardText) *MessageCardField {
   237  	field.Text_ = text
   238  	return field
   239  }
   240  
   241  func (field *MessageCardField) Build() *MessageCardField {
   242  	return field
   243  }
   244  
   245  func (m *MessageCardDiv) Tag() string {
   246  	return "div"
   247  }
   248  
   249  func (m *MessageCardDiv) MarshalJSON() ([]byte, error) {
   250  	return messageCardElementJson(m)
   251  }
   252  
   253  type MessageCardText interface {
   254  	MessageCardElement
   255  	Text() string
   256  }
   257  type MessageCardURL struct {
   258  	URL_        string `json:"url,omitempty"`
   259  	AndroidURL_ string `json:"android_url,omitempty"`
   260  	IOSURL_     string `json:"ios_url,omitempty"`
   261  	PCURL_      string `json:"pc_url,omitempty"`
   262  }
   263  
   264  func NewMessageCardURL() *MessageCardURL {
   265  	return &MessageCardURL{}
   266  }
   267  
   268  func (cardUrl *MessageCardURL) Url(url string) *MessageCardURL {
   269  	cardUrl.URL_ = url
   270  	return cardUrl
   271  }
   272  
   273  func (cardUrl *MessageCardURL) AndroidUrl(androidUrl string) *MessageCardURL {
   274  	cardUrl.AndroidURL_ = androidUrl
   275  	return cardUrl
   276  }
   277  
   278  func (cardUrl *MessageCardURL) IoSUrl(iOSUrl string) *MessageCardURL {
   279  	cardUrl.IOSURL_ = iOSUrl
   280  	return cardUrl
   281  }
   282  
   283  func (cardUrl *MessageCardURL) PcUrl(pcURL string) *MessageCardURL {
   284  	cardUrl.PCURL_ = pcURL
   285  	return cardUrl
   286  }
   287  
   288  func (cardUrl *MessageCardURL) Build() *MessageCardURL {
   289  	return cardUrl
   290  }
   291  
   292  type MessageCardConfig struct {
   293  	EnableForward_  *bool `json:"enable_forward,omitempty"`
   294  	UpdateMulti_    *bool `json:"update_multi,omitempty"`
   295  	WideScreenMode_ *bool `json:"wide_screen_mode,omitempty"`
   296  }
   297  
   298  func NewMessageCardConfig() *MessageCardConfig {
   299  	return &MessageCardConfig{}
   300  }
   301  
   302  func (config *MessageCardConfig) EnableForward(enableForward bool) *MessageCardConfig {
   303  	config.EnableForward_ = &enableForward
   304  	return config
   305  }
   306  
   307  func (config *MessageCardConfig) UpdateMulti(updateMulti bool) *MessageCardConfig {
   308  	config.UpdateMulti_ = &updateMulti
   309  	return config
   310  }
   311  
   312  func (config *MessageCardConfig) WideScreenMode(wideScreenMode bool) *MessageCardConfig {
   313  	config.WideScreenMode_ = &wideScreenMode
   314  	return config
   315  }
   316  
   317  func (config *MessageCardConfig) Build() *MessageCardConfig {
   318  	return config
   319  }
   320  
   321  type MessageCardHeader struct {
   322  	Template_ *string               `json:"template,omitempty"`
   323  	Title_    *MessageCardPlainText `json:"title,omitempty"`
   324  }
   325  
   326  func NewMessageCardHeader() *MessageCardHeader {
   327  	return &MessageCardHeader{}
   328  }
   329  
   330  func (header *MessageCardHeader) Template(template string) *MessageCardHeader {
   331  	header.Template_ = &template
   332  	return header
   333  }
   334  
   335  func (header *MessageCardHeader) Title(title *MessageCardPlainText) *MessageCardHeader {
   336  	header.Title_ = title
   337  	return header
   338  }
   339  
   340  func (header *MessageCardHeader) Build() *MessageCardHeader {
   341  	return header
   342  }
   343  
   344  func (m *MessageCard) JSON() (string, error) {
   345  	bs, err := json.Marshal(m)
   346  	if err != nil {
   347  		return "", err
   348  	}
   349  	return string(bs), nil
   350  }
   351  
   352  type MessageCardPlainText struct {
   353  	Content_ string                    `json:"content,omitempty"`
   354  	Lines_   *int                      `json:"lines,omitempty"`
   355  	I18n_    *MessageCardPlainTextI18n `json:"i18n,omitempty"`
   356  }
   357  
   358  func NewMessageCardPlainText() *MessageCardPlainText {
   359  	return &MessageCardPlainText{}
   360  }
   361  
   362  func (plainText *MessageCardPlainText) Content(content string) *MessageCardPlainText {
   363  	plainText.Content_ = content
   364  	return plainText
   365  }
   366  
   367  func (plainText *MessageCardPlainText) Lines(lines int) *MessageCardPlainText {
   368  	plainText.Lines_ = &lines
   369  	return plainText
   370  }
   371  
   372  func (plainText *MessageCardPlainText) I18n(i18n *MessageCardPlainTextI18n) *MessageCardPlainText {
   373  	plainText.I18n_ = i18n
   374  	return plainText
   375  }
   376  
   377  func (plainText *MessageCardPlainText) Build() *MessageCardPlainText {
   378  	return plainText
   379  }
   380  
   381  func (m *MessageCardPlainText) Tag() string {
   382  	return "plain_text"
   383  }
   384  
   385  func (m *MessageCardPlainText) MarshalJSON() ([]byte, error) {
   386  	return messageCardElementJson(m)
   387  }
   388  
   389  func (m *MessageCardPlainText) Text() string {
   390  	return m.Content_
   391  }
   392  
   393  func (m *MessageCardPlainText) IsExtra() {
   394  }
   395  
   396  func (m *MessageCardPlainText) IsNote() {
   397  }
   398  
   399  type MessageCardLarkMd struct {
   400  	Content_ string `json:"content,omitempty"`
   401  }
   402  
   403  func NewMessageCardLarkMd() *MessageCardLarkMd {
   404  	return &MessageCardLarkMd{}
   405  }
   406  
   407  func (md *MessageCardLarkMd) Content(content string) *MessageCardLarkMd {
   408  	md.Content_ = content
   409  	return md
   410  }
   411  
   412  func (md *MessageCardLarkMd) Build() *MessageCardLarkMd {
   413  	return md
   414  }
   415  
   416  func (m *MessageCardLarkMd) Tag() string {
   417  	return "lark_md"
   418  }
   419  
   420  func (m *MessageCardLarkMd) MarshalJSON() ([]byte, error) {
   421  	return messageCardElementJson(m)
   422  }
   423  
   424  func (m *MessageCardLarkMd) Text() string {
   425  	return m.Content_
   426  }
   427  
   428  func (m *MessageCardLarkMd) IsExtra() {
   429  }
   430  
   431  func (m *MessageCardLarkMd) IsNote() {
   432  }
   433  
   434  type MessageCardImageModel string
   435  
   436  const (
   437  	MessageCardImageModelFitHorizontal MessageCardImageModel = "fit_horizontal"
   438  	MessageCardImageModelCropCenter    MessageCardImageModel = "crop_center"
   439  )
   440  
   441  func (m MessageCardImageModel) Ptr() *MessageCardImageModel {
   442  	return &m
   443  }
   444  
   445  type MessageCardImage struct {
   446  	Alt_          *MessageCardPlainText  `json:"alt,omitempty"`
   447  	Title_        MessageCardText        `json:"title,omitempty"`
   448  	ImgKey_       string                 `json:"img_key,omitempty"`
   449  	CustomWidth_  *int                   `json:"custom_width,omitempty"`
   450  	CompactWidth_ *bool                  `json:"compact_width,omitempty"`
   451  	Mode_         *MessageCardImageModel `json:"mode,omitempty"`
   452  	Preview_      *bool                  `json:"preview,omitempty"`
   453  }
   454  
   455  func NewMessageCardImage() *MessageCardImage {
   456  	return &MessageCardImage{}
   457  }
   458  
   459  func (image *MessageCardImage) Preview(preview bool) *MessageCardImage {
   460  	image.Preview_ = &preview
   461  	return image
   462  }
   463  
   464  func (image *MessageCardImage) Alt(alt *MessageCardPlainText) *MessageCardImage {
   465  	image.Alt_ = alt
   466  	return image
   467  }
   468  
   469  func (image *MessageCardImage) Title(title MessageCardText) *MessageCardImage {
   470  	image.Title_ = title
   471  	return image
   472  }
   473  
   474  func (image *MessageCardImage) ImgKey(imgKey string) *MessageCardImage {
   475  	image.ImgKey_ = imgKey
   476  	return image
   477  }
   478  
   479  func (image *MessageCardImage) CustomWidth(customWidth int) *MessageCardImage {
   480  	image.CustomWidth_ = &customWidth
   481  	return image
   482  }
   483  
   484  func (image *MessageCardImage) CompactWidth(compactWidth bool) *MessageCardImage {
   485  	image.CompactWidth_ = &compactWidth
   486  	return image
   487  }
   488  
   489  func (image *MessageCardImage) Mode(mode MessageCardImageModel) *MessageCardImage {
   490  	image.Mode_ = &mode
   491  	return image
   492  }
   493  
   494  func (image *MessageCardImage) Build() *MessageCardImage {
   495  	return image
   496  }
   497  
   498  func (m *MessageCardImage) Tag() string {
   499  	return "img"
   500  }
   501  
   502  func (m *MessageCardImage) MarshalJSON() ([]byte, error) {
   503  	return messageCardElementJson(m)
   504  }
   505  
   506  type MessageCardNote struct {
   507  	Elements_ []MessageCardNoteElement `json:"elements,omitempty"`
   508  }
   509  
   510  func NewMessageCardNote() *MessageCardNote {
   511  	return &MessageCardNote{}
   512  }
   513  
   514  func (note *MessageCardNote) Elements(elements []MessageCardNoteElement) *MessageCardNote {
   515  	note.Elements_ = elements
   516  	return note
   517  }
   518  
   519  func (note *MessageCardNote) Build() *MessageCardNote {
   520  	return note
   521  }
   522  
   523  func (m *MessageCardNote) Tag() string {
   524  	return "note"
   525  }
   526  
   527  func (m *MessageCardNote) MarshalJSON() ([]byte, error) {
   528  	return messageCardElementJson(m)
   529  }
   530  
   531  type MessageCardButtonType string
   532  
   533  const (
   534  	MessageCardButtonTypeDefault MessageCardButtonType = "default"
   535  	MessageCardButtonTypePrimary MessageCardButtonType = "primary"
   536  	MessageCardButtonTypeDanger  MessageCardButtonType = "danger"
   537  )
   538  
   539  func (bt MessageCardButtonType) Ptr() *MessageCardButtonType {
   540  	return &bt
   541  }
   542  
   543  type MessageCardActionConfirm struct {
   544  	Title_ *MessageCardPlainText `json:"title,omitempty"`
   545  	Text_  *MessageCardPlainText `json:"text,omitempty"`
   546  }
   547  
   548  func NewMessageCardActionConfirm() *MessageCardActionConfirm {
   549  	return &MessageCardActionConfirm{}
   550  }
   551  
   552  func (confirm *MessageCardActionConfirm) Title(title *MessageCardPlainText) *MessageCardActionConfirm {
   553  	confirm.Title_ = title
   554  	return confirm
   555  }
   556  
   557  func (confirm *MessageCardActionConfirm) Text(text *MessageCardPlainText) *MessageCardActionConfirm {
   558  	confirm.Text_ = text
   559  	return confirm
   560  }
   561  
   562  func (confirm *MessageCardActionConfirm) Build() *MessageCardActionConfirm {
   563  	return confirm
   564  }
   565  
   566  type MessageCardEmbedImage struct {
   567  	Alt_     *MessageCardPlainText  `json:"alt,omitempty"`
   568  	ImgKey_  string                 `json:"img_key,omitempty"`
   569  	Mode_    *MessageCardImageModel `json:"mode,omitempty"`
   570  	Preview_ *bool                  `json:"preview,omitempty"`
   571  }
   572  
   573  func NewMessageCardEmbedImage() *MessageCardEmbedImage {
   574  	return &MessageCardEmbedImage{}
   575  }
   576  
   577  func (image *MessageCardEmbedImage) Alt(alt *MessageCardPlainText) *MessageCardEmbedImage {
   578  	image.Alt_ = alt
   579  	return image
   580  }
   581  
   582  func (image *MessageCardEmbedImage) ImgKey(imgKey string) *MessageCardEmbedImage {
   583  	image.ImgKey_ = imgKey
   584  	return image
   585  }
   586  
   587  func (image *MessageCardEmbedImage) Mode(mode *MessageCardImageModel) *MessageCardEmbedImage {
   588  	image.Mode_ = mode
   589  	return image
   590  }
   591  
   592  func (image *MessageCardEmbedImage) Preview(preview bool) *MessageCardEmbedImage {
   593  	image.Preview_ = &preview
   594  	return image
   595  }
   596  
   597  func (image *MessageCardEmbedImage) Build() *MessageCardEmbedImage {
   598  	return image
   599  }
   600  
   601  func (m *MessageCardEmbedImage) Tag() string {
   602  	return "img"
   603  }
   604  
   605  func (m *MessageCardEmbedImage) IsExtra() {
   606  }
   607  
   608  func (m *MessageCardEmbedImage) IsNote() {
   609  }
   610  
   611  func (m *MessageCardEmbedImage) MarshalJSON() ([]byte, error) {
   612  	return messageCardElementJson(m)
   613  }
   614  
   615  type MessageCardEmbedButton struct {
   616  	Text_     MessageCardText           `json:"text,omitempty"`
   617  	URL_      *string                   `json:"url,omitempty"`
   618  	MultiURL_ *MessageCardURL           `json:"multi_url,omitempty"`
   619  	Type_     *MessageCardButtonType    `json:"type,omitempty"`
   620  	Value_    map[string]interface{}    `json:"value,omitempty"`
   621  	Confirm_  *MessageCardActionConfirm `json:"confirm,omitempty"`
   622  }
   623  
   624  func NewMessageCardEmbedButton() *MessageCardEmbedButton {
   625  	return &MessageCardEmbedButton{}
   626  }
   627  
   628  func (m *MessageCardEmbedButton) Confirm(confirm *MessageCardActionConfirm) *MessageCardEmbedButton {
   629  	m.Confirm_ = confirm
   630  	return m
   631  }
   632  
   633  func (m *MessageCardEmbedButton) Value(value map[string]interface{}) *MessageCardEmbedButton {
   634  	m.Value_ = value
   635  	return m
   636  }
   637  
   638  func (m *MessageCardEmbedButton) Type(type_ MessageCardButtonType) *MessageCardEmbedButton {
   639  	m.Type_ = &type_
   640  	return m
   641  }
   642  
   643  func (m *MessageCardEmbedButton) Text(text MessageCardText) *MessageCardEmbedButton {
   644  	m.Text_ = text
   645  	return m
   646  }
   647  
   648  func (m *MessageCardEmbedButton) Url(url string) *MessageCardEmbedButton {
   649  	m.URL_ = &url
   650  	return m
   651  }
   652  
   653  func (m *MessageCardEmbedButton) MultiUrl(multiURL *MessageCardURL) *MessageCardEmbedButton {
   654  	m.MultiURL_ = multiURL
   655  	return m
   656  }
   657  func (m *MessageCardEmbedButton) Build() *MessageCardEmbedButton {
   658  	return m
   659  }
   660  
   661  func (m *MessageCardEmbedButton) Tag() string {
   662  	return "button"
   663  }
   664  
   665  func (m *MessageCardEmbedButton) MarshalJSON() ([]byte, error) {
   666  	return messageCardElementJson(m)
   667  }
   668  
   669  func (m *MessageCardEmbedButton) IsAction() {
   670  }
   671  
   672  func (m *MessageCardEmbedButton) IsExtra() {
   673  }
   674  
   675  type MessageCardEmbedDatePickerBase struct {
   676  	InitialDate_     *string                   `json:"initial_date,omitempty"`
   677  	InitialTime_     *string                   `json:"initial_time,omitempty"`
   678  	InitialDatetime_ *string                   `json:"initial_datetime,omitempty"`
   679  	Placeholder_     *MessageCardPlainText     `json:"placeholder,omitempty"`
   680  	Value_           map[string]interface{}    `json:"value,omitempty"`
   681  	Confirm_         *MessageCardActionConfirm `json:"confirm,omitempty"`
   682  }
   683  
   684  func NewMessageCardEmbedDatePickerBase() *MessageCardEmbedDatePickerBase {
   685  	return &MessageCardEmbedDatePickerBase{}
   686  }
   687  
   688  func (picker *MessageCardEmbedDatePickerBase) InitialDate(initialDate string) *MessageCardEmbedDatePickerBase {
   689  	picker.InitialDate_ = &initialDate
   690  	return picker
   691  }
   692  
   693  func (picker *MessageCardEmbedDatePickerBase) InitialTime(initialTime string) *MessageCardEmbedDatePickerBase {
   694  	picker.InitialTime_ = &initialTime
   695  	return picker
   696  }
   697  func (picker *MessageCardEmbedDatePickerBase) InitialDatetime(initialDatetime string) *MessageCardEmbedDatePickerBase {
   698  	picker.InitialDatetime_ = &initialDatetime
   699  	return picker
   700  }
   701  func (picker *MessageCardEmbedDatePickerBase) Placeholder(placeholder *MessageCardPlainText) *MessageCardEmbedDatePickerBase {
   702  	picker.Placeholder_ = placeholder
   703  	return picker
   704  }
   705  func (picker *MessageCardEmbedDatePickerBase) Value(value map[string]interface{}) *MessageCardEmbedDatePickerBase {
   706  	picker.Value_ = value
   707  	return picker
   708  }
   709  
   710  func (picker *MessageCardEmbedDatePickerBase) Confirm(confirm *MessageCardActionConfirm) *MessageCardEmbedDatePickerBase {
   711  	picker.Confirm_ = confirm
   712  	return picker
   713  }
   714  
   715  func (picker *MessageCardEmbedDatePickerBase) Build() *MessageCardEmbedDatePickerBase {
   716  	return picker
   717  }
   718  
   719  func (m *MessageCardEmbedDatePickerBase) IsAction() {
   720  }
   721  
   722  func (m *MessageCardEmbedDatePickerBase) IsExtra() {
   723  }
   724  
   725  type MessageCardEmbedDatePicker struct {
   726  	*MessageCardEmbedDatePickerBase
   727  }
   728  
   729  func NewMessageCardEmbedDatePicker() *MessageCardEmbedDatePicker {
   730  	return &MessageCardEmbedDatePicker{}
   731  }
   732  
   733  func (m *MessageCardEmbedDatePicker) MessageCardEmbedDatePicker(base *MessageCardEmbedDatePickerBase) *MessageCardEmbedDatePicker {
   734  	m.MessageCardEmbedDatePickerBase = base
   735  	return m
   736  }
   737  
   738  func (m *MessageCardEmbedDatePicker) Tag() string {
   739  	return "date_picker"
   740  }
   741  
   742  func (m *MessageCardEmbedDatePicker) MarshalJSON() ([]byte, error) {
   743  	return messageCardElementJson(m)
   744  }
   745  
   746  type MessageCardEmbedPickerTime struct {
   747  	*MessageCardEmbedDatePickerBase
   748  }
   749  
   750  func NewMessageCardEmbedPickerTime() *MessageCardEmbedPickerTime {
   751  	return &MessageCardEmbedPickerTime{}
   752  }
   753  
   754  func (m *MessageCardEmbedPickerTime) MessageCardEmbedPickerTime(base *MessageCardEmbedDatePickerBase) *MessageCardEmbedPickerTime {
   755  	m.MessageCardEmbedDatePickerBase = base
   756  	return m
   757  }
   758  
   759  func (m *MessageCardEmbedPickerTime) Build() *MessageCardEmbedPickerTime {
   760  	return m
   761  }
   762  
   763  func (m *MessageCardEmbedPickerTime) Tag() string {
   764  	return "picker_time"
   765  }
   766  
   767  func (m *MessageCardEmbedPickerTime) MarshalJSON() ([]byte, error) {
   768  	return messageCardElementJson(m)
   769  }
   770  
   771  type MessageCardEmbedPickerDatetime struct {
   772  	*MessageCardEmbedDatePickerBase
   773  }
   774  
   775  func NewMessageCardEmbedPickerDatetime() *MessageCardEmbedPickerDatetime {
   776  	return &MessageCardEmbedPickerDatetime{}
   777  }
   778  
   779  func (m *MessageCardEmbedPickerDatetime) MessageCardEmbedPickerDatetime(base *MessageCardEmbedDatePickerBase) *MessageCardEmbedPickerDatetime {
   780  	m.MessageCardEmbedDatePickerBase = base
   781  	return m
   782  }
   783  func (m *MessageCardEmbedPickerDatetime) Build() *MessageCardEmbedPickerDatetime {
   784  	return m
   785  }
   786  func (m *MessageCardEmbedPickerDatetime) Tag() string {
   787  	return "picker_datetime"
   788  }
   789  
   790  func (m *MessageCardEmbedPickerDatetime) MarshalJSON() ([]byte, error) {
   791  	return messageCardElementJson(m)
   792  }
   793  
   794  type MessageCardEmbedSelectOption struct {
   795  	Text_     *MessageCardPlainText  `json:"text,omitempty"`
   796  	Value_    string                 `json:"value,omitempty"`
   797  	URL_      *string                `json:"url,omitempty"`
   798  	MultiURL_ *MessageCardURL        `json:"multi_url,omitempty"`
   799  	Type_     *MessageCardButtonType `json:"type,omitempty"`
   800  }
   801  
   802  func NewMessageCardEmbedSelectOption() *MessageCardEmbedSelectOption {
   803  	return &MessageCardEmbedSelectOption{}
   804  }
   805  
   806  func (m *MessageCardEmbedSelectOption) Text(text *MessageCardPlainText) *MessageCardEmbedSelectOption {
   807  	m.Text_ = text
   808  	return m
   809  }
   810  
   811  func (m *MessageCardEmbedSelectOption) Value(value string) *MessageCardEmbedSelectOption {
   812  	m.Value_ = value
   813  	return m
   814  }
   815  
   816  func (m *MessageCardEmbedSelectOption) URL(url string) *MessageCardEmbedSelectOption {
   817  	m.URL_ = &url
   818  	return m
   819  }
   820  
   821  func (m *MessageCardEmbedSelectOption) MultiUrl(multiUrl *MessageCardURL) *MessageCardEmbedSelectOption {
   822  	m.MultiURL_ = multiUrl
   823  	return m
   824  }
   825  
   826  func (m *MessageCardEmbedSelectOption) Type(type_ *MessageCardButtonType) *MessageCardEmbedSelectOption {
   827  	m.Type_ = type_
   828  	return m
   829  }
   830  
   831  func (m *MessageCardEmbedSelectOption) Build() *MessageCardEmbedSelectOption {
   832  	return m
   833  }
   834  
   835  type MessageCardEmbedOverflow struct {
   836  	Options_ []*MessageCardEmbedSelectOption `json:"options,omitempty"`
   837  	Value_   map[string]interface {
   838  	} `json:"value,omitempty"`
   839  	Confirm_ *MessageCardActionConfirm `json:"confirm,omitempty"`
   840  }
   841  
   842  func NewMessageCardEmbedOverflow() *MessageCardEmbedOverflow {
   843  	return &MessageCardEmbedOverflow{}
   844  }
   845  
   846  func (overFlow *MessageCardEmbedOverflow) Options(options []*MessageCardEmbedSelectOption) *MessageCardEmbedOverflow {
   847  	overFlow.Options_ = options
   848  	return overFlow
   849  }
   850  
   851  func (overFlow *MessageCardEmbedOverflow) Value(value map[string]interface{}) *MessageCardEmbedOverflow {
   852  	overFlow.Value_ = value
   853  	return overFlow
   854  }
   855  func (overFlow *MessageCardEmbedOverflow) Confirm(confirm *MessageCardActionConfirm) *MessageCardEmbedOverflow {
   856  	overFlow.Confirm_ = confirm
   857  	return overFlow
   858  }
   859  func (overFlow *MessageCardEmbedOverflow) Build() *MessageCardEmbedOverflow {
   860  	return overFlow
   861  }
   862  
   863  func (m *MessageCardEmbedOverflow) Tag() string {
   864  	return "overflow"
   865  }
   866  
   867  func (m *MessageCardEmbedOverflow) MarshalJSON() ([]byte, error) {
   868  	return messageCardElementJson(m)
   869  }
   870  
   871  func (m *MessageCardEmbedOverflow) IsAction() {
   872  }
   873  
   874  func (m *MessageCardEmbedOverflow) IsExtra() {
   875  }
   876  
   877  type MessageCardEmbedSelectMenuBase struct {
   878  	Placeholder_   *MessageCardPlainText           `json:"placeholder,omitempty"`
   879  	InitialOption_ string                          `json:"initial_option,omitempty"`
   880  	Options_       []*MessageCardEmbedSelectOption `json:"options,omitempty"`
   881  	Value_         map[string]interface {
   882  	} `json:"value,omitempty"`
   883  	Confirm_ *MessageCardActionConfirm `json:"confirm,omitempty"`
   884  }
   885  
   886  func NewMessageCardEmbedSelectMenuBase() *MessageCardEmbedSelectMenuBase {
   887  	return &MessageCardEmbedSelectMenuBase{}
   888  }
   889  
   890  func (selectMenu *MessageCardEmbedSelectMenuBase) Placeholder(placeholder *MessageCardPlainText) *MessageCardEmbedSelectMenuBase {
   891  	selectMenu.Placeholder_ = placeholder
   892  	return selectMenu
   893  }
   894  
   895  func (selectMenu *MessageCardEmbedSelectMenuBase) InitialOption(initialOption string) *MessageCardEmbedSelectMenuBase {
   896  	selectMenu.InitialOption_ = initialOption
   897  	return selectMenu
   898  }
   899  
   900  func (selectMenu *MessageCardEmbedSelectMenuBase) Options(options []*MessageCardEmbedSelectOption) *MessageCardEmbedSelectMenuBase {
   901  	selectMenu.Options_ = options
   902  	return selectMenu
   903  }
   904  
   905  func (selectMenu *MessageCardEmbedSelectMenuBase) Value(value map[string]interface{}) *MessageCardEmbedSelectMenuBase {
   906  	selectMenu.Value_ = value
   907  	return selectMenu
   908  }
   909  
   910  func (selectMenu *MessageCardEmbedSelectMenuBase) Confirm(confirm *MessageCardActionConfirm) *MessageCardEmbedSelectMenuBase {
   911  	selectMenu.Confirm_ = confirm
   912  	return selectMenu
   913  }
   914  
   915  func (selectMenu *MessageCardEmbedSelectMenuBase) Build() *MessageCardEmbedSelectMenuBase {
   916  	return selectMenu
   917  }
   918  
   919  func (m *MessageCardEmbedSelectMenuBase) IsAction() {
   920  }
   921  
   922  func (m *MessageCardEmbedSelectMenuBase) IsExtra() {
   923  }
   924  
   925  type MessageCardEmbedSelectMenuStatic struct {
   926  	*MessageCardEmbedSelectMenuBase
   927  }
   928  
   929  func NewMessageCardEmbedSelectMenuStatic() *MessageCardEmbedSelectMenuStatic {
   930  	return &MessageCardEmbedSelectMenuStatic{}
   931  }
   932  
   933  func (m *MessageCardEmbedSelectMenuStatic) MessageCardEmbedSelectMenuStatic(base *MessageCardEmbedSelectMenuBase) *MessageCardEmbedSelectMenuStatic {
   934  	m.MessageCardEmbedSelectMenuBase = base
   935  	return m
   936  }
   937  
   938  func (m *MessageCardEmbedSelectMenuStatic) Build() *MessageCardEmbedSelectMenuStatic {
   939  	return m
   940  }
   941  
   942  func (m *MessageCardEmbedSelectMenuStatic) Tag() string {
   943  	return "select_static"
   944  }
   945  
   946  func (m *MessageCardEmbedSelectMenuStatic) MarshalJSON() ([]byte, error) {
   947  	return messageCardElementJson(m)
   948  }
   949  
   950  type MessageCardEmbedSelectMenuPerson struct {
   951  	*MessageCardEmbedSelectMenuBase
   952  }
   953  
   954  func NewMessageCardEmbedSelectMenuPerson() *MessageCardEmbedSelectMenuPerson {
   955  	return &MessageCardEmbedSelectMenuPerson{}
   956  }
   957  
   958  func (menuPerson *MessageCardEmbedSelectMenuPerson) MessageCardEmbedSelectMenu(messageCardEmbedSelectMenuBase *MessageCardEmbedSelectMenuBase) *MessageCardEmbedSelectMenuPerson {
   959  	menuPerson.MessageCardEmbedSelectMenuBase = messageCardEmbedSelectMenuBase
   960  	return menuPerson
   961  }
   962  
   963  func (menuPerson *MessageCardEmbedSelectMenuPerson) Build(messageCardEmbedSelectMenuBase *MessageCardEmbedSelectMenuBase) *MessageCardEmbedSelectMenuPerson {
   964  	return menuPerson
   965  }
   966  
   967  func (m *MessageCardEmbedSelectMenuPerson) Tag() string {
   968  	return "select_person"
   969  }
   970  
   971  func (m *MessageCardEmbedSelectMenuPerson) MarshalJSON() ([]byte, error) {
   972  	return messageCardElementJson(m)
   973  }
   974  
   975  type MessageCardActionLayout string
   976  
   977  const (
   978  	MessageCardActionLayoutBisected   MessageCardActionLayout = "bisected"
   979  	MessageCardActionLayoutTrisection MessageCardActionLayout = "trisection"
   980  	MessageCardActionLayoutFlow       MessageCardActionLayout = "flow"
   981  )
   982  
   983  func (al MessageCardActionLayout) Ptr() *MessageCardActionLayout {
   984  	return &al
   985  }
   986  
   987  type MessageCardAction struct {
   988  	Actions_ []MessageCardActionElement `json:"actions,omitempty"`
   989  	Layout_  *MessageCardActionLayout   `json:"layout,omitempty"`
   990  }
   991  
   992  func NewMessageCardAction() *MessageCardAction {
   993  	return &MessageCardAction{}
   994  }
   995  
   996  func (cardAction *MessageCardAction) Actions(actions []MessageCardActionElement) *MessageCardAction {
   997  	cardAction.Actions_ = actions
   998  	return cardAction
   999  }
  1000  
  1001  func (cardAction *MessageCardAction) Layout(layout *MessageCardActionLayout) *MessageCardAction {
  1002  	cardAction.Layout_ = layout
  1003  	return cardAction
  1004  }
  1005  
  1006  func (cardAction *MessageCardAction) Build() *MessageCardAction {
  1007  	return cardAction
  1008  }
  1009  
  1010  func (m *MessageCardAction) Tag() string {
  1011  	return "action"
  1012  }
  1013  
  1014  func (m *MessageCardAction) MarshalJSON() ([]byte, error) {
  1015  	return messageCardElementJson(m)
  1016  }
  1017  
  1018  type MessageCardPlainTextI18n struct {
  1019  	ZhCN_ string `json:"zh_cn,omitempty"`
  1020  	EnUS_ string `json:"en_us,omitempty"`
  1021  	JaJP_ string `json:"ja_jp,omitempty"`
  1022  }
  1023  
  1024  func NewMessageCardPlainTextI18n() *MessageCardPlainTextI18n {
  1025  	return &MessageCardPlainTextI18n{}
  1026  }
  1027  
  1028  func (i18n *MessageCardPlainTextI18n) ZhCN(zhCn string) *MessageCardPlainTextI18n {
  1029  	i18n.ZhCN_ = zhCn
  1030  	return i18n
  1031  }
  1032  
  1033  func (i18n *MessageCardPlainTextI18n) EnUS(enUs string) *MessageCardPlainTextI18n {
  1034  	i18n.EnUS_ = enUs
  1035  	return i18n
  1036  }
  1037  
  1038  func (i18n *MessageCardPlainTextI18n) JaJP(jaJp string) *MessageCardPlainTextI18n {
  1039  	i18n.JaJP_ = jaJp
  1040  	return i18n
  1041  }
  1042  
  1043  func (i18n *MessageCardPlainTextI18n) Build() *MessageCardPlainTextI18n {
  1044  	return i18n
  1045  }
  1046  
  1047  type CardAction struct {
  1048  	*larkevent.EventReq
  1049  	OpenID        string `json:"open_id"`
  1050  	UserID        string `json:"user_id"`
  1051  	OpenMessageID string `json:"open_message_id"`
  1052  	TenantKey     string `json:"tenant_key"`
  1053  	Token         string `json:"token"`
  1054  	Timezone      string `json:"timezone"`
  1055  	Challenge     string `json:"challenge"`
  1056  	Type          string `json:"type"`
  1057  
  1058  	Action *struct {
  1059  		Value    map[string]interface{} `json:"value"`
  1060  		Tag      string                 `json:"tag"`
  1061  		Option   string                 `json:"option"`
  1062  		Timezone string                 `json:"timezone"`
  1063  	} `json:"action"`
  1064  }
  1065  
  1066  type cardChallenge struct {
  1067  	Challenge string `json:"challenge"`
  1068  	Token     string `json:"token"`
  1069  	Type      string `json:"type"`
  1070  }
  1071  type CustomResp struct {
  1072  	StatusCode int
  1073  	Body       map[string]interface{}
  1074  }
  1075  
  1076  type CustomToastBody struct {
  1077  	Content string `json:"content"`
  1078  	I18n    *I18n  `json:"i18n"`
  1079  }
  1080  
  1081  type I18n struct {
  1082  	ZhCn string `json:"zh_cn"`
  1083  	EnCn string `json:"en_us"`
  1084  	JaJp string `json:"ja_jp"`
  1085  }
  1086  
  1087  type CardActionBody struct {
  1088  	*CardAction
  1089  	Challenge string `json:"challenge"`
  1090  	Type      string `json:"type"`
  1091  }