config.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package http
  2. import (
  3. "v2ray.com/core/common/dice"
  4. )
  5. func pickString(arr []string) string {
  6. n := len(arr)
  7. if n == 0 {
  8. return ""
  9. }
  10. return arr[dice.Roll(n)]
  11. }
  12. func (this *RequestConfig) PickUri() string {
  13. return pickString(this.Uri)
  14. }
  15. func (this *RequestConfig) PickHeaders() []string {
  16. n := len(this.Header)
  17. if n == 0 {
  18. return nil
  19. }
  20. headers := make([]string, n)
  21. for idx, headerConfig := range this.Header {
  22. headerName := headerConfig.Name
  23. headerValue := pickString(headerConfig.Value)
  24. headers[idx] = headerName + ": " + headerValue
  25. }
  26. return headers
  27. }
  28. func (this *RequestConfig) GetVersion() string {
  29. return "HTTP/" + this.Version
  30. }
  31. func (this *ResponseConfig) PickHeaders() []string {
  32. n := len(this.Header)
  33. if n == 0 {
  34. return nil
  35. }
  36. headers := make([]string, n)
  37. for idx, headerConfig := range this.Header {
  38. headerName := headerConfig.Name
  39. headerValue := pickString(headerConfig.Value)
  40. headers[idx] = headerName + ": " + headerValue
  41. }
  42. return headers
  43. }
  44. func (this *ResponseConfig) GetVersion() string {
  45. return "HTTP/" + this.Version
  46. }