golift.io/starr@v1.0.0/lidarr/system.go (about)

     1  package lidarr
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"path"
     7  	"time"
     8  
     9  	"golift.io/starr"
    10  )
    11  
    12  const bpSystem = APIver + "/system"
    13  
    14  // SystemStatus is the /api/v1/system/status endpoint.
    15  type SystemStatus struct {
    16  	AppData                string    `json:"appData"`
    17  	AppName                string    `json:"appName"`
    18  	Authentication         string    `json:"authentication"`
    19  	Branch                 string    `json:"branch"`
    20  	BuildTime              time.Time `json:"buildTime"`
    21  	InstanceName           string    `json:"instanceName"`
    22  	IsAdmin                bool      `json:"isAdmin"`
    23  	IsDebug                bool      `json:"isDebug"`
    24  	IsDocker               bool      `json:"isDocker"`
    25  	IsLinux                bool      `json:"isLinux"`
    26  	IsNetCore              bool      `json:"isNetCore"`
    27  	IsOsx                  bool      `json:"isOsx"`
    28  	IsProduction           bool      `json:"isProduction"`
    29  	IsUserInteractive      bool      `json:"isUserInteractive"`
    30  	IsWindows              bool      `json:"isWindows"`
    31  	MigrationVersion       int64     `json:"migrationVersion"`
    32  	Mode                   string    `json:"mode"`
    33  	OsName                 string    `json:"osName"`
    34  	PackageAuthor          string    `json:"packageAuthor"`
    35  	PackageUpdateMechanism string    `json:"packageUpdateMechanism"`
    36  	PackageVersion         string    `json:"packageVersion"`
    37  	RuntimeName            string    `json:"runtimeName"`
    38  	RuntimeVersion         string    `json:"runtimeVersion"`
    39  	SqliteVersion          string    `json:"sqliteVersion"`
    40  	StartTime              time.Time `json:"startTime"`
    41  	StartupPath            string    `json:"startupPath"`
    42  	URLBase                string    `json:"urlBase"`
    43  	Version                string    `json:"version"`
    44  }
    45  
    46  // GetSystemStatus returns system status.
    47  func (l *Lidarr) GetSystemStatus() (*SystemStatus, error) {
    48  	return l.GetSystemStatusContext(context.Background())
    49  }
    50  
    51  // GetSystemStatusContext returns system status.
    52  func (l *Lidarr) GetSystemStatusContext(ctx context.Context) (*SystemStatus, error) {
    53  	var output SystemStatus
    54  
    55  	req := starr.Request{URI: path.Join(bpSystem, "status")}
    56  	if err := l.GetInto(ctx, req, &output); err != nil {
    57  		return nil, fmt.Errorf("api.Get(%s): %w", &req, err)
    58  	}
    59  
    60  	return &output, nil
    61  }
    62  
    63  // GetBackupFiles returns all available Lidarr backup files.
    64  // Use GetBody to download a file using BackupFile.Path.
    65  func (l *Lidarr) GetBackupFiles() ([]*starr.BackupFile, error) {
    66  	return l.GetBackupFilesContext(context.Background())
    67  }
    68  
    69  // GetBackupFilesContext returns all available Lidarr backup files.
    70  // Use GetBody to download a file using BackupFile.Path.
    71  func (l *Lidarr) GetBackupFilesContext(ctx context.Context) ([]*starr.BackupFile, error) {
    72  	var output []*starr.BackupFile
    73  
    74  	req := starr.Request{URI: path.Join(bpSystem, "backup")}
    75  	if err := l.GetInto(ctx, req, &output); err != nil {
    76  		return nil, fmt.Errorf("api.Get(%s): %w", &req, err)
    77  	}
    78  
    79  	return output, nil
    80  }