1/* 2 * Copyright (C) 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 */ 15import disData from '@ohos.data.distributedData'; 16import backgroundTaskManager from '@ohos.backgroundTaskManager'; 17import featureAbility from '@ohos.ability.featureAbility'; 18import wantAgent from '@ohos.wantAgent'; 19import dataRdb from '@ohos.data.rdb'; 20import ApiResult from '../common/apiResult'; 21const TEST_BUNDLE_NAME = 'com.ohos.distributekvdisjs'; 22let logTag = "RpcServer_TestApi: "; 23let kvManager = undefined; 24let kvStore = undefined; 25let rdbStore = undefined; 26 27 28export default class TestApi{ 29 constructor(){} 30 add(a,b) { 31 console.log(logTag+"_methodName is add"); 32 return Number(a)+Number(b); 33 } 34 sub(a,b) { 35 console.log(logTag+"_methodName is sub"); 36 return Number(a)-Number(b); 37 } 38 39 async startBackgroundRunning(){ 40 console.info(logTag + " Server start background running started"); 41 let wantAgentInfo = { 42 wants: [ 43 { 44 bundleName: TEST_BUNDLE_NAME, 45 abilityName: "com.ohos.distributekvdisjs.ServiceAbility" 46 } 47 ], 48 operationType: wantAgent.OperationType.START_ABILITY, 49 requestCode: 0, 50 wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] 51 }; 52 53 await wantAgent.getWantAgent(wantAgentInfo).then(async (wantAgentObj) => { 54 console.info(logTag + " Server startBackgroundRunning get want agent success"); 55 await backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(), 56 backgroundTaskManager.BackgroundMode.DATA_TRANSFER, wantAgentObj).then(() => { 57 console.info("Operation startBackgroundRunning succeeded"); 58 }).catch((err) => { 59 console.error("Operation startBackgroundRunning failed Cause: " + err); 60 }); 61 }).catch((err) => { 62 console.info(logTag + " Server startBackgroundRunning get want agent err: " + err); 63 }); 64 } 65 66 async stopBackgroundRunning(){ 67 backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext()).then(() => { 68 console.info("Operation stopBackgroundRunning succeeded"); 69 }).catch((err) => { 70 console.error("Operation stopBackgroundRunning failed Cause: " + err); 71 }); 72 } 73 74 async createKvManager(){ 75 const config = { 76 bundleName: TEST_BUNDLE_NAME, 77 userInfo: { 78 userId: '0', 79 userType: disData.UserType.SAME_USER_ID 80 } 81 } 82 console.info(logTag + "_methodName is createKvManager"); 83 await disData.createKVManager(config).then((manager) =>{ 84 console.log(logTag + "Created KVManager success"); 85 kvManager = manager; 86 return String(true); 87 }).catch((err) => { 88 console.log(logTag + "Failed to create KVManager: " + err ); 89 return String(err); 90 }); 91 } 92 async getKvStore(storeId,SecurityLevel,encrypt){ 93 var optionsInfo = { 94 createIfMissing : true, 95 encrypt : false, 96 backup : false, 97 autoSync : true, 98 kvStoreType : disData.KVStoreType.SINGLE_VERSION, 99 schema : '', 100 securityLevel : disData.SecurityLevel.NO_LEVEL, 101 } 102 if(encrypt == "true"){ 103 optionsInfo.encrypt = true; 104 }else{ 105 optionsInfo.encrypt = false; 106 } 107 if(SecurityLevel == "S0"){ 108 optionsInfo.securityLevel=disData.SecurityLevel.S0; 109 }else if(SecurityLevel == "S1"){ 110 optionsInfo.securityLevel=disData.SecurityLevel.S1; 111 }else if(SecurityLevel == "S2"){ 112 optionsInfo.securityLevel=disData.SecurityLevel.S2; 113 }else if(SecurityLevel == "S3"){ 114 optionsInfo.securityLevel=disData.SecurityLevel.S3; 115 }else if(SecurityLevel == "S4"){ 116 optionsInfo.securityLevel=disData.SecurityLevel.S4; 117 }else{ 118 optionsInfo.securityLevel=disData.SecurityLevel.NO_LEVEL; 119 } 120 121 await kvManager.getKVStore(storeId,optionsInfo).then((store) =>{ 122 kvStore = store; 123 console.info(logTag + " get kvStore success, security level is: " + optionsInfo.securityLevel); 124 return String(true); 125 }).catch((err) => { 126 return String(err); 127 }); 128 } 129 async closeKvStore(storeId){ 130 await kvManager.closeKVStore(TEST_BUNDLE_NAME,storeId,kvStore).then(async () => { 131 await kvManager.deleteKVStore(TEST_BUNDLE_NAME,storeId).then(() => { 132 console.info(logTag + " Server delete KVStore success"); 133 return String(true); 134 }) 135 }).catch((err) => { 136 return String(err); 137 }); 138 } 139 140 async kvPut(key,value,valueType){ 141 let putValue = undefined; 142 console.info(logTag + " putValue : " + putValue + " value is: " + value + " valueType is: " + valueType); 143 if(valueType == "String"){ 144 putValue = value; 145 }else if(valueType == "Number"){ 146 putValue = Number(value); 147 }else if(valueType == "Number_Min"){ 148 putValue = Number.MIN_VALUE; 149 }else if(valueType == "Uint8Array"){ 150 putValue = value.split(','); 151 }else if(valueType == "Boolean"){ 152 if(value == "false"){ 153 putValue = false; 154 }else{ 155 putValue = Boolean(value); 156 } 157 } 158 console.info(logTag + " putValue : " + putValue + " value is: " + value); 159 await kvStore.put(key,putValue).then(() => { 160 console.info(logTag + " Server put data success ,key is : " + key + " value is: " + putValue); 161 return String(true); 162 }).catch((err) => { 163 console.info(logTag + "Server put data fail,err: " + err); 164 return String(err); 165 }); 166 } 167 async kvGet(key,callback){ 168 console.info(logTag + " kvGet start"); 169 let errInfo = undefined; 170 let result = undefined; 171 kvStore.get(key, function (err, data){ 172 errInfo = err; 173 result = data; 174 }) 175 if(err != null){ 176 console.info(logTag + " kvGet get data error: " + err); 177 callback(err); 178 }else{ 179 console.info(logTag + " kvGet get data success"); 180 callback(data); 181 } 182 } 183 async kvDelete(key){ 184 await kvStore.delete(key).then(() => { 185 console.info(logTag + "Delete data success"); 186 return String(true); 187 }).catch((err) => { 188 console.info(logTag + "Delete data error,errorInfo: " + err); 189 return String(err); 190 191 }); 192 } 193 194 kvSync(deviceid,mode){ 195 let syncMode = undefined; 196 if(mode == "PUSH"){ 197 syncMode = disData.SyncMode.PUSH_ONLY; 198 }else if(mode == "PUSH_PULL"){ 199 syncMode = disData.SyncMode.PUSH_PULL; 200 } 201 kvStore.Sync([deviceid],syncMode); 202 return JSON.stringify(syncMode); 203 } 204 205 async getRdbStore(rdbStoreName){ 206 var storeConfig = { 207 name: rdbStoreName, 208 } 209 await dataRdb.getRdbStore(storeConfig,1).then((store) => { 210 console.info(logTag + " get rdbStore success"); 211 rdbStore = store; 212 return String(true); 213 }).catch((err) => { 214 console.info(logTag + " get rdbStore error, err: " + err); 215 return String(err); 216 }); 217 } 218} 219