diff --git a/app/command-line/userinput.go b/app/command-line/userinput.go index f2ed7370875e09a8ade0b46038d21c52c32d18fa..91d6a858292ea75cf0c403074aa2487567eba198 100644 --- a/app/command-line/userinput.go +++ b/app/command-line/userinput.go @@ -2,7 +2,11 @@ package command_line import ( "fmt" + "math/rand" + ObjectStorageAPI "node/object-storage" + Sender "node/sender" . "node/types" + "node/utilities" "os" "strconv" "time" @@ -53,12 +57,10 @@ func userCreatedTransaction(config Config) Transaction { return trans } -func UserInputLoop(config Config, isAlsoServer bool) { +func UserInputLoop(config Config, isAlsoServer bool, objectStorage Blob) { + var database Database for true { var operation string - if !ServerReady { - continue - } fmt.Println() fmt.Println() fmt.Println("Please enter the operation you want to do") @@ -82,8 +84,9 @@ func UserInputLoop(config Config, isAlsoServer bool) { //createTransaction(newTrans) } else { newTrans := userCreatedTransaction(config) - addTransactionToDb(newTrans) - printAllNeighbours(config) + database = ObjectStorageAPI.ReadDatabaseFromBlobStorage(objectStorage) + database = ObjectStorageAPI.AddTransactionToBlobStorage(newTrans, database, objectStorage) + utilities.PrintNeighbors(config.Neighbours) fmt.Println("TRANSACTION READY TO BE SENT") fmt.Println("Please enter the ID of the neighbour you want to send the transaction to") var neighbourID string @@ -97,12 +100,13 @@ func UserInputLoop(config Config, isAlsoServer bool) { fmt.Println("error :", err.Error()) os.Exit(1) } - sendTransactionToNeighbour(config, newTrans, config.Neighbours[neighbourIDInt].Address, strconv.Itoa(config.Neighbours[neighbourIDInt].Port)) + Sender.SendTransactionToNeighbour(config, newTrans, config.Neighbours[neighbourIDInt].Address, strconv.Itoa(config.Neighbours[neighbourIDInt].Port)) } break case "2": fmt.Println("You chose to rate a transaction") - listAllTransactions() + database = ObjectStorageAPI.ReadDatabaseFromBlobStorage(objectStorage) + utilities.PrintingDatabaseToConsole(database) fmt.Print("\nPlease enter the index of the transaction you want to rate:") var transID string _, err := fmt.Scanln(&transID) @@ -115,7 +119,7 @@ func UserInputLoop(config Config, isAlsoServer bool) { fmt.Println("error :", err.Error()) os.Exit(1) } - printAllNeighbours(config) + utilities.PrintNeighbors(config.Neighbours) fmt.Println("Please enter the ID of the neighbour you want to send the transaction to") var neighbourID string _, err = fmt.Scanln(&neighbourID) @@ -130,53 +134,40 @@ func UserInputLoop(config Config, isAlsoServer bool) { } address := config.Neighbours[neighbourIDInt].Address + ":" + strconv.Itoa(config.Neighbours[neighbourIDInt].Port) fmt.Println("Sending rate demand to ", address) - sendVoteToNeighbour(config, DB[transIDInt], address) + database = ObjectStorageAPI.ReadDatabaseFromBlobStorage(objectStorage) + Sender.SendVoteToNeighbour(config, database[transIDInt], address) break case "3": fmt.Println("You chose to fabricate a fake transaction") fmt.Println("You chose to fake a transaction") - listAllTransactions() + database = ObjectStorageAPI.ReadDatabaseFromBlobStorage(objectStorage) + utilities.PrintingDatabaseToConsole(database) fmt.Print("\nPlease enter the index of the transaction you want to overwrite by faking:") + var transID string _, err := fmt.Scanln(&transID) if err != nil { fmt.Println("error :", err.Error()) os.Exit(1) } + transIDInt, err := strconv.ParseInt(transID, 10, 64) if err != nil { fmt.Println("error :", err.Error()) os.Exit(1) } - printAllNeighbours(config) - fmt.Println("Please enter the ID of the neighbour you to ask to fake the given transaction") - var neighbourID string - _, err = fmt.Scanln(&neighbourID) - if err != nil { - fmt.Println("error :", err.Error()) - os.Exit(1) - } - neighbourIDInt, err := strconv.ParseInt(neighbourID, 10, 64) - if err != nil { - fmt.Println("error :", err.Error()) - os.Exit(1) - } + tmpFakeTrans := userCreatedTransaction(config) - transToFake := DB[transIDInt] - fakeTrans := Transaction{ - Id: transToFake.Id, - Sender: tmpFakeTrans.Sender, - Receiver: tmpFakeTrans.Receiver, - Amount: tmpFakeTrans.Amount, - } - ip := config.Neighbours[neighbourIDInt].Address - port := strconv.Itoa(config.Neighbours[neighbourIDInt].Port) - address := ip + ":" + port - sendFakeTransactionToNeighbour(fakeTrans, address) - break + database = ObjectStorageAPI.ReadDatabaseFromBlobStorage(objectStorage) + database = ObjectStorageAPI.FakeTransaction(database[transIDInt], tmpFakeTrans, database) + ObjectStorageAPI.WriteDatabaseToBlobStorage(database, objectStorage) + database = ObjectStorageAPI.ReadDatabaseFromBlobStorage(objectStorage) + fmt.Println("Database after faking:") + utilities.PrintingDatabaseToConsole(database) case "4": fmt.Println("You chose to print all transactions") - listAllTransactions() + database = ObjectStorageAPI.ReadDatabaseFromBlobStorage(objectStorage) + utilities.PrintingDatabaseToConsole(database) break case "5": fmt.Println("You chose to ask for all transactions of a given node")