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_impl.h"
17 
18 #include "ohos_nweb/bridge/ark_web_resource_ready_callback_wrapper.h"
19 
20 #include "base/bridge/ark_web_bridge_macros.h"
21 
22 namespace OHOS::ArkWeb {
23 
ArkWebUrlResourceResponseImpl(std::shared_ptr<OHOS::NWeb::NWebUrlResourceResponse> nweb_url_resource_response)24 ArkWebUrlResourceResponseImpl::ArkWebUrlResourceResponseImpl(
25     std::shared_ptr<OHOS::NWeb::NWebUrlResourceResponse> nweb_url_resource_response)
26     : nweb_url_resource_response_(nweb_url_resource_response)
27 {}
28 
ResponseData()29 ArkWebString ArkWebUrlResourceResponseImpl::ResponseData()
30 {
31     return ArkWebStringClassToStruct(nweb_url_resource_response_->ResponseData());
32 }
33 
PutResponseData(const ArkWebString & input_stream)34 void ArkWebUrlResourceResponseImpl::PutResponseData(const ArkWebString& input_stream)
35 {
36     nweb_url_resource_response_->PutResponseData(ArkWebStringStructToClass(input_stream));
37 }
38 
ResponseStatus()39 ArkWebString ArkWebUrlResourceResponseImpl::ResponseStatus()
40 {
41     return ArkWebStringClassToStruct(nweb_url_resource_response_->ResponseStatus());
42 }
43 
ResponseHeaders()44 const ArkWebStringMap ArkWebUrlResourceResponseImpl::ResponseHeaders()
45 {
46     return ArkWebStringMapClassToStruct(nweb_url_resource_response_->ResponseHeaders());
47 }
48 
PutResponseHeaders(const ArkWebStringMap & response_headers)49 void ArkWebUrlResourceResponseImpl::PutResponseHeaders(const ArkWebStringMap& response_headers)
50 {
51     nweb_url_resource_response_->PutResponseHeaders(ArkWebStringMapStructToClass(response_headers));
52 }
53 
ResponseDataType()54 int32_t ArkWebUrlResourceResponseImpl::ResponseDataType()
55 {
56     return static_cast<int32_t>(nweb_url_resource_response_->ResponseDataType());
57 }
58 
ResponseMimeType()59 ArkWebString ArkWebUrlResourceResponseImpl::ResponseMimeType()
60 {
61     return ArkWebStringClassToStruct(nweb_url_resource_response_->ResponseMimeType());
62 }
63 
PutResponseMimeType(const ArkWebString & mime_type)64 void ArkWebUrlResourceResponseImpl::PutResponseMimeType(const ArkWebString& mime_type)
65 {
66     nweb_url_resource_response_->PutResponseMimeType(ArkWebStringStructToClass(mime_type));
67 }
68 
ResponseEncoding()69 ArkWebString ArkWebUrlResourceResponseImpl::ResponseEncoding()
70 {
71     return ArkWebStringClassToStruct(nweb_url_resource_response_->ResponseEncoding());
72 }
73 
PutResponseEncoding(const ArkWebString & encoding)74 void ArkWebUrlResourceResponseImpl::PutResponseEncoding(const ArkWebString& encoding)
75 {
76     nweb_url_resource_response_->PutResponseEncoding(ArkWebStringStructToClass(encoding));
77 }
78 
ResponseDataStatus()79 bool ArkWebUrlResourceResponseImpl::ResponseDataStatus()
80 {
81     return nweb_url_resource_response_->ResponseDataStatus();
82 }
83 
PutResponseDataStatus(bool is_data_ready)84 void ArkWebUrlResourceResponseImpl::PutResponseDataStatus(bool is_data_ready)
85 {
86     nweb_url_resource_response_->PutResponseDataStatus(is_data_ready);
87 }
88 
ResponseStatusCode()89 int ArkWebUrlResourceResponseImpl::ResponseStatusCode()
90 {
91     return nweb_url_resource_response_->ResponseStatusCode();
92 }
93 
ResponseResourceUrl()94 ArkWebString ArkWebUrlResourceResponseImpl::ResponseResourceUrl()
95 {
96     return ArkWebStringClassToStruct(nweb_url_resource_response_->ResponseResourceUrl());
97 }
98 
PutResponseResourceUrl(const ArkWebString & url)99 void ArkWebUrlResourceResponseImpl::PutResponseResourceUrl(const ArkWebString& url)
100 {
101     nweb_url_resource_response_->PutResponseResourceUrl(ArkWebStringStructToClass(url));
102 }
103 
ResponseFileHandle()104 int ArkWebUrlResourceResponseImpl::ResponseFileHandle()
105 {
106     return nweb_url_resource_response_->ResponseFileHandle();
107 }
108 
PutResponseFileHandle(int fd)109 void ArkWebUrlResourceResponseImpl::PutResponseFileHandle(int fd)
110 {
111     nweb_url_resource_response_->PutResponseFileHandle(fd);
112 }
113 
ResponseIsFileHandle()114 bool ArkWebUrlResourceResponseImpl::ResponseIsFileHandle()
115 {
116     return nweb_url_resource_response_->ResponseIsFileHandle();
117 }
118 
PutResponseStateAndStatuscode(int status_code,const ArkWebString & reason_phrase)119 void ArkWebUrlResourceResponseImpl::PutResponseStateAndStatuscode(int status_code, const ArkWebString& reason_phrase)
120 {
121     nweb_url_resource_response_->PutResponseStateAndStatuscode(status_code, ArkWebStringStructToClass(reason_phrase));
122 }
123 
PutResponseReadyCallback(ArkWebRefPtr<ArkWebResourceReadyCallback> callback)124 void ArkWebUrlResourceResponseImpl::PutResponseReadyCallback(ArkWebRefPtr<ArkWebResourceReadyCallback> callback)
125 {
126     if (CHECK_REF_PTR_IS_NULL(callback)) {
127         nweb_url_resource_response_->PutResponseReadyCallback(nullptr);
128         return;
129     }
130 
131     nweb_url_resource_response_->PutResponseReadyCallback(
132         std::make_shared<ArkWebResourceReadyCallbackWrapper>(callback));
133 }
134 
PutResponseDataBuffer(char * buffer,size_t bufferSize)135 void ArkWebUrlResourceResponseImpl::PutResponseDataBuffer(char* buffer, size_t bufferSize)
136 {
137     nweb_url_resource_response_->PutResponseDataBuffer(buffer, bufferSize);
138 }
139 
GetResponseDataBuffer()140 char* ArkWebUrlResourceResponseImpl::GetResponseDataBuffer()
141 {
142     return nweb_url_resource_response_->GetResponseDataBuffer();
143 }
144 
GetResponseDataBufferSize()145 size_t ArkWebUrlResourceResponseImpl::GetResponseDataBufferSize()
146 {
147     return nweb_url_resource_response_->GetResponseDataBufferSize();
148 }
149 
150 } // namespace OHOS::ArkWeb
151