Skip to content
Snippets Groups Projects
Select Git revision
  • a9217017aeda3c03602a0bde2017543beaf36971
  • main default protected
  • trading_hours
  • refactor_trading_hours
  • audit_cleaning_cater_for_non_struct_fields
  • remove-info-logs
  • sl-refactor
  • 18-use-scan-for-param-values
  • 17-order-search-results
  • 4-simplify-framework-2
  • 1-http-error
  • v1.297.0
  • v1.296.0
  • v1.295.0
  • v1.294.0
  • v1.293.0
  • v1.292.0
  • v1.291.0
  • v1.290.0
  • v1.289.0
  • v1.288.0
  • v1.287.0
  • v1.286.0
  • v1.285.0
  • v1.284.0
  • v1.283.0
  • v1.282.0
  • v1.281.0
  • v1.280.0
  • v1.279.0
  • v1.278.0
31 results

responses.go

Blame
  • responses.go 4.10 KiB
    package responses
    
    import (
    	"encoding/json"
    	"net/http"
    
    	"gitlab.bob.co.za/bob-public-utils/bobgroup-go-utils/map_utils"
    
    	"gitlab.bob.co.za/bob-public-utils/bobgroup-go-utils/logs"
    	"gitlab.bob.co.za/bob-public-utils/bobgroup-go-utils/utils"
    
    	"github.com/aws/aws-lambda-go/events"
    )
    
    // =============================================================================
    // RESPONSE HELPER / CONVENIENCE FUNCTIONS
    // =============================================================================
    
    var ContentTypeJSONHeader = map[string]string{"Content-Type": "application/json"}
    
    // BadRequestResponse - invalid user input
    func BadRequestResponse(err error) (events.APIGatewayProxyResponse, error) {
    	return GenericResponse(http.StatusBadRequest, err.Error(), nil)
    }
    
    // NotFoundResponse - 404
    func NotFoundResponse(err error) (events.APIGatewayProxyResponse, error) {
    	return GenericResponse(http.StatusNotFound, err.Error(), nil)
    }
    
    func NoContent() (events.APIGatewayProxyResponse, error) {
    	return events.APIGatewayProxyResponse{
    		StatusCode: http.StatusNoContent,
    		Headers:    map_utils.MergeMaps(utils.CorsHeaders(), ContentTypeJSONHeader),
    	}, nil
    }
    
    func TooManyRequests(message string) (events.APIGatewayProxyResponse, error) {
    
    	response := map[string]string{
    		"message": message,
    	}
    	responseJson, err := json.Marshal(response)
    	if err != nil {
    		logs.Info("Could not create error message for ", message)
    	}
    
    	return events.APIGatewayProxyResponse{
    		StatusCode: http.StatusTooManyRequests,
    		Headers:    map_utils.MergeMaps(utils.CorsHeaders(), ContentTypeJSONHeader),
    		Body:       string(responseJson),
    	}, nil
    }
    
    func LockedResponse(err error) (events.APIGatewayProxyResponse, error) {
    	return GenericResponse(http.StatusLocked, err.Error(), nil)
    }
    
    // InternalServerErrorResponse - something went wrong
    func InternalServerErrorResponse(err error) (events.APIGatewayProxyResponse, error) {
    	return GenericResponse(http.StatusInternalServerError, err.Error(), nil)
    }
    
    // SuccessResponse - everything worked
    func SuccessResponse(body string) (events.APIGatewayProxyResponse, error) {
    	return GenericResponse(http.StatusOK, body, nil)
    }
    
    // JSONSuccessResponse - try to JSONify any struct and send it as the body of a successful response
    // Return an internal server error if JSON marshalling fails