1 /*
2  * Copyright (c) 2024 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 #include "ohos_nweb/bridge/ark_web_url_resource_response_wrapper.h"
17 
18 #include "ohos_nweb/bridge/ark_web_resource_ready_callback_impl.h"
19 
20 #include "base/bridge/ark_web_bridge_macros.h"
21 
22 namespace OHOS::ArkWeb {
23 
ArkWebUrlResourceResponseWrapper(ArkWebRefPtr<ArkWebUrlResourceResponse> ark_web_url_resource_response)24 ArkWebUrlResourceResponseWrapper::ArkWebUrlResourceResponseWrapper(
25     ArkWebRefPtr<ArkWebUrlResourceResponse> ark_web_url_resource_response)
26     : ark_web_url_resource_response_(ark_web_url_resource_response)
27 {}
28 
ResponseData()29 std::string ArkWebUrlResourceResponseWrapper::ResponseData()
30 {
31     ArkWebString stData = ark_web_url_resource_response_->ResponseData();
32 
33     std::string objData = ArkWebStringStructToClass(stData);
34     ArkWebStringStructRelease(stData);
35     return objData;
36 }
37 
PutResponseData(const std::string & input_stream)38 void ArkWebUrlResourceResponseWrapper::PutResponseData(const std::string& input_stream)
39 {
40     ArkWebString stData = ArkWebStringClassToStruct(input_stream);
41 
42     ark_web_url_resource_response_->PutResponseData(stData);
43 
44     ArkWebStringStructRelease(stData);
45 }
46 
ResponseStatus()47 std::string ArkWebUrlResourceResponseWrapper::ResponseStatus()
48 {
49     ArkWebString stStatus = ark_web_url_resource_response_->ResponseStatus();
50 
51     std::string objStatus = ArkWebStringStructToClass(stStatus);
52     ArkWebStringStructRelease(stStatus);
53     return objStatus;
54 }
55 
ResponseHeaders()56 std::map<std::string, std::string> ArkWebUrlResourceResponseWrapper::ResponseHeaders()
57 {
58     ArkWebStringMap stHeaders = ark_web_url_resource_response_->ResponseHeaders();
59 
60     std::map<std::string, std::string> objHeaders = ArkWebStringMapStructToClass(stHeaders);
61     ArkWebStringMapStructRelease(stHeaders);
62     return objHeaders;
63 }
64 
PutResponseHeaders(const std::map<std::string,std::string> & response_headers)65 void ArkWebUrlResourceResponseWrapper::PutResponseHeaders(const std::map<std::string, std::string>& response_headers)
66 {
67     ArkWebStringMap stHeaders = ArkWebStringMapClassToStruct(response_headers);
68 
69     ark_web_url_resource_response_->PutResponseHeaders(stHeaders);
70 
71     ArkWebStringMapStructRelease(stHeaders);
72 }
73 
ResponseDataType()74 ArkWebResponseDataType ArkWebUrlResourceResponseWrapper::ResponseDataType()
75 {
76     return static_cast<ArkWebResponseDataType>(ark_web_url_resource_response_->ResponseDataType());
77 }
78 
ResponseMimeType()79 std::string ArkWebUrlResourceResponseWrapper::ResponseMimeType()
80 {
81     ArkWebString stMimeType = ark_web_url_resource_response_->ResponseMimeType();
82 
83     std::string objMimeType = ArkWebStringStructToClass(stMimeType);
84     ArkWebStringStructRelease(stMimeType);
85     return objMimeType;
86 }
87 
PutResponseMimeType(const std::string & mime_type)88 void ArkWebUrlResourceResponseWrapper::PutResponseMimeType(const std::string& mime_type)
89 {
90     ArkWebString stMimeType = ArkWebStringClassToStruct(mime_type);
91 
92     ark_web_url_resource_response_->PutResponseMimeType(stMimeType);
93 
94     ArkWebStringStructRelease(stMimeType);
95 }
96 
ResponseEncoding()97 std::string ArkWebUrlResourceResponseWrapper::ResponseEncoding()
98 {
99     ArkWebString stEncoding = ark_web_url_resource_response_->ResponseEncoding();
100 
101     std::string objEncoding = ArkWebStringStructToClass(stEncoding);
102     ArkWebStringStructRelease(stEncoding);
103     return objEncoding;
104 }
105 
PutResponseEncoding(const std::string & encoding)106 void ArkWebUrlResourceResponseWrapper::PutResponseEncoding(const std::string& encoding)
107 {
108     ArkWebString stEncoding = ArkWebStringClassToStruct(encoding);
109 
110     ark_web_url_resource_response_->PutResponseEncoding(stEncoding);
111 
112     ArkWebStringStructRelease(stEncoding);
113 }
114 
ResponseDataStatus()115 bool ArkWebUrlResourceResponseWrapper::ResponseDataStatus()
116 {
117     return ark_web_url_resource_response_->ResponseDataStatus();
118 }
119 
PutResponseDataStatus(bool is_data_ready)120 void ArkWebUrlResourceResponseWrapper::PutResponseDataStatus(bool is_data_ready)
121 {
122     ark_web_url_resource_response_->PutResponseDataStatus(is_data_ready);
123 }
124 
ResponseStatusCode()125 int ArkWebUrlResourceResponseWrapper::ResponseStatusCode()
126 {
127     return ark_web_url_resource_response_->ResponseStatusCode();
128 }
129 
ResponseResourceUrl()130 std::string ArkWebUrlResourceResponseWrapper::ResponseResourceUrl()
131 {
132     ArkWebString stUrl = ark_web_url_resource_response_->ResponseResourceUrl();
133 
134     std::string objUrl = ArkWebStringStructToClass(stUrl);
135     ArkWebStringStructRelease(stUrl);
136     return objUrl;
137 }
138 
PutResponseResourceUrl(const std::string & url)139 void ArkWebUrlResourceResponseWrapper::PutResponseResourceUrl(const std::string& url)
140 {
141     ArkWebString stUrl = ArkWebStringClassToStruct(url);
142 
143     ark_web_url_resource_response_->PutResponseResourceUrl(stUrl);
144 
145     ArkWebStringStructRelease(stUrl);
146 }
147 
ResponseFileHandle()148 int ArkWebUrlResourceResponseWrapper::ResponseFileHandle()
149 {
150     return ark_web_url_resource_response_->ResponseFileHandle();
151 }
152 
PutResponseFileHandle(int fd)153 void ArkWebUrlResourceResponseWrapper::PutResponseFileHandle(int fd)
154 {
155     ark_web_url_resource_response_->PutResponseFileHandle(fd);
156 }
157 
ResponseIsFileHandle()158 bool ArkWebUrlResourceResponseWrapper::ResponseIsFileHandle()
159 {
160     return ark_web_url_resource_response_->ResponseIsFileHandle();
161 }
162 
PutResponseStateAndStatuscode(int status_code,const std::string & reason_phrase)163 void ArkWebUrlResourceResponseWrapper::PutResponseStateAndStatuscode(int status_code, const std::string& reason_phrase)
164 {
165     ArkWebString stReasonPhrase = ArkWebStringClassToStruct(reason_phrase);
166 
167     ark_web_url_resource_response_->PutResponseStateAndStatuscode(status_code, stReasonPhrase);
168 
169     ArkWebStringStructRelease(stReasonPhrase);
170 }
171 
PutResponseReadyCallback(std::shared_ptr<OHOS::NWeb::NWebResourceReadyCallback> callback)172 void ArkWebUrlResourceResponseWrapper::PutResponseReadyCallback(
173     std::shared_ptr<OHOS::NWeb::NWebResourceReadyCallback> callback)
174 {
175     if (CHECK_SHARED_PTR_IS_NULL(callback)) {
176         ark_web_url_resource_response_->PutResponseReadyCallback(nullptr);
177         return;
178     }
179 
180     ark_web_url_resource_response_->PutResponseReadyCallback(new ArkWebResourceReadyCallbackImpl(callback));
181 }
182 
PutResponseDataBuffer(char * buffer,size_t bufferSize)183 void ArkWebUrlResourceResponseWrapper::PutResponseDataBuffer(char* buffer, size_t bufferSize)
184 {
185     ark_web_url_resource_response_->PutResponseDataBuffer(buffer, bufferSize);
186 }
187 
GetResponseDataBuffer()188 char* ArkWebUrlResourceResponseWrapper::GetResponseDataBuffer()
189 {
190     return ark_web_url_resource_response_->GetResponseDataBuffer();
191 }
192 
GetResponseDataBufferSize()193 size_t ArkWebUrlResourceResponseWrapper::GetResponseDataBufferSize()
194 {
195     return ark_web_url_resource_response_->GetResponseDataBufferSize();
196 }
197 
198 } // namespace OHOS::ArkWeb
199