1ba991379Sopenharmony_ci/* 2ba991379Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 3ba991379Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4ba991379Sopenharmony_ci * you may not use this file except in compliance with the License. 5ba991379Sopenharmony_ci * You may obtain a copy of the License at 6ba991379Sopenharmony_ci * 7ba991379Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8ba991379Sopenharmony_ci * 9ba991379Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10ba991379Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11ba991379Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12ba991379Sopenharmony_ci * See the License for the specific language governing permissions and 13ba991379Sopenharmony_ci * limitations under the License. 14ba991379Sopenharmony_ci */ 15ba991379Sopenharmony_ci 16ba991379Sopenharmony_cipackage utils 17ba991379Sopenharmony_ci 18ba991379Sopenharmony_ciimport ( 19ba991379Sopenharmony_ci "fmt" 20ba991379Sopenharmony_ci "github.com/patrickmn/go-cache" 21ba991379Sopenharmony_ci "os" 22ba991379Sopenharmony_ci "path/filepath" 23ba991379Sopenharmony_ci "time" 24ba991379Sopenharmony_ci) 25ba991379Sopenharmony_ci 26ba991379Sopenharmony_civar runtimeDir = `.fotff` 27ba991379Sopenharmony_ci 28ba991379Sopenharmony_civar runtimeCache = cache.New(24*time.Hour, time.Hour) 29ba991379Sopenharmony_ci 30ba991379Sopenharmony_cifunc sectionKey(section, key string) string { 31ba991379Sopenharmony_ci return fmt.Sprintf("__%s__%s__", section, key) 32ba991379Sopenharmony_ci} 33ba991379Sopenharmony_ci 34ba991379Sopenharmony_cifunc init() { 35ba991379Sopenharmony_ci if err := os.MkdirAll(runtimeDir, 0750); err != nil { 36ba991379Sopenharmony_ci panic(err) 37ba991379Sopenharmony_ci } 38ba991379Sopenharmony_ci runtimeCache.LoadFile(filepath.Join(runtimeDir, "fotff.cache")) 39ba991379Sopenharmony_ci} 40ba991379Sopenharmony_ci 41ba991379Sopenharmony_cifunc CacheGet(section string, k string) (v any, found bool) { 42ba991379Sopenharmony_ci return runtimeCache.Get(sectionKey(section, k)) 43ba991379Sopenharmony_ci} 44ba991379Sopenharmony_ci 45ba991379Sopenharmony_cifunc CacheSet(section string, k string, v any) error { 46ba991379Sopenharmony_ci runtimeCache.Set(sectionKey(section, k), v, cache.DefaultExpiration) 47ba991379Sopenharmony_ci return runtimeCache.SaveFile(filepath.Join(runtimeDir, "fotff.cache")) 48ba991379Sopenharmony_ci} 49ba991379Sopenharmony_ci 50ba991379Sopenharmony_cifunc WriteRuntimeData(name string, data []byte) error { 51ba991379Sopenharmony_ci return os.WriteFile(filepath.Join(runtimeDir, name), data, 0640) 52ba991379Sopenharmony_ci} 53ba991379Sopenharmony_ci 54ba991379Sopenharmony_cifunc ReadRuntimeData(name string) ([]byte, error) { 55ba991379Sopenharmony_ci return os.ReadFile(filepath.Join(runtimeDir, name)) 56ba991379Sopenharmony_ci} 57