Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pre request and Post request for GRPC and REST #75

Merged
merged 14 commits into from
Sep 23, 2024
11 changes: 11 additions & 0 deletions internal/domain/grpc.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ type GRPCRequestSpec struct {
Settings Settings `yaml:"settings"`
Body string `yaml:"body"`
Services []GRPCService `yaml:"services"`

PreRequest PreRequest `yaml:"preRequest"`
PostRequest PostRequest `yaml:"postRequest"`
}

type GRPCService struct {
Expand Down Expand Up @@ -137,6 +140,14 @@ func CompareGRPCRequestSpecs(a, b *GRPCRequestSpec) bool {
return false
}

if !ComparePreRequest(a.PreRequest, b.PreRequest) {
return false
}

if !ComparePostRequest(a.PostRequest, b.PostRequest) {
return false
}

return true
}

Expand Down
95 changes: 79 additions & 16 deletions internal/domain/requests.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,13 @@ const (
RequestBodyTypeBinary = "binary"
RequestBodyTypeUrlEncoded = "urlEncoded"

PrePostTypeNone = "none"
PrePostTypePython = "python"
PrePostTypeShell = "ssh"
PrePostTypeSSHTunnel = "sshTunnel"
PrePostTypeK8sTunnel = "k8sTunnel"
PrePostTypeNone = "none"
PrePostTypeTriggerRequest = "triggerRequest"
PrePostTypeSetEnv = "setEnv"
PrePostTypePython = "python"
PrePostTypeShell = "ssh"
PrePostTypeSSHTunnel = "sshTunnel"
PrePostTypeK8sTunnel = "k8sTunnel"
)

type Request struct {
Expand All @@ -57,6 +59,48 @@ type RequestSpec struct {
HTTP *HTTPRequestSpec `yaml:"http,omitempty"`
}

func (r RequestSpec) GetGRPC() *GRPCRequestSpec {
if r.GRPC != nil {
return r.GRPC
}
return nil
}

func (r RequestSpec) GetHTTP() *HTTPRequestSpec {
if r.HTTP != nil {
return r.HTTP
}
return nil
}

func (r *GRPCRequestSpec) GetPreRequest() PreRequest {
if r != nil {
return r.PreRequest
}
return PreRequest{}
}

func (r *GRPCRequestSpec) GetPostRequest() PostRequest {
if r != nil {
return r.PostRequest
}
return PostRequest{}
}

func (r *HTTPRequestSpec) GetPreRequest() PreRequest {
if r != nil {
return r.Request.PreRequest
}
return PreRequest{}
}

func (r *HTTPRequestSpec) GetPostRequest() PostRequest {
if r != nil {
return r.Request.PostRequest
}
return PostRequest{}
}

type LastUsedEnvironment struct {
ID string `yaml:"id"`
Name string `yaml:"name"`
Expand Down Expand Up @@ -133,16 +177,13 @@ type PreRequest struct {

SShTunnel *SShTunnel `yaml:"sshTunnel,omitempty"`
KubernetesTunnel *KubernetesTunnel `yaml:"kubernetesTunnel,omitempty"`
TriggerRequest *TriggerRequest `yaml:"triggerRequest,omitempty"`
}

const (
PostRequestTypeNone = "none"
PostRequestTypeSetEnv = "setEnv"
PostRequestTypePythonScript = "pythonScript"
PostRequestTypeK8sTunnel = "k8sTunnel"
PostRequestTypeSSHTunnel = "sshTunnel"
PostRequestTypeShellScript = "shellScript"
)
type TriggerRequest struct {
CollectionID string `yaml:"collectionID"`
RequestID string `yaml:"requestID"`
}

type PostRequest struct {
Type string `yaml:"type"`
Expand All @@ -151,9 +192,11 @@ type PostRequest struct {
}

const (
PostRequestSetFromResponseHeader = "responseHeader"
PostRequestSetFromResponseBody = "responseBody"
PostRequestSetFromResponseCookie = "responseCookie"
PostRequestSetFromResponseHeader = "responseHeader"
PostRequestSetFromResponseBody = "responseBody"
PostRequestSetFromResponseCookie = "responseCookie"
PostRequestSetFromResponseMetaData = "responseMetaData"
PostRequestSetFromResponseTrailers = "responseTrailers"
)

type PostRequestSet struct {
Expand Down Expand Up @@ -295,6 +338,10 @@ func ComparePreRequest(a, b PreRequest) bool {
return false
}

if !CompareTriggerRequest(a.TriggerRequest, b.TriggerRequest) {
return false
}

return true
}

Expand Down Expand Up @@ -324,6 +371,22 @@ func CompareSShTunnel(a, b *SShTunnel) bool {
return true
}

func CompareTriggerRequest(a, b *TriggerRequest) bool {
if a == nil && b == nil {
return true
}

if a == nil || b == nil {
return false
}

if a.CollectionID != b.CollectionID || a.RequestID != b.RequestID {
return false
}

return true
}

func CompareKubernetesTunnel(a, b *KubernetesTunnel) bool {
if a == nil && b == nil {
return true
Expand Down
Loading
Loading