script.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package adapter
  2. import (
  3. "context"
  4. "net/http"
  5. "sync"
  6. "time"
  7. )
  8. type ScriptManager interface {
  9. Lifecycle
  10. Scripts() []Script
  11. Script(name string) (Script, bool)
  12. SurgeCache() *SurgeInMemoryCache
  13. }
  14. type SurgeInMemoryCache struct {
  15. sync.RWMutex
  16. Data map[string]string
  17. }
  18. type Script interface {
  19. Type() string
  20. Tag() string
  21. StartContext(ctx context.Context, startContext *HTTPStartContext) error
  22. PostStart() error
  23. Close() error
  24. }
  25. type SurgeScript interface {
  26. Script
  27. ExecuteGeneric(ctx context.Context, scriptType string, timeout time.Duration, arguments []string) error
  28. ExecuteHTTPRequest(ctx context.Context, timeout time.Duration, request *http.Request, body []byte, binaryBody bool, arguments []string) (*HTTPRequestScriptResult, error)
  29. ExecuteHTTPResponse(ctx context.Context, timeout time.Duration, request *http.Request, response *http.Response, body []byte, binaryBody bool, arguments []string) (*HTTPResponseScriptResult, error)
  30. }
  31. type HTTPRequestScriptResult struct {
  32. URL string
  33. Headers http.Header
  34. Body []byte
  35. Response *HTTPRequestScriptResponse
  36. }
  37. type HTTPRequestScriptResponse struct {
  38. Status int
  39. Headers http.Header
  40. Body []byte
  41. }
  42. type HTTPResponseScriptResult struct {
  43. Status int
  44. Headers http.Header
  45. Body []byte
  46. }