1 /* 2 * Copyright 1999-2019 Alibaba Cloud All rights reserved. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #ifndef CORE_INCLUDE_ALIBABACLOUD_CORE_COMMONREQUEST_H_ 18 #define CORE_INCLUDE_ALIBABACLOUD_CORE_COMMONREQUEST_H_ 19 20 #include "CoreExport.h" 21 #include "HttpRequest.h" 22 #include "ServiceRequest.h" 23 #include <string> 24 25 namespace AlibabaCloud { 26 class ALIBABACLOUD_CORE_EXPORT CommonRequest : public ServiceRequest { 27 public: 28 enum RequestPattern { RpcPattern, RoaPattern }; 29 30 explicit CommonRequest(RequestPattern pattern = RpcPattern); 31 ~CommonRequest(); 32 33 std::string domain() const; 34 ParameterValueType headerParameter(const ParameterNameType &name) const; 35 ParameterCollection headerParameters() const; 36 HttpRequest::Method httpMethod() const; 37 ParameterValueType queryParameter(const ParameterNameType &name) const; 38 ParameterCollection queryParameters() const; 39 using ServiceRequest::setContent; 40 void setDomain(const std::string &domain); 41 void setHeaderParameter(const ParameterNameType &name, 42 const ParameterValueType &value); 43 void setHttpMethod(HttpRequest::Method method); 44 void setQueryParameter(const ParameterNameType &name, 45 const ParameterValueType &value); 46 using ServiceRequest::setResourcePath; 47 void setRequestPattern(RequestPattern pattern); 48 using ServiceRequest::setScheme; 49 using ServiceRequest::setVersion; 50 RequestPattern requestPattern() const; 51 52 protected: 53 using ServiceRequest::product; 54 55 private: 56 std::string domain_; 57 RequestPattern requestPattern_; 58 ParameterCollection queryParams_; 59 ParameterCollection headerParams_; 60 HttpRequest::Method httpMethod_; 61 }; 62 } // namespace AlibabaCloud 63 #endif // CORE_INCLUDE_ALIBABACLOUD_CORE_COMMONREQUEST_H_ 64