2020-04-07 10:42:42 +02:00
|
|
|
/*
|
2022-04-25 09:53:55 +02:00
|
|
|
Package remote provides detection of remote services for file sharing and synchronization.
|
2020-06-23 13:44:14 +02:00
|
|
|
|
2023-01-11 16:43:01 +01:00
|
|
|
Copyright (c) 2018 - 2023 PhotoPrism UG. All rights reserved.
|
2020-06-23 13:44:14 +02:00
|
|
|
|
2022-08-10 16:09:21 +02:00
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
|
|
it under Version 3 of the GNU Affero General Public License (the "AGPL"):
|
|
|
|
<https://docs.photoprism.app/license/agpl>
|
2020-06-23 13:44:14 +02:00
|
|
|
|
2022-08-10 16:09:21 +02:00
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU Affero General Public License for more details.
|
2020-06-23 13:44:14 +02:00
|
|
|
|
2022-08-10 16:09:21 +02:00
|
|
|
The AGPL is supplemented by our Trademark and Brand Guidelines,
|
|
|
|
which describe how our Brand Assets may be used:
|
2023-02-08 09:07:42 +01:00
|
|
|
<https://www.photoprism.app/trademark>
|
2020-06-23 13:44:14 +02:00
|
|
|
|
2022-04-13 22:17:59 +02:00
|
|
|
Feel free to send an email to hello@photoprism.app if you have questions,
|
2020-06-23 13:44:14 +02:00
|
|
|
want to support our work, or just want to say hello.
|
|
|
|
|
|
|
|
Additional information can be found in our Developer Guide:
|
2022-02-27 17:32:54 +01:00
|
|
|
<https://docs.photoprism.app/developer-guide/>
|
2020-04-07 10:42:42 +02:00
|
|
|
*/
|
|
|
|
package remote
|
|
|
|
|
|
|
|
import (
|
|
|
|
"net/http"
|
2020-04-24 14:11:17 +02:00
|
|
|
"time"
|
2020-04-07 10:42:42 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
|
|
|
ServiceWebDAV = "webdav"
|
|
|
|
ServiceFacebook = "facebook"
|
|
|
|
ServiceTwitter = "twitter"
|
|
|
|
ServiceFlickr = "flickr"
|
|
|
|
ServiceInstagram = "instagram"
|
|
|
|
ServiceEyeEm = "eyeem"
|
|
|
|
ServiceTelegram = "telegram"
|
|
|
|
ServiceWhatsApp = "whatsapp"
|
|
|
|
ServiceGPhotos = "gphotos"
|
|
|
|
ServiceGDrive = "gdrive"
|
|
|
|
ServiceOneDrive = "onedrive"
|
|
|
|
)
|
|
|
|
|
|
|
|
func HttpOk(method, rawUrl string) bool {
|
|
|
|
req, err := http.NewRequest(method, rawUrl, nil)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
|
2022-03-27 21:37:11 +02:00
|
|
|
// Create new http.Client instance.
|
|
|
|
//
|
|
|
|
// NOTE: Timeout specifies a time limit for requests made by
|
|
|
|
// this Client. The timeout includes connection time, any
|
|
|
|
// redirects, and reading the response body. The timer remains
|
|
|
|
// running after Get, Head, Post, or Do return and will
|
|
|
|
// interrupt reading of the Response.Body.
|
|
|
|
client := &http.Client{Timeout: 30 * time.Second}
|
|
|
|
|
|
|
|
// Send request to see if it fails.
|
2020-04-07 10:42:42 +02:00
|
|
|
if resp, err := client.Do(req); err != nil {
|
|
|
|
return false
|
|
|
|
} else if resp.StatusCode < 400 {
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
|
|
|
|
return false
|
|
|
|
}
|