golift.io/starr@v1.0.0/sonarr/mediamanagement.go (about) 1 package sonarr 2 3 import ( 4 "bytes" 5 "context" 6 "encoding/json" 7 "fmt" 8 9 "golift.io/starr" 10 ) 11 12 // Define Base Path for MediaManagement calls. 13 const bpMediaManagement = APIver + "/config/mediaManagement" 14 15 // MediaManagement represents the /config/mediamanagement endpoint. 16 type MediaManagement struct { 17 AutoUnmonitorPreviouslyDownloadedEpisodes bool `json:"autoUnmonitorPreviouslyDownloadedEpisodes,omitempty"` 18 CopyUsingHardlinks bool `json:"copyUsingHardlinks,omitempty"` 19 CreateEmptySeriesFolders bool `json:"createEmptySeriesFolders,omitempty"` 20 DeleteEmptyFolders bool `json:"deleteEmptyFolders,omitempty"` 21 EnableMediaInfo bool `json:"enableMediaInfo,omitempty"` 22 ImportExtraFiles bool `json:"importExtraFiles,omitempty"` 23 SetPermissionsLinux bool `json:"setPermissionsLinux,omitempty"` 24 SkipFreeSpaceCheckWhenImporting bool `json:"skipFreeSpaceCheckWhenImporting,omitempty"` 25 ID int64 `json:"id"` 26 MinimumFreeSpaceWhenImporting int64 `json:"minimumFreeSpaceWhenImporting"` // 0 or empty not allowed 27 RecycleBinCleanupDays int64 `json:"recycleBinCleanupDays,omitempty"` 28 ChmodFolder string `json:"chmodFolder,omitempty"` 29 ChownGroup string `json:"chownGroup"` // empty string is valid 30 DownloadPropersAndRepacks string `json:"downloadPropersAndRepacks,omitempty"` 31 EpisodeTitleRequired string `json:"episodeTitleRequired,omitempty"` 32 ExtraFileExtensions string `json:"extraFileExtensions,omitempty"` 33 FileDate string `json:"fileDate,omitempty"` 34 RecycleBin string `json:"recycleBin"` // empty string is valid 35 RescanAfterRefresh string `json:"rescanAfterRefresh,omitempty"` 36 } 37 38 // GetMediaManagement returns the mediaManagement. 39 func (s *Sonarr) GetMediaManagement() (*MediaManagement, error) { 40 return s.GetMediaManagementContext(context.Background()) 41 } 42 43 // GetMediaManagement returns the Media Management. 44 func (s *Sonarr) GetMediaManagementContext(ctx context.Context) (*MediaManagement, error) { 45 var output MediaManagement 46 47 req := starr.Request{URI: bpMediaManagement} 48 if err := s.GetInto(ctx, req, &output); err != nil { 49 return nil, fmt.Errorf("api.Get(%s): %w", &req, err) 50 } 51 52 return &output, nil 53 } 54 55 // UpdateMediaManagement updates the Media Management. 56 func (s *Sonarr) UpdateMediaManagement(mMgt *MediaManagement) (*MediaManagement, error) { 57 return s.UpdateMediaManagementContext(context.Background(), mMgt) 58 } 59 60 // UpdateMediaManagementContext updates the Media Management. 61 func (s *Sonarr) UpdateMediaManagementContext(ctx context.Context, mMgt *MediaManagement) (*MediaManagement, error) { 62 var output MediaManagement 63 64 var body bytes.Buffer 65 if err := json.NewEncoder(&body).Encode(mMgt); err != nil { 66 return nil, fmt.Errorf("json.Marshal(%s): %w", bpMediaManagement, err) 67 } 68 69 req := starr.Request{URI: bpMediaManagement, Body: &body} 70 if err := s.PutInto(ctx, req, &output); err != nil { 71 return nil, fmt.Errorf("api.Put(%s): %w", &req, err) 72 } 73 74 return &output, nil 75 }