80 lines
1.6 KiB
Go
80 lines
1.6 KiB
Go
/*
|
|
* Copyright 2026 Oleg Borodin <onborodin@gmail.com>
|
|
*
|
|
* This work is published and licensed under a Creative Commons
|
|
* Attribution-NonCommercial-NoDerivatives 4.0 International License.
|
|
*
|
|
* Distribution of this work is permitted, but commercial use and
|
|
* modifications are strictly prohibited.
|
|
*/
|
|
package client
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"net/url"
|
|
"path"
|
|
"strings"
|
|
)
|
|
|
|
const (
|
|
serviceAPI = "/v3/api/service/"
|
|
fileAPI = "/v3/api/file/"
|
|
filesAPI = "/v3/api/files/"
|
|
)
|
|
|
|
func encodeBasicAuth(username, password string) string {
|
|
auth := username + ":" + password
|
|
return "Basic " + base64.StdEncoding.EncodeToString([]byte(auth))
|
|
}
|
|
|
|
func convertServiceRefer(ref string) (string, error) {
|
|
var err error
|
|
var res string
|
|
if !strings.Contains(ref, "://") {
|
|
ref = "https://" + ref
|
|
}
|
|
url, err := url.Parse(ref)
|
|
if err != nil {
|
|
return res, err
|
|
}
|
|
url.Path = path.Clean(url.Path)
|
|
url.Path = path.Join(serviceAPI, url.Path)
|
|
url.User = nil
|
|
res = url.String()
|
|
return res, err
|
|
}
|
|
|
|
func convertFileRefer(ref string) (string, error) {
|
|
var err error
|
|
var res string
|
|
if !strings.Contains(ref, "://") {
|
|
ref = "https://" + ref
|
|
}
|
|
url, err := url.Parse(ref)
|
|
if err != nil {
|
|
return res, err
|
|
}
|
|
url.Path = path.Clean(url.Path)
|
|
url.Path = path.Join(fileAPI, url.Path)
|
|
url.User = nil
|
|
res = url.String()
|
|
return res, err
|
|
}
|
|
|
|
func convertFilesRefer(ref string) (string, error) {
|
|
var err error
|
|
var res string
|
|
if !strings.Contains(ref, "://") {
|
|
ref = "https://" + ref
|
|
}
|
|
url, err := url.Parse(ref)
|
|
if err != nil {
|
|
return res, err
|
|
}
|
|
url.Path = path.Clean(url.Path)
|
|
url.Path = path.Join(filesAPI, url.Path)
|
|
url.User = nil
|
|
res = url.String()
|
|
return res, err
|
|
}
|