Implemented 'delete' command.

Basic implementation for displaying a list of users.
This commit is contained in:
Jonathan Bernard 2010-12-06 07:28:01 -06:00
parent 0c3a11d567
commit 3b1d919c5a
4 changed files with 134 additions and 24 deletions

View File

@ -1,4 +1,4 @@
<project name="gritter" basedir="."> <project name="gritter" basedir="." default="ng-deploy">
<property file="project.properties"/> <property file="project.properties"/>
<import file="jdb-build-1.3.xml"/> <import file="jdb-build-1.3.xml"/>

View File

@ -39,14 +39,14 @@
*listuser*/*list id* *listuser*/*list id*
[X] *listName*, *isPublic*, *description* [X] *listName*, *isPublic*, *description*
[ ] delete/destroy/remove [X] delete/destroy/remove
[ ] status [X] status
[ ] *status_id* [X] *status_id*
[ ] list [X] list
[ ] member [X] member
[ ] *list id* || *list name*, *user id* [X] *list id* || *list name*, *user id*
[ ] subscription [X] subscription
[ ] *list id* [X] *list id*
[ ] follow [ ] follow
[ ] *user* [ ] *user*

View File

@ -1,7 +1,7 @@
#Thu, 11 Nov 2010 13:10:43 -0600 #Mon, 29 Nov 2010 15:37:58 -0600
lib.local=true lib.local=true
name=gritter name=gritter
version=0.1 version=0.1
build.number=140 build.number=143
linux.nailgun.classpath.dir=/home/jdbernard/programs/nailgun/classpath linux.nailgun.classpath.dir=/home/jdbernard/programs/nailgun/classpath
nailgun.classpath.dir=C\:/Documents and Settings/jbernard/My Documents/ng-classpath nailgun.classpath.dir=C\:/Documents and Settings/jbernard/My Documents/ng-classpath

View File

@ -159,7 +159,29 @@ public class TwitterCLI {
} }
public void delete(LinkedList args) { public void delete(LinkedList args) {
def option = args.poll()
log.debug("Processing a 'delete' command, option = {}.", option)
switch(option) {
case "status": deleteStatus(args); break
case "list": deleteList(args); break
default: args.addFirst(option)
deleteStatus(args)
}
}
public void deleteList(LinkedList args) {
def option = args.poll()
log.debig("Processing a 'delete list' command, option = {}.", option)
switch(option) {
case "member": deleteListMember(args); break
case "subscription": deleteListSubscription(args); break
default: args.addFirst(option)
doDeleteList(args)
}
} }
public void get(LinkedList args) { public void get(LinkedList args) {
@ -268,8 +290,10 @@ public class TwitterCLI {
return return
} }
printUserList(twitter.getUserListMembers( def userList = twitter.getUserListMembers(listRef.username,
listRef.username, listRef.listId, -1)) // TODO paging listRef.listId, -1)
printUserList(userList) // TODO paging
} }
public void showListSubscribers(LinkedList args) { public void showListSubscribers(LinkedList args) {
@ -377,6 +401,84 @@ public class TwitterCLI {
/* ======== WORKER FUNCTIONS ========*/ /* ======== WORKER FUNCTIONS ========*/
public void deleteListMember(LinkedList args) {
def listRef = args.poll()
def user = args.poll()
log.debug("Deleting a member from a list: list='{}', user='{}'",
listRef, user)
if (!user) {
println color("delete list member", colors.option) +
color(" requires two parameters: ", colors.error) +
"gritter delete list member <list-ref> <user>"
return
}
// parse the list reference
listRef = parseListReference(listRef)
// look up the user id if neccessary
if (user.isLong()) user = user as long
else user = twitter.showUser(user).id
twitter.deleteUserListMember(listRef.listId, user)
}
public void deleteListSubscribtion(LinkedList args) {
def listRef = args.poll()
log.debug("Unsubscribing from a list: listRef='{}', user='{}'",
listRef, user)
if (!listRef) {
println color("delete list subscription", colors.option) +
color(" requires a list reference: ", colors.error) +
"gritter delete list subscription <list-ref>"
return
}
// parse the list reference
listRef = parseListReference(listRef)
twitter.unsubscribeUserList(listRef.username, listRef.listId)
}
public void doDeleteList(LinkedList args) {
def listRef = args.poll()
log.debug("Destroying a list: listRef='{}'", listRef)
if (!listRef) {
println color("destroy list", colors.option) +
color(" requries a list reference: ", colors.error) +
"gritter destroy list <list-ref>"
return
}
// parse the list reference
listRef = parseListReference(listRef)
twitter.destroyUserList(listRef.listId)
}
public void deleteStatus(LinkedList args) {
def statusId = args.poll()
log.debug("Destroying a status: id='{}'", statusId)
if (!statusId || !statusId.isLong()) {
println color("destroy status", colors.option) +
color(" requires a status id: ", colors.error) +
"gritter delete status <status-id>"
return
}
statusId = statusId as long
twitter.destroyStatus(statusId)
}
public void printLists(def lists) { public void printLists(def lists) {
int colSize = 0 int colSize = 0
@ -386,11 +488,11 @@ public class TwitterCLI {
list.slug.length() + list.id.toString().length() + 3 list.slug.length() + list.id.toString().length() + 3
colSize = Math.max(colSize, curColSize) colSize = Math.max(colSize, curColSize)
println colSize //println colSize //TODO, fix column alignment
} }
lists.each { list -> lists.each { list ->
println colSize //println colSize
def col1 = color("@${list.user.screenName}", colors.author) + "/" + def col1 = color("@${list.user.screenName}", colors.author) + "/" +
color("${list.slug} (${list.id})", colors.option) color("${list.slug} (${list.id})", colors.option)
@ -399,7 +501,18 @@ public class TwitterCLI {
println wrapToWidth(list.description, terminalWidth, println wrapToWidth(list.description, terminalWidth,
"".padLeft(8), "") "".padLeft(8), "")
println col1.length() //println col1.length()
}
}
public void printUserList(def users) {
int colSize = 0
colSize = users.inject(0) {
curMax, user -> Math.max(curMax, user.id.toString().length()) }
users.each { user ->
println "${user.id.toString().padLeft(colSize)} - " +
color(user.screenName, colors.author) + ": ${user.name}"
} }
} }
@ -474,10 +587,9 @@ public class TwitterCLI {
public void addListMember(LinkedList args) { public void addListMember(LinkedList args) {
def listRef = args.poll() def listRef = args.poll()
def user = args.poll() def user = args.poll()
def list
log.debug("Adding a member to a list: list='{}', user='{}'", log.debug("Adding a member to a list: list='{}', user='{}'",
list, user) listRef, user)
if (!user) { if (!user) {
println color("add list member", colors.option) + println color("add list member", colors.option) +
@ -486,21 +598,19 @@ public class TwitterCLI {
return return
} }
// look up the list id if neccessary if (!listRef) {
if (listRef.isInteger()) listRef = listRef as int
else list = findListByName(twitter.screenName, listRef)
if (!list) {
println color("No list found that matches the given description: ", println color("No list found that matches the given description: ",
colors.error) + color(listRef, colors.option) colors.error) + color(listRef, colors.option)
return return
} }
listRef = parseListReference(listRef)
// look up the user id if neccessary // look up the user id if neccessary
if (user.isLong()) user = user as long if (user.isLong()) user = user as long
else user = twitter.showUser(user).id else user = twitter.showUser(user).id
twitter.addUserListMember(list, user) twitter.addUserListMember(listRef.ListId, user)
} }