From b08b9e3d92f5ff6c023d1906219bbb77ced6436d Mon Sep 17 00:00:00 2001 From: maosiping Date: Mon, 14 Mar 2022 11:55:58 +0800 Subject: [PATCH] support fetch and network Signed-off-by: maosiping --- api/@system.fetch.d.ts | 100 +++++++++++++++++++++++++++++++++++++++ api/@system.network.d.ts | 88 ++++++++++++++++++++++++++++++++++ 2 files changed, 188 insertions(+) create mode 100644 api/@system.fetch.d.ts create mode 100644 api/@system.network.d.ts diff --git a/api/@system.fetch.d.ts b/api/@system.fetch.d.ts new file mode 100644 index 0000000000..b36c780dbd --- /dev/null +++ b/api/@system.fetch.d.ts @@ -0,0 +1,100 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @import import fetch from '@system.fetch'; + * @since 3 + * @syscap SystemCapability.Communication.NetStack + */ +export interface FetchResponse { + /** + * Server status code. + * @since 3 + */ + code: number; + + /** + * Data returned by the success function. + * @since 3 + */ + data: string | object; + + /** + * All headers in the response from the server. + * @since 3 + */ + headers: Object; +} + +/** + * @import import fetch from '@system.fetch'; + * @since 3 + * @syscap SystemCapability.Communication.NetStack + */ +export default class Fetch { + /** + * Obtains data through the network. + * @param options + */ + static fetch(options: { + /** + * Resource URL. + * @since 3 + */ + url: string; + + /** + * Request parameter, which can be of the string type or a JSON object. + * @since 3 + */ + data?: string | object; + + /** + * Request header, which accommodates all attributes of the request. + * @since 3 + */ + header?: Object; + + /** + * Request methods available: OPTIONS, GET, HEAD, POST, PUT, DELETE and TRACE. The default value is GET. + * @since 3 + */ + method?: string; + + /** + * The return type can be text, or JSON. By default, the return type is determined based on Content-Type in the header returned by the server. + * @since 3 + */ + responseType?: string; + + /** + * Called when the network data is obtained successfully. + * @since 3 + */ + success?: (data: FetchResponse) => void; + + /** + * Called when the network data fails to be obtained. + * @since 3 + */ + fail?: (data: any, code: number) => void; + + /** + * Called when the execution is completed. + * @since 3 + */ + complete?: () => void; + }): void; +} diff --git a/api/@system.network.d.ts b/api/@system.network.d.ts new file mode 100644 index 0000000000..977bcd3414 --- /dev/null +++ b/api/@system.network.d.ts @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @import import network from '@system.network'; + * @since 3 + * @syscap SystemCapability.Communication.NetManager.Core + */ +export interface NetworkResponse { + /** + * Network type. The values can be 2G, 3G, 4G, WiFi, or none. + * @since 3 + */ + type: string; + + /** + * Whether the billing is based on the data volume. + * @since 3 + */ + metered: boolean; +} + +/** + * @import import network from '@system.network'; + * @since 3 + * @syscap SystemCapability.Communication.NetManager.Core + */ +export default class Network { + /** + * Obtains the network type. + * @param options + */ + static getType(options?: { + /** + * Called when the network type is obtained. + * @since 3 + */ + success?: (data: NetworkResponse) => void; + + /** + * Called when the network type fails to be obtained. + * @since 3 + */ + fail?: (data: any, code: number) => void; + + /** + * Called when the execution is completed. + * @since 3 + */ + complete?: () => void; + }): void; + + /** + * Listens to the network connection state. If this method is called multiple times, the last call takes effect. + * @param options + */ + static subscribe(options?: { + /** + * Called when the network connection state changes. + * @since 3 + */ + success?: (data: NetworkResponse) => void; + + /** + * Called when the listening fails. + * @since 3 + */ + fail?: (data: any, code: number) => void; + }): void; + + /** + * Cancels listening to the network connection state. + * @param options + */ + static unsubscribe(): void; +}