This is an automated email from the ASF dual-hosted git repository.

rob pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficcontrol.git

commit 11a57ad0f66be98e8c5bc606a1c0c0d88a643235
Author: Rawlin Peters <rawlin_pet...@comcast.com>
AuthorDate: Tue Sep 25 15:21:58 2018 -0600

    Fix riak content-type json header, use JSONIntStr for the version
---
 lib/go-tc/deliveryservice_ssl_keys.go                 |  6 ++----
 lib/go-util/num.go                                    | 19 ++++++++-----------
 .../traffic_ops_golang/deliveryservice/keys.go        |  9 ++-------
 .../traffic_ops_golang/deliveryservice/sslkeys.go     |  7 +------
 traffic_ops/traffic_ops_golang/riaksvc/dsutil.go      |  8 ++++----
 5 files changed, 17 insertions(+), 32 deletions(-)

diff --git a/lib/go-tc/deliveryservice_ssl_keys.go 
b/lib/go-tc/deliveryservice_ssl_keys.go
index 007be74..e9d0ac5 100644
--- a/lib/go-tc/deliveryservice_ssl_keys.go
+++ b/lib/go-tc/deliveryservice_ssl_keys.go
@@ -45,7 +45,7 @@ type DeliveryServiceSSLKeys struct {
        Country         string                            
`json:"country,omitempty"`
        State           string                            
`json:"state,omitempty"`
        Key             string                            `json:"key"`
-       Version         util.JSONNumAsStr                 `json:"version"`
+       Version         util.JSONIntStr                   `json:"version"`
        Certificate     DeliveryServiceSSLKeysCertificate 
`json:"certificate,omitempty"`
 }
 
@@ -60,7 +60,7 @@ type DeliveryServiceSSLKeysReq struct {
        State           *string `json:"state,omitempty"`
        // Key is the XMLID of the delivery service
        Key         *string                            `json:"key"`
-       Version     *util.JSONNumAsStr                 `json:"version"`
+       Version     *util.JSONIntStr                   `json:"version"`
        Certificate *DeliveryServiceSSLKeysCertificate 
`json:"certificate,omitempty"`
 }
 
@@ -90,8 +90,6 @@ func (r *DeliveryServiceSSLKeysReq) 
validateSharedRequiredRequestFields() []stri
        }
        if r.Version == nil {
                errs = append(errs, "version required")
-       } else if _, err := strconv.Atoi(string(*r.Version)); err != nil {
-               errs = append(errs, "version must parse to an integer")
        }
        if checkNilOrEmpty(r.Key) {
                errs = append(errs, "key required")
diff --git a/lib/go-util/num.go b/lib/go-util/num.go
index a100170..a9dd450 100644
--- a/lib/go-util/num.go
+++ b/lib/go-util/num.go
@@ -80,6 +80,14 @@ func (i *JSONIntStr) UnmarshalJSON(d []byte) error {
        return nil
 }
 
+func (i JSONIntStr) ToInt64() int64 {
+       return int64(i)
+}
+
+func (i JSONIntStr) String() string {
+       return strconv.FormatInt(int64(i), 10)
+}
+
 // JSONNumAsStr unmarshals JSON strings or numbers into strings
 // This is designed to handle backwards-compatibility for old Perl endpoints 
which accept both. Please do not use this for new endpoints or new APIs, APIs 
should be well-typed.
 type JSONNumAsStr string
@@ -95,17 +103,6 @@ func (s *JSONNumAsStr) UnmarshalJSON(d []byte) error {
        return nil
 }
 
-func (s *JSONNumAsStr) ToInt() (int, error) {
-       if s == nil {
-               return 0, errors.New("cannot parse nil JSONNumAsStr to int")
-       }
-       i, err := strconv.Atoi(string(*s))
-       if err != nil {
-               return 0, errors.New("parsing JSONNumAsStr to int: " + 
err.Error())
-       }
-       return i, nil
-}
-
 // BytesLenSplit splits the given byte array into an n-length arrays. If n > 
len(s), returns a slice with a single []byte containing all of s. If n <= 0, 
returns an empty slice.
 func BytesLenSplit(s []byte, n int) [][]byte {
        ss := [][]byte{}
diff --git a/traffic_ops/traffic_ops_golang/deliveryservice/keys.go 
b/traffic_ops/traffic_ops_golang/deliveryservice/keys.go
index 0ac0aae..0c5a1a9 100644
--- a/traffic_ops/traffic_ops_golang/deliveryservice/keys.go
+++ b/traffic_ops/traffic_ops_golang/deliveryservice/keys.go
@@ -79,12 +79,7 @@ func AddSSLKeys(w http.ResponseWriter, r *http.Request) {
                api.HandleErr(w, r, inf.Tx.Tx, http.StatusInternalServerError, 
nil, errors.New("putting SSL keys in Riak for delivery service 
'"+*req.DeliveryService+"': "+err.Error()))
                return
        }
-       version, err := req.Version.ToInt()
-       if err != nil {
-               api.HandleErr(w, r, inf.Tx.Tx, http.StatusBadRequest, 
errors.New("adding SSL keys to delivery service '"+*req.DeliveryService+"': 
"+err.Error()), nil)
-               return
-       }
-       if err := updateSSLKeyVersion(*req.DeliveryService, version, 
inf.Tx.Tx); err != nil {
+       if err := updateSSLKeyVersion(*req.DeliveryService, 
req.Version.ToInt64(), inf.Tx.Tx); err != nil {
                api.HandleErr(w, r, inf.Tx.Tx, http.StatusInternalServerError, 
nil, errors.New("adding SSL keys to delivery service 
'"+*req.DeliveryService+"': "+err.Error()))
                return
        }
@@ -232,7 +227,7 @@ func DeleteSSLKeys(w http.ResponseWriter, r *http.Request) {
        api.WriteResp(w, r, "Successfully deleted ssl keys for "+xmlID)
 }
 
-func updateSSLKeyVersion(xmlID string, version int, tx *sql.Tx) error {
+func updateSSLKeyVersion(xmlID string, version int64, tx *sql.Tx) error {
        q := `UPDATE deliveryservice SET ssl_key_version = $1 WHERE xml_id = $2`
        if _, err := tx.Exec(q, version, xmlID); err != nil {
                return errors.New("updating delivery service ssl_key_version: " 
+ err.Error())
diff --git a/traffic_ops/traffic_ops_golang/deliveryservice/sslkeys.go 
b/traffic_ops/traffic_ops_golang/deliveryservice/sslkeys.go
index 5f4e602..34bd8b2 100644
--- a/traffic_ops/traffic_ops_golang/deliveryservice/sslkeys.go
+++ b/traffic_ops/traffic_ops_golang/deliveryservice/sslkeys.go
@@ -52,12 +52,7 @@ func GenerateSSLKeys(w http.ResponseWriter, r *http.Request) 
{
                api.HandleErr(w, r, inf.Tx.Tx, http.StatusInternalServerError, 
nil, errors.New("generating and putting SSL keys: "+err.Error()))
                return
        }
-       version, err := req.Version.ToInt()
-       if err != nil {
-               api.HandleErr(w, r, inf.Tx.Tx, http.StatusBadRequest, 
errors.New("generating SSL keys for delivery service 
'"+*req.DeliveryService+"': "+err.Error()), nil)
-               return
-       }
-       if err := updateSSLKeyVersion(*req.DeliveryService, version, 
inf.Tx.Tx); err != nil {
+       if err := updateSSLKeyVersion(*req.DeliveryService, 
req.Version.ToInt64(), inf.Tx.Tx); err != nil {
                api.HandleErr(w, r, inf.Tx.Tx, http.StatusInternalServerError, 
nil, errors.New("generating SSL keys for delivery service 
'"+*req.DeliveryService+"': "+err.Error()))
                return
        }
diff --git a/traffic_ops/traffic_ops_golang/riaksvc/dsutil.go 
b/traffic_ops/traffic_ops_golang/riaksvc/dsutil.go
index eb4c52e..a912530 100644
--- a/traffic_ops/traffic_ops_golang/riaksvc/dsutil.go
+++ b/traffic_ops/traffic_ops_golang/riaksvc/dsutil.go
@@ -75,17 +75,17 @@ func PutDeliveryServiceSSLKeysObj(key 
tc.DeliveryServiceSSLKeys, tx *sql.Tx, aut
        }
        err = WithClusterTx(tx, authOpts, func(cluster StorageCluster) error {
                obj := &riak.Object{
-                       ContentType:     "text/json",
+                       ContentType:     "application/json",
                        Charset:         "utf-8",
                        ContentEncoding: "utf-8",
-                       Key:             MakeDSSSLKeyKey(key.DeliveryService, 
string(key.Version)),
+                       Key:             MakeDSSSLKeyKey(key.DeliveryService, 
key.Version.String()),
                        Value:           []byte(keyJSON),
                }
-               if err = SaveObject(obj, DeliveryServiceSSLKeysBucket, 
cluster); err != nil {
+               if err := SaveObject(obj, DeliveryServiceSSLKeysBucket, 
cluster); err != nil {
                        return errors.New("saving Riak object: " + err.Error())
                }
                obj.Key = MakeDSSSLKeyKey(key.DeliveryService, 
DSSSLKeyVersionLatest)
-               if err = SaveObject(obj, DeliveryServiceSSLKeysBucket, 
cluster); err != nil {
+               if err := SaveObject(obj, DeliveryServiceSSLKeysBucket, 
cluster); err != nil {
                        return errors.New("saving Riak object: " + err.Error())
                }
                return nil

Reply via email to