1 /* 2 * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef COMMUNICATIONNETSTACK_HTTP_CLIENT_TASK_H 17 #define COMMUNICATIONNETSTACK_HTTP_CLIENT_TASK_H 18 #include <memory> 19 #include <functional> 20 #include "gmock/gmock.h" 21 #include "http_client_error.h" 22 #include "http_client_request.h" 23 #include "http_client_response.h" 24 25 namespace OHOS::NetStack::HttpClient { 26 #define DATA_BLOCK (10 * 1024) 27 class HttpClientTask : public std::enable_shared_from_this<HttpClientTask> { 28 public: HttpClientTask(const HttpClientRequest & request)29 explicit HttpClientTask(const HttpClientRequest& request) 30 { 31 GTEST_LOG_(INFO) << "MOCK HttpClientTask"; 32 request_ = request; 33 }; ~HttpClientTask()34 virtual ~HttpClientTask(){}; Start()35 virtual bool Start() 36 { 37 if (success_) { 38 if (onSucceeded_) { 39 onSucceeded_(request_, response_); 40 } 41 } 42 if (failed_) { 43 if (onFailed_) { 44 onFailed_(request_, response_, error_); 45 } 46 } 47 if (receive_) { 48 if (onDataReceive_) { 49 uint8_t* fake; 50 onDataReceive_(request_, fake, DATA_BLOCK); 51 onDataReceive_(request_, fake, DATA_BLOCK); 52 onDataReceive_(request_, fake, DATA_BLOCK); 53 } 54 } 55 if (cancel_) { 56 if (onCanceled_) { 57 onCanceled_(request_, response_); 58 } 59 } 60 return true; 61 }; Cancel()62 virtual void Cancel() 63 { 64 GTEST_LOG_(INFO) << "MOCK Cancel"; 65 if (onCanceled_) { 66 onCanceled_(request_, response_); 67 } 68 }; OnSuccess(const std::function<void (const HttpClientRequest & request,const HttpClientResponse & response)> & onSucceeded)69 virtual void OnSuccess( 70 const std::function<void(const HttpClientRequest& request, const HttpClientResponse& response)>& onSucceeded) 71 { 72 GTEST_LOG_(INFO) << "MOCK OnSuccess"; 73 onSucceeded_ = onSucceeded; 74 }; 75 OnCancel(const std::function<void (const HttpClientRequest & request,const HttpClientResponse & response)> & onCanceled)76 virtual void OnCancel( 77 const std::function<void(const HttpClientRequest& request, const HttpClientResponse& response)>& onCanceled) 78 { 79 GTEST_LOG_(INFO) << "MOCK OnCancel"; 80 onCanceled_ = onCanceled; 81 }; 82 OnFail(const std::function<void (const HttpClientRequest & request,const HttpClientResponse & response,const HttpClientError & error)> & onFailed)83 virtual void OnFail(const std::function<void(const HttpClientRequest& request, const HttpClientResponse& response, 84 const HttpClientError& error)>& onFailed) 85 { 86 GTEST_LOG_(INFO) << "MOCK OnFail"; 87 onFailed_ = onFailed; 88 }; 89 OnDataReceive(const std::function<void (const HttpClientRequest & request,const uint8_t * data,size_t length)> & onDataReceive)90 virtual void OnDataReceive( 91 const std::function<void(const HttpClientRequest& request, const uint8_t* data, size_t length)>& onDataReceive) 92 { 93 GTEST_LOG_(INFO) << "MOCK OnDataReceive"; 94 onDataReceive_ = onDataReceive; 95 }; SetResponse(const HttpClientResponse & response)96 virtual void SetResponse(const HttpClientResponse& response) 97 { 98 response_ = response; 99 }; 100 static void MockStatus(bool success = true, bool failed = false, bool receive = false, bool cancel = false) 101 { 102 success_ = success; 103 failed_ = failed; 104 receive_ = receive; 105 cancel_ = cancel; 106 } 107 MockResponse(HttpClientResponse & response)108 static void MockResponse(HttpClientResponse& response) 109 { 110 response_ = response; 111 } 112 113 private: 114 inline static bool success_ = true; 115 inline static bool failed_ = false; 116 inline static bool receive_ = false; 117 inline static bool cancel_ = false; 118 HttpClientRequest request_; 119 inline static HttpClientResponse response_; 120 HttpClientError error_; 121 std::function<void(const HttpClientRequest& request, const HttpClientResponse& response)> onSucceeded_; 122 std::function<void(const HttpClientRequest& request, const HttpClientResponse& response)> onCanceled_; 123 std::function<void( 124 const HttpClientRequest& request, const HttpClientResponse& response, const HttpClientError& error)> 125 onFailed_; 126 std::function<void(const HttpClientRequest& request, const uint8_t* data, size_t length)> onDataReceive_; 127 }; 128 } 129 130 #endif // APP_DOMAIN_VERIFY_HTTP_CLIENT_TASK_H 131