Julien Laffaye 13 年之前
父节点
当前提交
acaf7edcbc
共有 3 个文件被更改,包括 95 次插入88 次删除
  1. 2 2
      client_test.go
  2. 6 6
      parse_test.go
  3. 87 80
      status.go

+ 2 - 2
client_test.go

@@ -8,7 +8,7 @@ import (
 
 const (
 	testData = "Just some text"
-	testDir = "mydir"
+	testDir  = "mydir"
 )
 
 func TestConn(t *testing.T) {
@@ -76,7 +76,7 @@ func TestConn(t *testing.T) {
 	if err != nil {
 		t.Error(err)
 	} else {
-		if dir != "/" + testDir {
+		if dir != "/"+testDir {
 			t.Error("Wrong dir: " + dir)
 		}
 	}

+ 6 - 6
parse_test.go

@@ -3,13 +3,13 @@ package ftp
 import "testing"
 
 type line struct {
-	line string
-	name string
-	size uint64
+	line      string
+	name      string
+	size      uint64
 	entryType EntryType
 }
 
-var listTests = []line {
+var listTests = []line{
 	// UNIX ls -l style
 	line{"drwxr-xr-x    3 110      1002            3 Dec 02  2009 pub", "pub", 0, EntryTypeFolder},
 	line{"drwxr-xr-x    3 110      1002            3 Dec 02  2009 p u b", "p u b", 0, EntryTypeFolder},
@@ -23,7 +23,7 @@ var listTests = []line {
 }
 
 // Not supported, at least we should properly return failure
-var listTestsFail = []line {
+var listTestsFail = []line{
 	line{"d [R----F--] supervisor            512       Jan 16 18:53 login", "login", 0, EntryTypeFolder},
 	line{"- [R----F--] rhesus             214059       Oct 20 15:27 cx.exe", "cx.exe", 0, EntryTypeFile},
 }
@@ -39,7 +39,7 @@ func TestParseListLine(t *testing.T) {
 			t.Errorf("parseListLine(%v).Name = '%v', want '%v'", lt.line, entry.Name, lt.name)
 		}
 		if entry.Type != lt.entryType {
-			t.Errorf("parseListLine(%v).EntryType = %v, want %v", lt.line, entry.Type, lt.entryType,)
+			t.Errorf("parseListLine(%v).EntryType = %v, want %v", lt.line, entry.Type, lt.entryType)
 		}
 		if entry.Size != lt.size {
 			t.Errorf("parseListLine(%v).Size = %v, want %v", lt.line, entry.Size, lt.size)

+ 87 - 80
status.go

@@ -2,102 +2,109 @@ package ftp
 
 const (
 	// Positive Preliminary reply
-	StatusInitiating = 100
+	StatusInitiating    = 100
 	StatusRestartMarker = 110
-	StatusReadyMinute = 120
-	StatusAlreadyOpen = 125
-	StatusAboutToSend = 150
+	StatusReadyMinute   = 120
+	StatusAlreadyOpen   = 125
+	StatusAboutToSend   = 150
+
 	// Positive Completion reply
-	StatusCommandOK = 200
+	StatusCommandOK             = 200
 	StatusCommandNotImplemented = 202
-	StatusSystem = 211
-	StatusDirectory = 212
-	StatusFile = 213
-	StatusHelp = 214
-	StatusName = 215
-	StatusReady = 220
-	StatusClosing = 221
-	StatusDataConnectionOpen = 225
+	StatusSystem                = 211
+	StatusDirectory             = 212
+	StatusFile                  = 213
+	StatusHelp                  = 214
+	StatusName                  = 215
+	StatusReady                 = 220
+	StatusClosing               = 221
+	StatusDataConnectionOpen    = 225
 	StatusClosingDataConnection = 226
-	StatusPassiveMode = 227
-	StatusLongPassiveMode = 228
-	StatusExtendedPassiveMode = 229
-	StatusLoggedIn = 230
-	StatusLoggedOut = 231
-	StatusLogoutAck = 232
+	StatusPassiveMode           = 227
+	StatusLongPassiveMode       = 228
+	StatusExtendedPassiveMode   = 229
+	StatusLoggedIn              = 230
+	StatusLoggedOut             = 231
+	StatusLogoutAck             = 232
 	StatusRequestedFileActionOK = 250
-	StatusPathCreated = 257
+	StatusPathCreated           = 257
+
 	// Positive Intermediate reply
-	StatusUserOK = 331
-	StatusLoginNeedAccount = 332
+	StatusUserOK             = 331
+	StatusLoginNeedAccount   = 332
 	StatusRequestFilePending = 350
+
 	// Transient Negative Completion reply
-	StatusNotAvailable = 421
+	StatusNotAvailable             = 421
 	StatusCanNotOpenDataConnection = 425
-	StatusTransfertAborted = 426
-	StatusInvalidCredentials = 430
-	StatusHostUnavailable = 434
-	StatusFileActionIgnored = 450
-	StatusActionAborted = 451
-	Status452 = 452
+	StatusTransfertAborted         = 426
+	StatusInvalidCredentials       = 430
+	StatusHostUnavailable          = 434
+	StatusFileActionIgnored        = 450
+	StatusActionAborted            = 451
+	Status452                      = 452
+
 	// Permanent Negative Completion reply
-	StatusBadCommand = 500
-	StatusBadArguments = 501
-	StatusNotImplemented = 502
-	StatusBadSequence = 503
+	StatusBadCommand              = 500
+	StatusBadArguments            = 501
+	StatusNotImplemented          = 502
+	StatusBadSequence             = 503
 	StatusNotImplementedParameter = 504
-	StatusNotLoggedIn = 530
-	StatusStorNeedAccount = 532
-	StatusFileUnavailable = 550
-	StatusPageTypeUnknown = 551
-	StatusExceededStorage = 552
-	StatusBadFileName = 553
+	StatusNotLoggedIn             = 530
+	StatusStorNeedAccount         = 532
+	StatusFileUnavailable         = 550
+	StatusPageTypeUnknown         = 551
+	StatusExceededStorage         = 552
+	StatusBadFileName             = 553
 )
 
 var statusText = map[int]string{
 	// 200
-	StatusCommandOK:		"Command okay.",
-	StatusCommandNotImplemented:	"Command not implemented, superfluous at this site.",
-	StatusSystem:			"System status, or system help reply.",
-	StatusDirectory:		"Directory status.",
-	StatusFile:			"File status.",
-	StatusHelp:			"Help message.",
-	StatusName:			"",
-	StatusReady:			"Service ready for new user.",
-	StatusClosing:			"Service closing control connection.",
-	StatusDataConnectionOpen:	"Data connection open; no transfer in progress.",
-	StatusClosingDataConnection:	"Closing data connection. Requested file action successful.",
-	StatusPassiveMode:		"Entering Passive Mode.",
-	StatusLongPassiveMode:		"Entering Long Passive Mode.",
-	StatusExtendedPassiveMode:	"Entering Extended Passive Mode.",
-	StatusLoggedIn:			"User logged in, proceed.",
-	StatusLoggedOut:		"User logged out; service terminated.",
-	StatusLogoutAck:		"Logout command noted, will complete when transfer done.",
-	StatusRequestedFileActionOK:	"Requested file action okay, completed.",
-	StatusPathCreated:		"Path created.",
+	StatusCommandOK:             "Command okay.",
+	StatusCommandNotImplemented: "Command not implemented, superfluous at this site.",
+	StatusSystem:                "System status, or system help reply.",
+	StatusDirectory:             "Directory status.",
+	StatusFile:                  "File status.",
+	StatusHelp:                  "Help message.",
+	StatusName:                  "",
+	StatusReady:                 "Service ready for new user.",
+	StatusClosing:               "Service closing control connection.",
+	StatusDataConnectionOpen:    "Data connection open; no transfer in progress.",
+	StatusClosingDataConnection: "Closing data connection. Requested file action successful.",
+	StatusPassiveMode:           "Entering Passive Mode.",
+	StatusLongPassiveMode:       "Entering Long Passive Mode.",
+	StatusExtendedPassiveMode:   "Entering Extended Passive Mode.",
+	StatusLoggedIn:              "User logged in, proceed.",
+	StatusLoggedOut:             "User logged out; service terminated.",
+	StatusLogoutAck:             "Logout command noted, will complete when transfer done.",
+	StatusRequestedFileActionOK: "Requested file action okay, completed.",
+	StatusPathCreated:           "Path created.",
+
 	// 300
-	StatusUserOK:			"User name okay, need password.",
-	StatusLoginNeedAccount:		"Need account for login.",
-	StatusRequestFilePending:	"Requested file action pending further information.",
+	StatusUserOK:             "User name okay, need password.",
+	StatusLoginNeedAccount:   "Need account for login.",
+	StatusRequestFilePending: "Requested file action pending further information.",
+
 	// 400
-	StatusNotAvailable:		"Service not available, closing control connection.",
-	StatusCanNotOpenDataConnection:	"Can't open data connection.",
-	StatusTransfertAborted:		"Connection closed; transfer aborted.",
-	StatusInvalidCredentials:	"Invalid username or password.",
-	StatusHostUnavailable:		"Requested host unavailable.",
-	StatusFileActionIgnored:	"Requested file action not taken.",
-	StatusActionAborted:		"Requested action aborted. Local error in processing.",
-	Status452:			"Insufficient storage space in system.",
+	StatusNotAvailable:             "Service not available, closing control connection.",
+	StatusCanNotOpenDataConnection: "Can't open data connection.",
+	StatusTransfertAborted:         "Connection closed; transfer aborted.",
+	StatusInvalidCredentials:       "Invalid username or password.",
+	StatusHostUnavailable:          "Requested host unavailable.",
+	StatusFileActionIgnored:        "Requested file action not taken.",
+	StatusActionAborted:            "Requested action aborted. Local error in processing.",
+	Status452:                      "Insufficient storage space in system.",
+
 	// 500
-	StatusBadCommand:		"Command unrecognized.",
-	StatusBadArguments:		"Syntax error in parameters or arguments.",
-	StatusNotImplemented:		"Command not implemented.",
-	StatusBadSequence:		"Bad sequence of commands.",
-	StatusNotImplementedParameter:	"Command not implemented for that parameter.",
-	StatusNotLoggedIn:		"Not logged in.",
-	StatusStorNeedAccount:		"Need account for storing files.",
-	StatusFileUnavailable:		"File unavailable.",
-	StatusPageTypeUnknown:		"Page type unknown.",
-	StatusExceededStorage:		"Exceeded storage allocation.",
-	StatusBadFileName:		"File name not allowed.",
+	StatusBadCommand:              "Command unrecognized.",
+	StatusBadArguments:            "Syntax error in parameters or arguments.",
+	StatusNotImplemented:          "Command not implemented.",
+	StatusBadSequence:             "Bad sequence of commands.",
+	StatusNotImplementedParameter: "Command not implemented for that parameter.",
+	StatusNotLoggedIn:             "Not logged in.",
+	StatusStorNeedAccount:         "Need account for storing files.",
+	StatusFileUnavailable:         "File unavailable.",
+	StatusPageTypeUnknown:         "Page type unknown.",
+	StatusExceededStorage:         "Exceeded storage allocation.",
+	StatusBadFileName:             "File name not allowed.",
 }