123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- package common
- import (
- "bytes"
- "encoding/json"
- "errors"
- "fmt"
- "net/http"
- "os"
- "path/filepath"
- "strings"
- )
- const (
- APICasaOSShare = "/v1/samba/shares"
- )
- type ShareService interface {
- DeleteShare(id string) error
- }
- type shareService struct {
- address string
- }
- func (n *shareService) DeleteShare(id string) error {
- url := strings.TrimSuffix(n.address, "/") + APICasaOSShare + "/" + id
- fmt.Println(url)
- message := "{}"
- body, err := json.Marshal(message)
- if err != nil {
- return err
- }
- client := &http.Client{}
- // Create request
- req, err := http.NewRequest("DELETE", url, bytes.NewBuffer(body))
- if err != nil {
- return err
- }
- // Fetch Request
- response, err := client.Do(req)
- if err != nil {
- return err
- }
- defer response.Body.Close()
- if response.StatusCode != http.StatusOK {
- return errors.New("failed to send share (status code: " + fmt.Sprint(response.StatusCode) + ")")
- }
- return nil
- }
- func NewShareService(runtimePath string) (ShareService, error) {
- casaosAddressFile := filepath.Join(runtimePath, CasaOSURLFilename)
- buf, err := os.ReadFile(casaosAddressFile)
- if err != nil {
- return nil, err
- }
- address := string(buf)
- response, err := http.Get(address + "/ping")
- if err != nil {
- return nil, err
- }
- if response.StatusCode != 200 {
- return nil, errors.New("failed to ping casaos service")
- }
- return &shareService{
- address: address,
- }, nil
- }
|