Pārlūkot izejas kodu

refactor: moved mirrorStatus back to manager

bigeagle 9 gadi atpakaļ
vecāks
revīzija
ed69dde18e
4 mainītis faili ar 101 papildinājumiem un 64 dzēšanām
  1. 66 0
      internal/status.go
  2. 23 0
      internal/status_test.go
  3. 6 60
      manager/status.go
  4. 6 4
      manager/status_test.go

+ 66 - 0
internal/status.go

@@ -0,0 +1,66 @@
+package internal
+
+import (
+	"encoding/json"
+	"errors"
+	"fmt"
+)
+
+type SyncStatus uint8
+
+const (
+	None SyncStatus = iota
+	Failed
+	Success
+	Syncing
+	PreSyncing
+	Paused
+	Disabled
+)
+
+func (s SyncStatus) MarshalJSON() ([]byte, error) {
+	var strStatus string
+	switch s {
+	case None:
+		strStatus = "none"
+	case Failed:
+		strStatus = "failed"
+	case Success:
+		strStatus = "success"
+	case Syncing:
+		strStatus = "syncing"
+	case PreSyncing:
+		strStatus = "pre-syncing"
+	case Paused:
+		strStatus = "paused"
+	case Disabled:
+		strStatus = "disabled"
+	default:
+		return []byte{}, errors.New("Invalid status value")
+	}
+
+	return json.Marshal(strStatus)
+}
+
+func (s *SyncStatus) UnmarshalJSON(v []byte) error {
+	sv := string(v)
+	switch sv {
+	case `"none"`:
+		*s = None
+	case `"failed"`:
+		*s = Failed
+	case `"success"`:
+		*s = Success
+	case `"syncing"`:
+		*s = Syncing
+	case `"pre-syncing"`:
+		*s = PreSyncing
+	case `"paused"`:
+		*s = Paused
+	case `"disabled"`:
+		*s = Disabled
+	default:
+		return fmt.Errorf("Invalid status value: %s", string(v))
+	}
+	return nil
+}

+ 23 - 0
internal/status_test.go

@@ -0,0 +1,23 @@
+package internal
+
+import (
+	"encoding/json"
+	"testing"
+
+	. "github.com/smartystreets/goconvey/convey"
+)
+
+func TestSyncStatus(t *testing.T) {
+	Convey("SyncStatus json ser-de should work", t, func() {
+
+		b, err := json.Marshal(PreSyncing)
+		So(err, ShouldBeNil)
+		So(b, ShouldResemble, []byte(`"pre-syncing"`)) // deep equal should be used
+
+		var s SyncStatus
+
+		err = json.Unmarshal([]byte(`"failed"`), &s)
+		So(err, ShouldBeNil)
+		So(s, ShouldEqual, Failed)
+	})
+}

+ 6 - 60
internal/status/status.go → manager/status.go

@@ -1,35 +1,24 @@
-package status
+package manager
 
 import (
 	"encoding/json"
 	"errors"
 	"fmt"
 	"strconv"
-	"strings"
 	"time"
-)
-
-type syncStatus uint8
 
-const (
-	None syncStatus = iota
-	Failed
-	Success
-	Syncing
-	PreSyncing
-	Paused
-	Disabled
+	. "github.com/tuna/tunasync/internal"
 )
 
-type MirrorStatus struct {
+type mirrorStatus struct {
 	Name       string
-	Status     syncStatus
+	Status     SyncStatus
 	LastUpdate time.Time
 	Upstream   string
 	Size       string // approximate size
 }
 
-func (s MirrorStatus) MarshalJSON() ([]byte, error) {
+func (s mirrorStatus) MarshalJSON() ([]byte, error) {
 	m := map[string]interface{}{
 		"name":           s.Name,
 		"status":         s.Status,
@@ -41,7 +30,7 @@ func (s MirrorStatus) MarshalJSON() ([]byte, error) {
 	return json.Marshal(m)
 }
 
-func (s *MirrorStatus) UnmarshalJSON(v []byte) error {
+func (s *mirrorStatus) UnmarshalJSON(v []byte) error {
 	var m map[string]interface{}
 
 	err := json.Unmarshal(v, &m)
@@ -99,46 +88,3 @@ func (s *MirrorStatus) UnmarshalJSON(v []byte) error {
 	}
 	return nil
 }
-
-func (s syncStatus) MarshalJSON() ([]byte, error) {
-	var strStatus string
-	switch s {
-	case None:
-		strStatus = "none"
-	case Success:
-		strStatus = "success"
-	case Syncing:
-		strStatus = "syncing"
-	case PreSyncing:
-		strStatus = "pre-syncing"
-	case Paused:
-		strStatus = "paused"
-	case Disabled:
-		strStatus = "disabled"
-	default:
-		return []byte{}, errors.New("Invalid status value")
-	}
-
-	return json.Marshal(strStatus)
-}
-
-func (s *syncStatus) UnmarshalJSON(v []byte) error {
-	sv := strings.Trim(string(v), `"`)
-	switch sv {
-	case "none":
-		*s = None
-	case "success":
-		*s = Success
-	case "syncing":
-		*s = Syncing
-	case "pre-syncing":
-		*s = PreSyncing
-	case "paused":
-		*s = Paused
-	case "disabled":
-		*s = Disabled
-	default:
-		return fmt.Errorf("Invalid status value: %s", string(v))
-	}
-	return nil
-}

+ 6 - 4
internal/status/status_test.go → manager/status_test.go

@@ -1,10 +1,12 @@
-package status
+package manager
 
 import (
 	"encoding/json"
 	"testing"
 	"time"
 
+	tunasync "github.com/tuna/tunasync/internal"
+
 	. "github.com/smartystreets/goconvey/convey"
 )
 
@@ -14,9 +16,9 @@ func TestStatus(t *testing.T) {
 		loc, err := time.LoadLocation(tz)
 		So(err, ShouldBeNil)
 
-		m := MirrorStatus{
+		m := mirrorStatus{
 			Name:       "tunalinux",
-			Status:     Success,
+			Status:     tunasync.Success,
 			LastUpdate: time.Date(2016, time.April, 16, 23, 8, 10, 0, loc),
 			Size:       "5GB",
 			Upstream:   "rsync://mirrors.tuna.tsinghua.edu.cn/tunalinux/",
@@ -25,7 +27,7 @@ func TestStatus(t *testing.T) {
 		b, err := json.Marshal(m)
 		So(err, ShouldBeNil)
 		// fmt.Println(string(b))
-		var m2 MirrorStatus
+		var m2 mirrorStatus
 		err = json.Unmarshal(b, &m2)
 		So(err, ShouldBeNil)
 		// fmt.Printf("%#v", m2)