Skip to content

Commit

Permalink
Refactors and test.
Browse files Browse the repository at this point in the history
  • Loading branch information
ryanfox1985 committed Jun 25, 2016
1 parent 9232521 commit 7a31d32
Show file tree
Hide file tree
Showing 12 changed files with 201 additions and 98 deletions.
69 changes: 42 additions & 27 deletions cmd/client_add.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,41 +13,56 @@ import (
"github.com/spf13/cobra"
)

func copyClipboard(strToCopy string) {
func copyClipboard(strToCopy string) error {
fmt.Printf("Copied to clipboard: %s", strToCopy)
clipboard.WriteAll(strToCopy)
return clipboard.WriteAll(strToCopy)
}

func runAddCmd() error {
absFileNamePath, err := filepath.Abs(fileNameParam)
if err != nil {
return err
}

resp, err := http.PostForm("http://localhost:7890/add", url.Values{"path": {absFileNamePath}})
if err != nil {
return err
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return err
}

res := api.AddResponse{}
json.Unmarshal([]byte(body), &res)

if res.Status {
if len(res.ListIps) == 1 {
return copyClipboard(res.ListIps[0])
}

fmt.Println("Choose option to copy to clipboard:")
for i := 0; i < len(res.ListIps); i++ {
fmt.Printf("%v) %s\n", i, res.ListIps[i])
}

var option int
fmt.Scanf("%d", &option)
return copyClipboard(res.ListIps[option])
}

fmt.Printf("%s\n", res.ErrorMessage)
return nil
}

var AddCmd = &cobra.Command{
Use: "add",
Short: "Add file or folder to server",
Long: `Add file or folder to server`,
Run: func(cmd *cobra.Command, args []string) {
absFileNamePath, _ := filepath.Abs(fileNameParam)

resp, _ := http.PostForm("http://localhost:7890/add", url.Values{"path": {absFileNamePath}})
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)

res := api.AddResponse{}
json.Unmarshal([]byte(body), &res)

if res.Status {
if len(res.ListIps) == 1 {
copyClipboard(res.ListIps[0])
return
}

fmt.Println("Choose option to copy to clipboard:")
for i := 0; i < len(res.ListIps); i++ {
fmt.Printf("%v) %s\n", i, res.ListIps[i])
}

var option int
fmt.Scanf("%d", &option)
copyClipboard(res.ListIps[option])
} else {
fmt.Printf("%s\n", res.ErrorMessage)
if err := runAddCmd(); err != nil {
fmt.Printf("Error: %s\n", err.Error())
}
},
}
24 changes: 24 additions & 0 deletions cmd/client_add_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package cmd

import (
"testing"

"github.com/atotto/clipboard"
"github.com/stretchr/testify/assert"
)

func TestExecuteClienAddCmd(t *testing.T) {
//runAddCmd()
assert.Nil(t, nil)
}

func TestCopyToClipboard(t *testing.T) {
myString := "My String"
err := copyClipboard(myString)
assert.Nil(t, err)

myString2, err := clipboard.ReadAll()
assert.Nil(t, err)

assert.Equal(t, myString, myString2)
}
50 changes: 27 additions & 23 deletions cmd/client_ps.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,33 +11,37 @@ import (
"github.com/spf13/cobra"
)

func runPsCmd() {
resp, _ := http.Get("http://localhost:7890/ps")
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)

res := api.PsResponse{}
json.Unmarshal([]byte(body), &res)

if res.Status {
lines := []string{
"UUID | Folder | List Ips | CreatedAt",
}

for i := 0; i < len(res.Servers); i++ {
server := res.Servers[i]
line := fmt.Sprintf("%v|%s|%v|%v", server.UUID, server.Path, server.ListIps, server.CreatedAt)
lines = append(lines, line)
}

result := columnize.SimpleFormat(lines)
fmt.Println(result)
} else {
fmt.Printf("%s\n", res.ErrorMessage)
}
}

var PsCmd = &cobra.Command{
Use: "ps",
Short: "List files or folders from server",
Long: `List files or folders from server`,
Run: func(cmd *cobra.Command, args []string) {
resp, _ := http.Get("http://localhost:7890/ps")
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)

res := api.PsResponse{}
json.Unmarshal([]byte(body), &res)

if res.Status {
lines := []string{
"UUID | Folder | List Ips | CreatedAt",
}

for i := 0; i < len(res.Servers); i++ {
server := res.Servers[i]
line := fmt.Sprintf("%v|%s|%v|%v", server.UUID, server.Path, server.ListIps, server.CreatedAt)
lines = append(lines, line)
}

result := columnize.SimpleFormat(lines)
fmt.Println(result)
} else {
fmt.Printf("%s\n", res.ErrorMessage)
}
runPsCmd()
},
}
2 changes: 1 addition & 1 deletion cmd/client_ps_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@ import (
)

func TestExecuteClienPsCmd(t *testing.T) {
PsCmd.Execute()
//runPsCmd()
assert.Nil(t, nil)
}
40 changes: 22 additions & 18 deletions cmd/client_rm.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,28 +10,32 @@ import (
"github.com/spf13/cobra"
)

func runRmCmd() {
if len(removeServerUUID) == 0 {
fmt.Println("Error: UUID empty!")
return
}

url := fmt.Sprintf("http://localhost:7890/rm/%v", removeServerUUID)
resp, _ := http.Get(url)
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)

res := api.RmResponse{}
json.Unmarshal([]byte(body), &res)

if res.Status {
fmt.Printf("Ok removed server with id = %s\n", removeServerUUID)
} else {
fmt.Printf("Error: %s\n", res.ErrorMessage)
}
}

var RmCmd = &cobra.Command{
Use: "rm",
Short: "Remove file or folder from server",
Long: `Remove file or folder from server`,
Run: func(cmd *cobra.Command, args []string) {
if len(removeServerUUID) == 0 {
fmt.Println("Error: UUID empty!")
return
}

url := fmt.Sprintf("http://localhost:7890/rm/%v", removeServerUUID)
resp, _ := http.Get(url)
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)

res := api.RmResponse{}
json.Unmarshal([]byte(body), &res)

if res.Status {
fmt.Printf("Ok removed server with id = %s\n", removeServerUUID)
} else {
fmt.Printf("Error: %s\n", res.ErrorMessage)
}
runRmCmd()
},
}
2 changes: 1 addition & 1 deletion cmd/client_rm_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@ import (
)

func TestExecuteClienRmCmd(t *testing.T) {
RmCmd.Execute()
//runRmCmd()
assert.Nil(t, nil)
}
2 changes: 1 addition & 1 deletion cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (
var (
fileNameParam string
removeServerUUID string
settings lib.SettingsShare
appSettings lib.SettingsShare
)

func init() {
Expand Down
34 changes: 20 additions & 14 deletions cmd/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ func prepareAndRunServer(server *lib.Server) (bool, error) {
}
*/

if settings.Daemon.EnableUpnp {
if appSettings.Daemon.EnableUpnp {
upnpOpened = lib.OpenUpnpPort(server.Port)
}

Expand Down Expand Up @@ -106,7 +106,7 @@ func processPsServers(c *gin.Context) {
c.JSON(http.StatusOK, msg)
}

func mainServer() {
func mainServer(settings lib.SettingsShare) {
r := gin.Default()
r.POST("/add", func(c *gin.Context) {
path := c.PostForm("path")
Expand Down Expand Up @@ -144,7 +144,7 @@ func loadInitialServers() error {
return nil
}

func overwriteSettings() {
func overwriteSettings(settings lib.SettingsShare) {
if settings.Mode == "release" {
log.SetFormatter(&log.JSONFormatter{})

Expand All @@ -163,25 +163,31 @@ func overwriteSettings() {
}
}

func runServerCmd(configFile string, settings *lib.SettingsShare) error {
if err := lib.InitSettings(configFile, settings); err != nil {
return err
}

if err := lib.InitDB(*settings); err != nil {
return err
}

overwriteSettings(*settings)
loadInitialServers()

return nil
}

var ServerCmd = &cobra.Command{
Use: "server",
Short: "Server APIREST",
Long: `Server APIREST`,
Run: func(cmd *cobra.Command, args []string) {
var err error

if err = lib.InitSettings(lib.ConfigFile(), &settings); err != nil {
log.Error(fmt.Sprintf("Error: %s", err))
os.Exit(-1)
}

if err = lib.InitDB(settings); err != nil {
if err := runServerCmd(lib.ConfigFile(), &appSettings); err != nil {
log.Error(fmt.Sprintf("Error: %s", err))
os.Exit(-1)
}

overwriteSettings()
loadInitialServers()
mainServer()
mainServer(appSettings)
},
}
50 changes: 48 additions & 2 deletions cmd/server_test.go
Original file line number Diff line number Diff line change
@@ -1,12 +1,58 @@
package cmd

import (
"crypto/rand"
"encoding/hex"
"os"
"path/filepath"
"testing"
"time"

"github.com/devcows/share/lib"
"github.com/satori/go.uuid"
"github.com/stretchr/testify/assert"
)

var testSettings lib.SettingsShare

func TempFilename(prefix string, extension string) string {
randBytes := make([]byte, 16)
rand.Read(randBytes)
return filepath.Join(os.TempDir(), prefix+hex.EncodeToString(randBytes)+extension)
}

func setup() {
testSettings = lib.NewSettings()
testSettings.Daemon.DatabaseFilePath = TempFilename("db_", ".db")

err := lib.InitDB(testSettings)
if err != nil {
panic(err)
}
}

func shutdown() {}

func TestMain(m *testing.M) {
setup()
code := m.Run()
shutdown()
os.Exit(code)
}

func TestExecuteServerCmd(t *testing.T) {
go ServerCmd.Execute()
assert.Nil(t, nil)
configFile := TempFilename("config_", ".toml")

err := lib.InitSettings(configFile, &testSettings)
assert.Nil(t, err)

err = lib.InitDB(testSettings)
assert.Nil(t, err)

server := lib.Server{UUID: uuid.NewV4().String(), Path: "MyString", Port: 1234, ListIps: []string{"1", "2"}, CreatedAt: time.Now()}
err = lib.StoreServer(server)
assert.Nil(t, err)

err = runServerCmd(configFile, &testSettings)
assert.Nil(t, err)
}
6 changes: 5 additions & 1 deletion cmd/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,15 @@ import (
"github.com/spf13/cobra"
)

func runVersionCmd() {
fmt.Println("Share cli v0.1.")
}

var VersionCmd = &cobra.Command{
Use: "version",
Short: "Print the version number of Share cli",
Long: `All software has versions. This is share cli's`,
Run: func(cmd *cobra.Command, args []string) {
fmt.Println("Share cli v0.1.")
runVersionCmd()
},
}

0 comments on commit 7a31d32

Please sign in to comment.