✨ Support more flags when list members

This commit is contained in:
OpenWaygate committed 2024-05-13 23:45:59 +08:00
1 parent 53aeed3421
commit ca23e1595c
3 files changed
+51 -4

No files matched your search

+15
View File
@@ -12,6 +12,9 @@ var listCmd = &cobra.Command{
Run: func(cmd *cobra.Command, args []string) {
m := yutuber.NewMember(
yutuber.WithMemberChannelId(memberChannelId),
yutuber.WithMemberHasAccessToLevel(hasAccessToLevel),
yutuber.WithMemberMaxResults(maxResults),
yutuber.WithMemberMode(mode),
)
m.List(parts, output)
},
@@ -24,6 +27,18 @@ func init() {
&memberChannelId, "memberChannelId", "c", "",
"Comma separated list of channel IDs. Only data about members that are part of this list will be included",
)
listCmd.Flags().StringVarP(
&hasAccessToLevel, "hasAccessToLevel", "a", "",
"Filter members in the results set to the ones that have access to a level",
)
listCmd.Flags().Int64VarP(
&maxResults, "maxResults", "m", 5,
"Specifies the maximum number of items that should be returned",
)
listCmd.Flags().StringVarP(
&mode, "mode", "o", "",
"listMembersModeUnknown, updates or all_current(default)",
)
listCmd.Flags().StringSliceVarP(
&parts, "parts", "p", []string{"snippet"}, "Comma separated parts",
)
+6 -3
View File
@@ -6,9 +6,12 @@ import (
)
var (
memberChannelId string
parts []string
output string
memberChannelId string
hasAccessToLevel string
maxResults int64
mode string
parts []string
output string
)
var memberCmd = &cobra.Command{
+30 -1
View File
@@ -14,7 +14,10 @@ var (
)
type member struct {
memberChannelId string
memberChannelId string
hasAccessToLevel string
maxResults int64
mode string
}
type Member interface {
@@ -40,6 +43,14 @@ func (m *member) get(parts []string) []*youtube.Member {
if m.memberChannelId != "" {
call = call.FilterByMemberChannelId(m.memberChannelId)
}
if m.hasAccessToLevel != "" {
call = call.HasAccessToLevel(m.hasAccessToLevel)
}
call = call.MaxResults(m.maxResults)
if m.mode != "" {
call = call.Mode(m.mode)
}
response, err := call.Do()
if err != nil {
log.Fatalln(errors.Join(errGetMember, err))
@@ -72,3 +83,21 @@ func WithMemberChannelId(channelId string) MemberOption {
m.memberChannelId = channelId
}
}
func WithMemberHasAccessToLevel(level string) MemberOption {
return func(m *member) {
m.hasAccessToLevel = level
}
}
func WithMemberMaxResults(results int64) MemberOption {
return func(m *member) {
m.maxResults = results
}
}
func WithMemberMode(mode string) MemberOption {
return func(m *member) {
m.mode = mode
}
}