Skip to content

Commit

Permalink
[#16] .Refactor DetectError -> extractError
Browse files Browse the repository at this point in the history
  • Loading branch information
ThomasObenaus committed Feb 17, 2020
1 parent e88bdaa commit 0f3eb1c
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 33 deletions.
27 changes: 0 additions & 27 deletions interfaces/queryExecutor.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,30 +62,3 @@ type AsyncResponse struct {
func (r Response) String() string {
return fmt.Sprintf("Response \nRequestID: %v, \nStatus: {%#v}, \nResult: {%#v}\n", r.RequestID, r.Status, r.Result)
}

// DetectError detects any possible errors in responses from Gremlin Server and generates an error for each code
func (r *Response) DetectError() (err error) {
switch r.Status.Code {
case StatusSuccess, StatusNoContent, StatusPartialContent:
break
case StatusUnauthorized:
err = fmt.Errorf("UNAUTHORIZED - Response Message: %s", r.Status.Message)
case StatusAuthenticate:
err = fmt.Errorf("AUTHENTICATE - Response Message: %s", r.Status.Message)
case StatusMalformedRequest:
err = fmt.Errorf("MALFORMED REQUEST - Response Message: %s", r.Status.Message)
case StatusInvalidRequestArguments:
err = fmt.Errorf("INVALID REQUEST ARGUMENTS - Response Message: %s", r.Status.Message)
case StatusServerError:
err = fmt.Errorf("SERVER ERROR - Response Message: %s", r.Status.Message)
case StatusScriptEvaluationError:
err = fmt.Errorf("SCRIPT EVALUATION ERROR - Response Message: %s", r.Status.Message)
case StatusServerTimeout:
err = fmt.Errorf("SERVER TIMEOUT - Response Message: %s", r.Status.Message)
case StatusServerSerializationError:
err = fmt.Errorf("SERVER SERIALIZATION ERROR - Response Message: %s", r.Status.Message)
default:
err = fmt.Errorf("UNKNOWN ERROR - Response Message: %s", r.Status.Message)
}
return
}
37 changes: 32 additions & 5 deletions response.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,15 @@ func (c *client) handleResponse(msg []byte) error {
}

// marshalResponse creates a response struct for every incoming response for further manipulation
func marshalResponse(msg []byte) (resp interfaces.Response, err error) {
err = json.Unmarshal(msg, &resp)
func marshalResponse(msg []byte) (interfaces.Response, error) {
resp := interfaces.Response{}
err := json.Unmarshal(msg, &resp)
if err != nil {
return
return resp, err
}

err = resp.DetectError()
return
err = extractError(resp)
return resp, err
}

// saveResponse makes the response available for retrieval by the requester. Mutexes are used for thread safety.
Expand Down Expand Up @@ -167,3 +168,29 @@ func (c *client) retrieveResponse(id string) ([]interfaces.Response, error) {
func (c *client) deleteResponse(id string) {
c.results.Delete(id)
}

// DetectError detects any possible errors in responses from Gremlin Server and generates an error for each code
func extractError(r interfaces.Response) error {
switch r.Status.Code {
case interfaces.StatusSuccess, interfaces.StatusNoContent, interfaces.StatusPartialContent:
return nil
case interfaces.StatusUnauthorized:
return fmt.Errorf("UNAUTHORIZED - Response Message: %s", r.Status.Message)
case interfaces.StatusAuthenticate:
return fmt.Errorf("AUTHENTICATE - Response Message: %s", r.Status.Message)
case interfaces.StatusMalformedRequest:
return fmt.Errorf("MALFORMED REQUEST - Response Message: %s", r.Status.Message)
case interfaces.StatusInvalidRequestArguments:
return fmt.Errorf("INVALID REQUEST ARGUMENTS - Response Message: %s", r.Status.Message)
case interfaces.StatusServerError:
return fmt.Errorf("SERVER ERROR - Response Message: %s", r.Status.Message)
case interfaces.StatusScriptEvaluationError:
return fmt.Errorf("SCRIPT EVALUATION ERROR - Response Message: %s", r.Status.Message)
case interfaces.StatusServerTimeout:
return fmt.Errorf("SERVER TIMEOUT - Response Message: %s", r.Status.Message)
case interfaces.StatusServerSerializationError:
return fmt.Errorf("SERVER SERIALIZATION ERROR - Response Message: %s", r.Status.Message)
default:
return fmt.Errorf("UNKNOWN ERROR - Response Message: %s", r.Status.Message)
}
}
2 changes: 1 addition & 1 deletion response_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,7 @@ func TestResponseErrorDetection(t *testing.T) {
Status: interfaces.Status{Code: co.code},
Result: interfaces.Result{},
}
err := dummyResponse.DetectError()
err := extractError(dummyResponse)
switch {
case co.code == 200:
if err != nil {
Expand Down

0 comments on commit 0f3eb1c

Please sign in to comment.