/* * Copyright 2026 Oleg Borodin * * 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 }