// ТЗ: мы хотим собирать информацию по курсам валют в разных банках.
// Требуется написать программу, которая каждую минуту будет отправлять запрос в банк и получать курс нескольких валют и сохранять результат в БД.
// Банков может быть несколько.
fmt.Println("Usage is './currency update '")
} else if cmdName == "update " {
url: "http://bank.example.com/rates/rub-usd ",
url: "http://bank2.example.com/rates?currFrom=RUR &currTo=USD ",
clientBank := &http.Client{}
for _, url := range urlsBank {
req, _ := http.NewRequest(http.MethodGet, url.url, nil)
if url.bankName == "Bank 2 " {
req.Header.Add("Authorization ", "auth_token=\"XXXXXXX\"")
resp, err := clientBank.Do(req)
body, _ := io.ReadAll(resp.Body)
if url.bankName == "Bank 1 " {
strBody = strings.ReplaceAll(strBody, ",", ".")
value, err := strconv.ParseFloat(strBody, 64)
err = updateCurrency(url.bankName, url.curFrom, url.curFrom, value)
fmt.Println("Usage is './currency update '")
func updateCurrency(bank, from, to string, value float64) error {
psqlconn := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=disable ", host, port, user, password, dbname)
db, err := sql.Open("postgres ", psqlconn)
fmt.Println("Connected!")
insertStmt := fmt.Sprintf(`insert into currency_rates ("bank ", "from ", "to ", "value ") values('%s ','%s ','%s ','%.2f ')`, bank, from, to, value) //
_, err = db.Exec(insertStmt)
func CheckError(err error) {