You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
1.5 KiB

  1. package requests
  2. import (
  3. "fmt"
  4. "golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/utils"
  5. "io"
  6. "strings"
  7. )
  8. type RpcRequest struct {
  9. *baseRequest
  10. }
  11. func (request *RpcRequest) init() {
  12. request.baseRequest = defaultBaseRequest()
  13. request.Method = POST
  14. }
  15. func (request *RpcRequest) BuildUrl() string {
  16. var hostname string
  17. if request.Domain.Func == nil {
  18. hostname = request.Domain.Default
  19. } else if hostname = request.Domain.Func(request.GetEnv()); hostname == "" {
  20. hostname = request.Domain.Default
  21. }
  22. url := fmt.Sprintf("%s://%s", strings.ToLower(request.Scheme), hostname)
  23. if len(request.Port) > 0 {
  24. url = fmt.Sprintf("%s:%s", url, request.Port)
  25. }
  26. return url + request.BuildQueries()
  27. }
  28. func (request *RpcRequest) GetStyle() string {
  29. return RPC
  30. }
  31. func (request *RpcRequest) BuildQueries() string {
  32. path := strings.TrimLeft(strings.TrimSpace(request.GetActionName()), "/")
  33. request.queries = "/" + path + "?" + utils.GetUrlFormedMap(request.QueryParams)
  34. return request.queries
  35. }
  36. func (request *RpcRequest) GetActionName() string {
  37. return request.actionName
  38. }
  39. func (request *RpcRequest) InitWithApiInfo(domain Host, version, urlPath string) {
  40. request.init()
  41. request.SetDomain(domain)
  42. request.version = version
  43. request.actionName = urlPath
  44. }
  45. func (request *RpcRequest) GetBodyReader() io.Reader {
  46. if request.FormParams != nil && len(request.FormParams) > 0 {
  47. formString := utils.GetUrlFormedMap(request.FormParams)
  48. return strings.NewReader(formString)
  49. } else {
  50. return strings.NewReader("")
  51. }
  52. }