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  }