✨ Support more flags when list members
This commit is contained in:
1 parent
53aeed3421
commit
ca23e1595c
3 files changed
+51
-4
No files matched your search
@@ -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,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
@@ -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
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user