Skip to content

Commit 029a974

Browse files
committed
feat: (convert) add ozzo-validator in converter
1 parent 03ff266 commit 029a974

File tree

6 files changed

+60
-7
lines changed

6 files changed

+60
-7
lines changed

Gopkg.lock

Lines changed: 21 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Gopkg.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ required = [
3131
"github.com/bitly/go-simplejson",
3232
"github.com/go-redis/redis",
3333
"github.com/op/go-logging",
34+
"github.com/go-ozzo/ozzo-validation",
3435
"github.com/stretchr/testify"
3536
]
3637

@@ -61,3 +62,7 @@ required = [
6162
go-version = "1.11"
6263
install = ["./cmd/server/..."]
6364
ensure = "true"
65+
66+
[[constraint]]
67+
name = "github.com/go-ozzo/ozzo-validation"
68+
version = "3.5.0"

cmd/server/convert.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"crypto/md5"
66
"encoding/json"
77
"fmt"
8+
"github.com/go-ozzo/ozzo-validation"
89
ex "github.com/me-io/go-swap/pkg/exchanger"
910
"github.com/me-io/go-swap/pkg/swap"
1011
"io/ioutil"
@@ -16,12 +17,16 @@ import (
1617
// Validate ... Validation function for convertReqObj
1718
func (c *convertReqObj) Validate() error {
1819

19-
if ex.CurrencyList[c.To] == "" || ex.CurrencyList[c.From] == "" {
20-
return fmt.Errorf("currency %s or %s is not supoorted", c.From, c.To)
21-
}
20+
return validation.ValidateStruct(c,
21+
validation.Field(&c.Amount, validation.Required),
22+
validation.Field(&c.From, validation.Required, validation.In(ex.CurrencyListArr...)),
23+
validation.Field(&c.To, validation.Required, validation.In(ex.CurrencyListArr...)),
24+
validation.Field(&c.Exchanger, validation.Required),
25+
)
2226

23-
// todo implement
24-
return nil
27+
//if ex.CurrencyList[c.To] == "" || ex.CurrencyList[c.From] == "" {
28+
// return fmt.Errorf("currency %s or %s is not supported", c.From, c.To)
29+
//}
2530
}
2631

2732
// Hash ... return md5 string hash of the convertReqObj with 1 Unit Amount to cache the rate only for 1 Unit Amount

cmd/server/main.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ var (
2121
cacheDriver string
2222
redisUrl string
2323
// Storage ... Server Cache Storage
24-
Storage cache.Storage
24+
Storage cache.Storage
2525
// Logger ... Logger Driver
26-
Logger = logging.MustGetLogger("go-swap-server")
26+
Logger = logging.MustGetLogger("go-swap-server")
2727

2828
format = logging.MustStringFormatter(
2929
`%{color}%{time:2006-01-02T15:04:05.999999} %{shortfunc} ▶ %{level:.8s} %{id:03x}%{color:reset} %{message}`,

pkg/exchanger/currency_list.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,3 +289,6 @@ var CurrencyList = map[string]string{
289289
"ZWR": "Zimbabwean Dollar (2008)",
290290
"ZWL": "Zimbabwean Dollar (2009)",
291291
}
292+
293+
// CurrencyListRev ... CurrencyList to array of int => interfaces to be used in validation
294+
var CurrencyListArr = MapKeyArrInterface(CurrencyList)

pkg/exchanger/helpers.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package exchanger
2+
3+
// ReverseMap ... Reverse a map in <value, key>
4+
func ReverseMap(m map[string]string) map[string]string {
5+
n := make(map[string]string)
6+
for k, v := range m {
7+
n[v] = k
8+
}
9+
return n
10+
}
11+
12+
// MapKeyArrInterface ... Reverse a map in <value, key>
13+
func MapKeyArrInterface(m map[string]string) []interface{} {
14+
var n []interface{}
15+
for k := range m {
16+
n = append(n, k)
17+
}
18+
return n
19+
}

0 commit comments

Comments
 (0)