cmd/accounts.go
changeset 20 b0ccc09f07a2
parent 16 8939959991b3
child 22 5778b09bc6fe
--- a/cmd/accounts.go	Fri Apr 28 13:31:40 2017 +0200
+++ b/cmd/accounts.go	Fri Apr 28 15:39:32 2017 +0200
@@ -238,6 +238,7 @@
 // accountSubcommandsRunE is a generic function for status subcommands
 func accountSubcommandsRunE(subcmd string, args []string) error {
 	opt := accountsOpts
+	var limOpts *madon.LimitParams
 
 	if opt.accountUID != "" {
 		if opt.accountID > 0 {
@@ -249,7 +250,7 @@
 		if err := madonInit(true); err != nil {
 			return err
 		}
-		accList, err := gClient.SearchAccounts(opt.accountUID, 2)
+		accList, err := gClient.SearchAccounts(opt.accountUID, &madon.LimitParams{Limit: 2})
 		if err != nil || len(accList) < 1 {
 			errPrint("Cannot find user '%s': %v", opt.accountUID, err)
 			os.Exit(1)
@@ -325,6 +326,13 @@
 		}
 	}
 
+	if opt.limit > 0 {
+		if limOpts == nil {
+			limOpts = new(madon.LimitParams)
+		}
+		limOpts.Limit = int(opt.limit)
+	}
+
 	// All account subcommands need to have signed in
 	if err := madonInit(true); err != nil {
 		return err
@@ -344,26 +352,26 @@
 		obj = account
 	case "search":
 		var accountList []madon.Account
-		accountList, err = gClient.SearchAccounts(strings.Join(args, " "), int(opt.limit))
+		accountList, err = gClient.SearchAccounts(strings.Join(args, " "), limOpts)
 		obj = accountList
 	case "followers":
 		var accountList []madon.Account
-		accountList, err = gClient.GetAccountFollowers(opt.accountID)
-		if opt.limit > 0 {
+		accountList, err = gClient.GetAccountFollowers(opt.accountID, limOpts)
+		if opt.limit > 0 && len(accountList) > int(opt.limit) {
 			accountList = accountList[:opt.limit]
 		}
 		obj = accountList
 	case "following":
 		var accountList []madon.Account
-		accountList, err = gClient.GetAccountFollowing(opt.accountID)
-		if opt.limit > 0 {
+		accountList, err = gClient.GetAccountFollowing(opt.accountID, limOpts)
+		if opt.limit > 0 && len(accountList) > int(opt.limit) {
 			accountList = accountList[:opt.limit]
 		}
 		obj = accountList
 	case "statuses":
 		var statusList []madon.Status
-		statusList, err = gClient.GetAccountStatuses(opt.accountID, opt.onlyMedia, opt.excludeReplies)
-		if opt.limit > 0 {
+		statusList, err = gClient.GetAccountStatuses(opt.accountID, opt.onlyMedia, opt.excludeReplies, limOpts)
+		if opt.limit > 0 && len(statusList) > int(opt.limit) {
 			statusList = statusList[:opt.limit]
 		}
 		obj = statusList
@@ -382,8 +390,8 @@
 	case "follow-requests":
 		if opt.list {
 			var followRequests []madon.Account
-			followRequests, err = gClient.GetAccountFollowRequests()
-			if opt.limit > 0 {
+			followRequests, err = gClient.GetAccountFollowRequests(limOpts)
+			if opt.limit > 0 && len(followRequests) > int(opt.limit) {
 				followRequests = followRequests[:opt.limit]
 			}
 			obj = followRequests
@@ -404,22 +412,22 @@
 		}
 	case "favourites":
 		var statusList []madon.Status
-		statusList, err = gClient.GetFavourites()
-		if opt.limit > 0 {
+		statusList, err = gClient.GetFavourites(limOpts)
+		if opt.limit > 0 && len(statusList) > int(opt.limit) {
 			statusList = statusList[:opt.limit]
 		}
 		obj = statusList
 	case "blocks":
 		var accountList []madon.Account
-		accountList, err = gClient.GetBlockedAccounts()
-		if opt.limit > 0 {
+		accountList, err = gClient.GetBlockedAccounts(limOpts)
+		if opt.limit > 0 && len(accountList) > int(opt.limit) {
 			accountList = accountList[:opt.limit]
 		}
 		obj = accountList
 	case "mutes":
 		var accountList []madon.Account
-		accountList, err = gClient.GetMutedAccounts()
-		if opt.limit > 0 {
+		accountList, err = gClient.GetMutedAccounts(limOpts)
+		if opt.limit > 0 && len(accountList) > int(opt.limit) {
 			accountList = accountList[:opt.limit]
 		}
 		obj = accountList
@@ -441,8 +449,8 @@
 	case "reports":
 		if opt.list {
 			var reports []madon.Report
-			reports, err = gClient.GetReports()
-			if opt.limit > 0 {
+			reports, err = gClient.GetReports(limOpts)
+			if opt.limit > 0 && len(reports) > int(opt.limit) {
 				reports = reports[:opt.limit]
 			}
 			obj = reports