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 #ifndef ARK_WEB_URL_RESOURCE_RESPONSE_H_
17 #define ARK_WEB_URL_RESOURCE_RESPONSE_H_
18 #pragma once
19 
20 #include "ohos_nweb/include/ark_web_resource_ready_callback.h"
21 
22 #include "base/include/ark_web_types.h"
23 
24 namespace OHOS::ArkWeb {
25 
26 /*--ark web(source=webcore)--*/
27 class ArkWebUrlResourceResponse : public virtual ArkWebBaseRefCounted {
28 public:
29     /**
30      * @brief get input stream
31      *
32      * @return inputstream string
33      */
34     /*--ark web()--*/
35     virtual ArkWebString ResponseData() = 0;
36 
37     /**
38      * @brief set input stream
39      *
40      * @param input_stream set inputstream for example: fread(buf, 1, sizeof(buf),
41      *        file)
42      */
43     /*--ark web()--*/
44     virtual void PutResponseData(const ArkWebString& input_stream) = 0;
45 
46     /**
47      * @brief Get ReasonPhrase
48      *
49      * @return errorcode reason
50      */
51     /*--ark web()--*/
52     virtual ArkWebString ResponseStatus() = 0;
53 
54     /**
55      * @brief Get ResponseHeaders
56      *
57      * @return response headers
58      */
59     /*--ark web()--*/
60     virtual const ArkWebStringMap ResponseHeaders() = 0;
61 
62     /**
63      * @brief Set ResponseHeaders
64      *
65      * @param response_headers response header
66      */
67     /*--ark web()--*/
68     virtual void PutResponseHeaders(const ArkWebStringMap& response_headers) = 0;
69 
70     /*--ark web()--*/
71     virtual int32_t ResponseDataType() = 0;
72 
73     /**
74      * @brief Get mimetype
75      *
76      * @return mimetype The resource response's MIME type
77      */
78     /*--ark web()--*/
79     virtual ArkWebString ResponseMimeType() = 0;
80 
81     /**
82      * @brief Construct a resource response with the given parameters.
83      *
84      * @param mime_type mime_type{ "text/html" }
85      */
86     /*--ark web()--*/
87     virtual void PutResponseMimeType(const ArkWebString& mime_type) = 0;
88 
89     /**
90      * @brief get encoding
91      *
92      * @return encoding the resource response's encoding
93      */
94     /*--ark web()--*/
95     virtual ArkWebString ResponseEncoding() = 0;
96 
97     /**
98      * @brief Construct a resource response with the given parameters.
99      *
100      * @param encoding encoding { "utf-8" }
101      */
102     /*--ark web()--*/
103     virtual void PutResponseEncoding(const ArkWebString& encoding) = 0;
104 
105     /*--ark web()--*/
106     virtual bool ResponseDataStatus() = 0;
107 
108     /*--ark web()--*/
109     virtual void PutResponseDataStatus(bool is_data_ready) = 0;
110 
111     /**
112      * @brief Get status code
113      *
114      * @return status code
115      */
116     /*--ark web()--*/
117     virtual int ResponseStatusCode() = 0;
118 
119     /*--ark web()--*/
120     virtual ArkWebString ResponseResourceUrl() = 0;
121 
122     /*--ark web()--*/
123     virtual void PutResponseResourceUrl(const ArkWebString& url) = 0;
124 
125     /*--ark web()--*/
126     virtual int ResponseFileHandle() = 0;
127 
128     /*--ark web()--*/
129     virtual void PutResponseFileHandle(int fd) = 0;
130 
131     /*--ark web()--*/
132     virtual bool ResponseIsFileHandle() = 0;
133 
134     /**
135      * @brief Set StatusCode And ReasonPhrase
136      *
137      * @param status_code status code
138      * @param reasonphrase reason phrase
139      */
140     /*--ark web()--*/
141     virtual void PutResponseStateAndStatuscode(int status_code, const ArkWebString& reason_phrase) = 0;
142 
143     /*--ark web()--*/
144     virtual void PutResponseReadyCallback(ArkWebRefPtr<ArkWebResourceReadyCallback> callback) = 0;
145 
146     /*--ark web()--*/
147     virtual void PutResponseDataBuffer(char* buffer, size_t bufferSize) = 0;
148 
149     /*--ark web()--*/
150     virtual char* GetResponseDataBuffer() = 0;
151 
152     /*--ark web()--*/
153     virtual size_t GetResponseDataBufferSize() = 0;
154 };
155 
156 } // namespace OHOS::ArkWeb
157 
158 #endif // ARK_WEB_URL_RESOURCE_RESPONSE_H_
159