github.com/kumasuke120/mockuma@v1.1.9/internal/server/policy.go (about)

     1  package server
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/kumasuke120/mockuma/internal/mckmaps"
     7  	"github.com/kumasuke120/mockuma/internal/myhttp"
     8  )
     9  
    10  // predefined policies
    11  var (
    12  	pNotFound            = newJSONPolicy(myhttp.StatusNotFound, "Not Found")
    13  	pNoPolicyMatched     = newJSONPolicy(myhttp.StatusBadRequest, "No policy matched")
    14  	pMethodNotAllowed    = newJSONPolicy(myhttp.StatusMethodNotAllowed, "Method Not Allowed")
    15  	pInternalServerError = newJSONPolicy(myhttp.StatusInternalServerError, "Internal Server Error")
    16  	pBadGateway          = newJSONPolicy(myhttp.StatusBadGateway, "Bad Gateway")
    17  	pEmptyOK             = &mckmaps.Policy{
    18  		CmdType: mckmaps.CmdTypeReturns,
    19  		Returns: &mckmaps.Returns{StatusCode: myhttp.StatusOK},
    20  	}
    21  )
    22  
    23  func newJSONPolicy(statusCode myhttp.StatusCode, message string) *mckmaps.Policy {
    24  	return &mckmaps.Policy{
    25  		CmdType: mckmaps.CmdTypeReturns,
    26  		Returns: &mckmaps.Returns{
    27  			StatusCode: statusCode,
    28  			Headers: []*mckmaps.NameValuesPair{
    29  				{Name: myhttp.HeaderContentType, Values: []string{myhttp.ContentTypeJSON}},
    30  			},
    31  			Body: []byte(fmt.Sprintf(`{"statusCode": %d, "message": "%s"}`, statusCode, message)),
    32  		},
    33  	}
    34  }
    35  
    36  func newForwardPolicy(uri string) *mckmaps.Policy {
    37  	return &mckmaps.Policy{
    38  		CmdType: mckmaps.CmdTypeForwards,
    39  		Forwards: &mckmaps.Forwards{
    40  			Path: uri,
    41  		},
    42  	}
    43  }