-
Notifications
You must be signed in to change notification settings - Fork 0
/
weather.js
76 lines (60 loc) · 1.88 KB
/
weather.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import {getArgs} from './helpers/args.js'
import {printHelp, printSuccess, printError} from "./services/log.service.js";
import {getKeyValue, saveKeyValue, TOKEN_DICTIONARY} from "./services/storage.service.js";
import {getWeather, getIcon} from "./services/api.service.js";
import {printWeather} from "./services/log.service.js";
const saveToken = async (token) => {
if(!token.length) {
printError('не передан token')
return
}
try {
await saveKeyValue(TOKEN_DICTIONARY.token, token);
printSuccess('токен сохранен');
} catch (e) {
printError(e.message);
}
}
const saveCity = async (city) => {
if(!city.length) {
printError('не передан city')
return
}
try {
await saveKeyValue(TOKEN_DICTIONARY.city, city);
printSuccess('city сохранен');
} catch (e) {
printError(e.message);
}
}
const getForecast = async () => {
try{
const city = process.env.CITY ?? await getKeyValue(TOKEN_DICTIONARY.city)
const weather = await getWeather(city)
printWeather(weather, getIcon(weather?.weather[0].icon))
}catch (e){
if(e?.response?.status===404) {
printError('неверный город')
}else if (e?.response?.status===401) {
printError('неверно указан токен')
}else {
printError(e.message)
}
}
}
const initCLI = () => {
const args = getArgs(process.argv)
if (args.h) {//выводит help
return printHelp()
}
if (args.s) {//сохранить город
return saveCity(args.s)
}
if (args.t) {//сохранить токен
return saveToken(args.t)
}
getForecast()
};
initCLI();
//console.log(process.env) //окружение
//getWeather('gomel'){//вывести погоду