| 
									
										
										
										
											2020-08-04 00:51:19 +08:00
										 |  |  | package requests | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-05 12:14:49 +08:00
										 |  |  | import ( | 
					
						
							| 
									
										
										
										
											2020-08-05 17:01:10 +08:00
										 |  |  | 	"fmt" | 
					
						
							| 
									
										
										
										
											2020-08-05 12:14:49 +08:00
										 |  |  | 	"golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/utils" | 
					
						
							|  |  |  | 	"io" | 
					
						
							|  |  |  | 	"strings" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-06 12:15:51 +08:00
										 |  |  | type RpcRequest struct { | 
					
						
							| 
									
										
										
										
											2020-08-04 00:51:19 +08:00
										 |  |  | 	*baseRequest | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2020-08-04 11:22:37 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-06 12:15:51 +08:00
										 |  |  | func (request *RpcRequest) init() { | 
					
						
							| 
									
										
										
										
											2020-08-04 12:23:34 +08:00
										 |  |  | 	request.baseRequest = defaultBaseRequest() | 
					
						
							| 
									
										
										
										
											2024-10-30 17:49:15 +08:00
										 |  |  | 	request.baseRequest.AddHeaderParam("Content-Type", Form) | 
					
						
							| 
									
										
										
										
											2020-08-04 12:23:34 +08:00
										 |  |  | 	request.Method = POST | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-06 12:15:51 +08:00
										 |  |  | func (request *RpcRequest) BuildUrl() string { | 
					
						
							| 
									
										
										
										
											2020-09-23 20:23:35 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	var hostname string | 
					
						
							|  |  |  | 	if request.Domain.Func == nil { | 
					
						
							|  |  |  | 		hostname = request.Domain.Default | 
					
						
							|  |  |  | 	} else if hostname = request.Domain.Func(request.GetEnv()); hostname == "" { | 
					
						
							|  |  |  | 		hostname = request.Domain.Default | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	url := fmt.Sprintf("%s://%s", strings.ToLower(request.Scheme), hostname) | 
					
						
							| 
									
										
										
										
											2020-08-05 17:01:10 +08:00
										 |  |  | 	if len(request.Port) > 0 { | 
					
						
							|  |  |  | 		url = fmt.Sprintf("%s:%s", url, request.Port) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return url + request.BuildQueries() | 
					
						
							| 
									
										
										
										
											2020-08-04 11:22:37 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-23 12:14:23 +08:00
										 |  |  | func (request *RpcRequest) GetStyle() string { | 
					
						
							|  |  |  | 	return RPC | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-06 12:15:51 +08:00
										 |  |  | func (request *RpcRequest) BuildQueries() string { | 
					
						
							| 
									
										
										
										
											2020-08-05 17:01:10 +08:00
										 |  |  | 	path := strings.TrimLeft(strings.TrimSpace(request.GetActionName()), "/") | 
					
						
							|  |  |  | 	request.queries = "/" + path + "?" + utils.GetUrlFormedMap(request.QueryParams) | 
					
						
							|  |  |  | 	return request.queries | 
					
						
							| 
									
										
										
										
											2020-08-04 11:22:37 +08:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2020-08-04 12:23:34 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-06 12:15:51 +08:00
										 |  |  | func (request *RpcRequest) GetActionName() string { | 
					
						
							| 
									
										
										
										
											2020-08-04 12:23:34 +08:00
										 |  |  | 	return request.actionName | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-23 20:23:35 +08:00
										 |  |  | func (request *RpcRequest) InitWithApiInfo(domain Host, version, urlPath string) { | 
					
						
							| 
									
										
										
										
											2020-08-04 12:23:34 +08:00
										 |  |  | 	request.init() | 
					
						
							| 
									
										
										
										
											2020-08-05 17:01:10 +08:00
										 |  |  | 	request.SetDomain(domain) | 
					
						
							| 
									
										
										
										
											2020-08-04 12:23:34 +08:00
										 |  |  | 	request.version = version | 
					
						
							| 
									
										
										
										
											2020-08-05 17:01:10 +08:00
										 |  |  | 	request.actionName = urlPath | 
					
						
							| 
									
										
										
										
											2020-08-04 12:23:34 +08:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2020-08-05 12:14:49 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-06 12:15:51 +08:00
										 |  |  | func (request *RpcRequest) GetBodyReader() io.Reader { | 
					
						
							| 
									
										
										
										
											2020-08-05 12:14:49 +08:00
										 |  |  | 	if request.FormParams != nil && len(request.FormParams) > 0 { | 
					
						
							|  |  |  | 		formString := utils.GetUrlFormedMap(request.FormParams) | 
					
						
							|  |  |  | 		return strings.NewReader(formString) | 
					
						
							|  |  |  | 	} else { | 
					
						
							|  |  |  | 		return strings.NewReader("") | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } |