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