github.com/Files-com/files-sdk-go/v2@v2.1.2/message.go (about)

     1  package files_sdk
     2  
     3  import (
     4  	"encoding/json"
     5  
     6  	lib "github.com/Files-com/files-sdk-go/v2/lib"
     7  )
     8  
     9  type Message struct {
    10  	Id        int64    `json:"id,omitempty" path:"id,omitempty" url:"id,omitempty"`
    11  	Subject   string   `json:"subject,omitempty" path:"subject,omitempty" url:"subject,omitempty"`
    12  	Body      string   `json:"body,omitempty" path:"body,omitempty" url:"body,omitempty"`
    13  	Comments  []string `json:"comments,omitempty" path:"comments,omitempty" url:"comments,omitempty"`
    14  	UserId    int64    `json:"user_id,omitempty" path:"user_id,omitempty" url:"user_id,omitempty"`
    15  	ProjectId int64    `json:"project_id,omitempty" path:"project_id,omitempty" url:"project_id,omitempty"`
    16  }
    17  
    18  func (m Message) Identifier() interface{} {
    19  	return m.Id
    20  }
    21  
    22  type MessageCollection []Message
    23  
    24  type MessageListParams struct {
    25  	UserId    int64 `url:"user_id,omitempty" required:"false" json:"user_id,omitempty" path:"user_id"`
    26  	ProjectId int64 `url:"project_id,omitempty" required:"true" json:"project_id,omitempty" path:"project_id"`
    27  	ListParams
    28  }
    29  
    30  type MessageFindParams struct {
    31  	Id int64 `url:"-,omitempty" required:"false" json:"-,omitempty" path:"id"`
    32  }
    33  
    34  type MessageCreateParams struct {
    35  	UserId    int64  `url:"user_id,omitempty" required:"false" json:"user_id,omitempty" path:"user_id"`
    36  	ProjectId int64  `url:"project_id,omitempty" required:"true" json:"project_id,omitempty" path:"project_id"`
    37  	Subject   string `url:"subject,omitempty" required:"true" json:"subject,omitempty" path:"subject"`
    38  	Body      string `url:"body,omitempty" required:"true" json:"body,omitempty" path:"body"`
    39  }
    40  
    41  type MessageUpdateParams struct {
    42  	Id        int64  `url:"-,omitempty" required:"false" json:"-,omitempty" path:"id"`
    43  	ProjectId int64  `url:"project_id,omitempty" required:"true" json:"project_id,omitempty" path:"project_id"`
    44  	Subject   string `url:"subject,omitempty" required:"true" json:"subject,omitempty" path:"subject"`
    45  	Body      string `url:"body,omitempty" required:"true" json:"body,omitempty" path:"body"`
    46  }
    47  
    48  type MessageDeleteParams struct {
    49  	Id int64 `url:"-,omitempty" required:"false" json:"-,omitempty" path:"id"`
    50  }
    51  
    52  func (m *Message) UnmarshalJSON(data []byte) error {
    53  	type message Message
    54  	var v message
    55  	if err := json.Unmarshal(data, &v); err != nil {
    56  		return lib.ErrorWithOriginalResponse{}.ProcessError(data, err, map[string]interface{}{})
    57  	}
    58  
    59  	*m = Message(v)
    60  	return nil
    61  }
    62  
    63  func (m *MessageCollection) UnmarshalJSON(data []byte) error {
    64  	type messages MessageCollection
    65  	var v messages
    66  	if err := json.Unmarshal(data, &v); err != nil {
    67  		return lib.ErrorWithOriginalResponse{}.ProcessError(data, err, []map[string]interface{}{})
    68  	}
    69  
    70  	*m = MessageCollection(v)
    71  	return nil
    72  }
    73  
    74  func (m *MessageCollection) ToSlice() *[]interface{} {
    75  	ret := make([]interface{}, len(*m))
    76  	for i, v := range *m {
    77  		ret[i] = v
    78  	}
    79  
    80  	return &ret
    81  }