feat(ThreadMember): implement Member field (#1325)
* Add Member field to TreadMember * Add query params to ThreadMember and ThreadMembers * Add json tag * docs: add periods * fix: gofmt * docs: document withMember parameter * docs(Session.ThreadMember): rephrase description of withMember parameter --------- Co-authored-by: Fedor Lapshin <fe.lap.prog@gmail.com>
This commit is contained in:
parent
f7800efc52
commit
d2fd4c5587
2 changed files with 41 additions and 6 deletions
43
restapi.go
43
restapi.go
|
@ -2711,11 +2711,22 @@ func (s *Session) ThreadMemberRemove(threadID, memberID string, options ...Reque
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// ThreadMember returns thread member object for the specified member of a thread
|
// ThreadMember returns thread member object for the specified member of a thread.
|
||||||
func (s *Session) ThreadMember(threadID, memberID string, options ...RequestOption) (member *ThreadMember, err error) {
|
// withMember : Whether to include a guild member object.
|
||||||
endpoint := EndpointThreadMember(threadID, memberID)
|
func (s *Session) ThreadMember(threadID, memberID string, withMember bool, options ...RequestOption) (member *ThreadMember, err error) {
|
||||||
|
uri := EndpointThreadMember(threadID, memberID)
|
||||||
|
|
||||||
|
queryParams := url.Values{}
|
||||||
|
if withMember {
|
||||||
|
queryParams.Set("with_member", "true")
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(queryParams) > 0 {
|
||||||
|
uri += "?" + queryParams.Encode()
|
||||||
|
}
|
||||||
|
|
||||||
var body []byte
|
var body []byte
|
||||||
body, err = s.RequestWithBucketID("GET", endpoint, nil, endpoint, options...)
|
body, err = s.RequestWithBucketID("GET", uri, nil, uri, options...)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
|
@ -2726,9 +2737,29 @@ func (s *Session) ThreadMember(threadID, memberID string, options ...RequestOpti
|
||||||
}
|
}
|
||||||
|
|
||||||
// ThreadMembers returns all members of specified thread.
|
// ThreadMembers returns all members of specified thread.
|
||||||
func (s *Session) ThreadMembers(threadID string, options ...RequestOption) (members []*ThreadMember, err error) {
|
// limit : Max number of thread members to return (1-100). Defaults to 100.
|
||||||
|
// afterID : Get thread members after this user ID.
|
||||||
|
// withMember : Whether to include a guild member object for each thread member.
|
||||||
|
func (s *Session) ThreadMembers(threadID string, limit int, withMember bool, afterID string, options ...RequestOption) (members []*ThreadMember, err error) {
|
||||||
|
uri := EndpointThreadMembers(threadID)
|
||||||
|
|
||||||
|
queryParams := url.Values{}
|
||||||
|
if withMember {
|
||||||
|
queryParams.Set("with_member", "true")
|
||||||
|
}
|
||||||
|
if limit > 0 {
|
||||||
|
queryParams.Set("limit", strconv.Itoa(limit))
|
||||||
|
}
|
||||||
|
if afterID != "" {
|
||||||
|
queryParams.Set("after", afterID)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(queryParams) > 0 {
|
||||||
|
uri += "?" + queryParams.Encode()
|
||||||
|
}
|
||||||
|
|
||||||
var body []byte
|
var body []byte
|
||||||
body, err = s.RequestWithBucketID("GET", EndpointThreadMembers(threadID), nil, EndpointThreadMembers(threadID), options...)
|
body, err = s.RequestWithBucketID("GET", uri, nil, uri, options...)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
|
|
|
@ -531,6 +531,10 @@ type ThreadMember struct {
|
||||||
JoinTimestamp time.Time `json:"join_timestamp"`
|
JoinTimestamp time.Time `json:"join_timestamp"`
|
||||||
// Any user-thread settings, currently only used for notifications
|
// Any user-thread settings, currently only used for notifications
|
||||||
Flags int `json:"flags"`
|
Flags int `json:"flags"`
|
||||||
|
// Additional information about the user.
|
||||||
|
// NOTE: only present if the withMember parameter is set to true
|
||||||
|
// when calling Session.ThreadMembers or Session.ThreadMember.
|
||||||
|
Member *Member `json:"member,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ThreadsList represents a list of threads alongisde with thread member objects for the current user.
|
// ThreadsList represents a list of threads alongisde with thread member objects for the current user.
|
||||||
|
|
Loading…
Reference in a new issue