Add timeouts
This commit is contained in:
9
main.go
9
main.go
@@ -11,6 +11,11 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// HTTP клиент с таймаутом
|
||||||
|
var httpClient = &http.Client{
|
||||||
|
Timeout: 30 * time.Second,
|
||||||
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if len(os.Args) != 3 {
|
if len(os.Args) != 3 {
|
||||||
fmt.Println("Usage: program <json-file> <output-dir>")
|
fmt.Println("Usage: program <json-file> <output-dir>")
|
||||||
@@ -76,7 +81,7 @@ func fileExtension(url string) string {
|
|||||||
"image/svg+xml": ".svg",
|
"image/svg+xml": ".svg",
|
||||||
}
|
}
|
||||||
|
|
||||||
resp, err := http.Head(url)
|
resp, err := httpClient.Head(url)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
ct := resp.Header.Get("Content-Type")
|
ct := resp.Header.Get("Content-Type")
|
||||||
if ext, ok := contentTypes[ct]; ok {
|
if ext, ok := contentTypes[ct]; ok {
|
||||||
@@ -113,7 +118,7 @@ func downloadImage(url, filename string) error {
|
|||||||
|
|
||||||
// Одна попытка скачивания
|
// Одна попытка скачивания
|
||||||
func attemptDownload(url, filename string) error {
|
func attemptDownload(url, filename string) error {
|
||||||
resp, err := http.Get(url)
|
resp, err := httpClient.Get(url)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user