-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathweather.js
93 lines (78 loc) · 1.71 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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#!usr/bin/env node
import { getArgs } from "./lib/helpers.js"
import { logHelp, logSuccess, logError, logWeather } from "./services/log.service.js";
import { saveKeyValue, getKeyValue } from "./services/storage.service.js";
import { getWeather } from "./services/api.service.js";
export const ARGS_ENUM = {
token: 'token',
city: 'city'
}
const setToken = async (token) => {
if (!token.length) {
logError('Token not given')
return
}
try {
await saveKeyValue(ARGS_ENUM.token, token)
logSuccess('Token saved successfully!')
} catch (e) {
logError(e.message)
}
}
const setCity = async (city) => {
if (!city.length) {
logError('City not given')
return
}
try {
await saveKeyValue(ARGS_ENUM.city, city)
logSuccess('City saved successfully!')
} catch (e) {
logError(e.message)
}
}
const processWeather = async () => {
let response
try {
// 57b405894a7f56eb90ddd29e7829ccac
const city = await getKeyValue(ARGS_ENUM.city)
response = await getWeather(city)
} catch (e) {
logError(e.message)
}
const [data, err, statusCode] = response || []
if (err) {
logError(err)
}
if (data) {
logWeather(data)
}
if (statusCode === 404) {
logError('City not found')
return
}
if (statusCode === 401) {
logError('Token is not valid')
return
}
if (statusCode === 401) {
logError('City not given')
return
}
}
const init = async () => {
debugger
const args = getArgs(process.argv)
const { h: help, s: saveCity, t: saveToken } = args || {}
if (help) {
return logHelp()
}
if (saveToken) {
return await setToken(saveToken)
}
if (saveCity) {
return await setCity(saveCity)
}
processWeather()
}
init()