@@ -12,30 +12,30 @@ import (
1212 "strings"
1313 "time"
1414
15+ "github.com/larksuite/cli/errs"
1516 "github.com/larksuite/cli/internal/validate"
1617 "github.com/larksuite/cli/shortcuts/common"
17- larkcore "github.com/larksuite/oapi-sdk-go/v3/core"
1818)
1919
2020// parseTimeRange parses a "YYYY-MM--YYYY-MM" string into two time.Time values.
2121// The start is the first moment of the start month; the end is the last moment of the end month.
2222func parseTimeRange (s string ) (start , end time.Time , err error ) {
2323 parts := strings .SplitN (s , "--" , 2 )
2424 if len (parts ) != 2 {
25- return time.Time {}, time.Time {}, fmt . Errorf ( "invalid time-range format %q, expected YYYY-MM--YYYY-MM" , s )
25+ return time.Time {}, time.Time {}, errs . NewValidationError ( errs . SubtypeInvalidArgument , "invalid -- time-range format %q, expected YYYY-MM--YYYY-MM" , s ). WithParam ( "--time-range" )
2626 }
2727 start , err = time .Parse ("2006-01" , strings .TrimSpace (parts [0 ]))
2828 if err != nil {
29- return time.Time {}, time.Time {}, fmt . Errorf ( "invalid start month %q: %w " , parts [0 ], err )
29+ return time.Time {}, time.Time {}, errs . NewValidationError ( errs . SubtypeInvalidArgument , "invalid --time-range start month %q: %v " , parts [0 ], err ). WithParam ( "--time-range" ). WithCause ( err )
3030 }
3131 end , err = time .Parse ("2006-01" , strings .TrimSpace (parts [1 ]))
3232 if err != nil {
33- return time.Time {}, time.Time {}, fmt . Errorf ( "invalid end month %q: %w " , parts [1 ], err )
33+ return time.Time {}, time.Time {}, errs . NewValidationError ( errs . SubtypeInvalidArgument , "invalid --time-range end month %q: %v " , parts [1 ], err ). WithParam ( "--time-range" ). WithCause ( err )
3434 }
3535 // end is the last moment of the end month
3636 end = end .AddDate (0 , 1 , 0 ).Add (- time .Millisecond )
3737 if start .After (end ) {
38- return time.Time {}, time.Time {}, fmt . Errorf ( " start month %s is after end month %s" , parts [0 ], parts [1 ])
38+ return time.Time {}, time.Time {}, errs . NewValidationError ( errs . SubtypeInvalidArgument , "invalid --time-range: start month %s is after end month %s" , parts [0 ], parts [1 ]). WithParam ( "--time-range" )
3939 }
4040 return start , end , nil
4141}
@@ -69,7 +69,7 @@ var OKRListCycles = common.Shortcut{
6969 Validate : func (ctx context.Context , runtime * common.RuntimeContext ) error {
7070 idType := runtime .Str ("user-id-type" )
7171 if idType != "open_id" && idType != "union_id" && idType != "user_id" {
72- return common . FlagErrorf ( "--user-id-type must be one of: open_id | union_id | user_id" )
72+ return errs . NewValidationError ( errs . SubtypeInvalidArgument , "--user-id-type must be one of: open_id | union_id | user_id" ). WithParam ( "--user-id-type " )
7373 }
7474 userID := runtime .Str ("user-id" )
7575 if err := validate .RejectControlChars (userID , "user-id" ); err != nil {
@@ -82,7 +82,7 @@ var OKRListCycles = common.Shortcut{
8282 return err
8383 }
8484 if _ , _ , err := parseTimeRange (tr ); err != nil {
85- return common . FlagErrorf ( "--time-range: %s" , err )
85+ return err
8686 }
8787 }
8888 return nil
@@ -110,16 +110,17 @@ var OKRListCycles = common.Shortcut{
110110 var err error
111111 rangeStart , rangeEnd , err = parseTimeRange (timeRange )
112112 if err != nil {
113- return common . FlagErrorf ( "--time-range: %s" , err )
113+ return err
114114 }
115115 hasRange = true
116116 }
117117
118118 // Paginated fetch of all cycles
119- queryParams := make (larkcore.QueryParams )
120- queryParams .Set ("user_id" , userID )
121- queryParams .Set ("user_id_type" , userIDType )
122- queryParams .Set ("page_size" , "100" )
119+ queryParams := map [string ]interface {}{
120+ "user_id" : userID ,
121+ "user_id_type" : userIDType ,
122+ "page_size" : "100" ,
123+ }
123124
124125 var allCycles []Cycle
125126 page := 0
@@ -136,7 +137,7 @@ var OKRListCycles = common.Shortcut{
136137 }
137138 page ++
138139
139- data , err := runtime .DoAPIJSON ("GET" , "/open-apis/okr/v2/cycles" , queryParams , nil )
140+ data , err := runtime .CallAPITyped ("GET" , "/open-apis/okr/v2/cycles" , queryParams , nil )
140141 if err != nil {
141142 return err
142143 }
@@ -158,7 +159,7 @@ var OKRListCycles = common.Shortcut{
158159 if ! hasMore || pageToken == "" {
159160 break
160161 }
161- queryParams . Set ( "page_token" , pageToken )
162+ queryParams [ "page_token" ] = pageToken
162163 }
163164
164165 // Filter by time-range overlap
0 commit comments