github.com/saucelabs/saucectl@v0.175.1/internal/saucecloud/jobservice.go (about)

     1  package saucecloud
     2  
     3  import (
     4  	"context"
     5  	"time"
     6  
     7  	"github.com/saucelabs/saucectl/internal/job"
     8  )
     9  
    10  type JobService struct {
    11  	VDCStarter job.Starter
    12  	RDCStarter job.Starter
    13  
    14  	VDCReader job.Reader
    15  	RDCReader job.Reader
    16  
    17  	VDCWriter job.Writer
    18  
    19  	VDCStopper job.Stopper
    20  	RDCStopper job.Stopper
    21  
    22  	VDCDownloader job.ArtifactDownloader
    23  	RDCDownloader job.ArtifactDownloader
    24  }
    25  
    26  func (s JobService) DownloadArtifact(jobID, suiteName string, realDevice bool) []string {
    27  	if realDevice {
    28  		return s.RDCDownloader.DownloadArtifact(jobID, suiteName, realDevice)
    29  	}
    30  
    31  	return s.VDCDownloader.DownloadArtifact(jobID, suiteName, realDevice)
    32  }
    33  
    34  func (s JobService) StopJob(ctx context.Context, jobID string, realDevice bool) (job.Job, error) {
    35  	if realDevice {
    36  		return s.RDCStopper.StopJob(ctx, jobID, realDevice)
    37  	}
    38  
    39  	return s.VDCStopper.StopJob(ctx, jobID, realDevice)
    40  }
    41  
    42  func (s JobService) UploadAsset(jobID string, realDevice bool, fileName string, contentType string, content []byte) error {
    43  	if realDevice {
    44  		return nil
    45  	}
    46  
    47  	return s.VDCWriter.UploadAsset(jobID, realDevice, fileName, contentType, content)
    48  }
    49  
    50  func (s JobService) ReadJob(ctx context.Context, id string, realDevice bool) (job.Job, error) {
    51  	if realDevice {
    52  		return s.RDCReader.ReadJob(ctx, id, realDevice)
    53  	}
    54  
    55  	return s.VDCReader.ReadJob(ctx, id, realDevice)
    56  }
    57  
    58  func (s JobService) PollJob(ctx context.Context, id string, interval, timeout time.Duration, realDevice bool) (job.Job, error) {
    59  	if realDevice {
    60  		return s.RDCReader.PollJob(ctx, id, interval, timeout, realDevice)
    61  	}
    62  
    63  	return s.VDCReader.PollJob(ctx, id, interval, timeout, realDevice)
    64  }
    65  
    66  func (s JobService) GetJobAssetFileNames(ctx context.Context, jobID string, realDevice bool) ([]string, error) {
    67  	if realDevice {
    68  		return s.RDCReader.GetJobAssetFileNames(ctx, jobID, realDevice)
    69  	}
    70  
    71  	return s.VDCReader.GetJobAssetFileNames(ctx, jobID, realDevice)
    72  }
    73  
    74  func (s JobService) GetJobAssetFileContent(ctx context.Context, jobID, fileName string, realDevice bool) ([]byte, error) {
    75  	if realDevice {
    76  		return s.RDCReader.GetJobAssetFileContent(ctx, jobID, fileName, realDevice)
    77  	}
    78  
    79  	return s.VDCReader.GetJobAssetFileContent(ctx, jobID, fileName, realDevice)
    80  }
    81  
    82  func (s JobService) StartJob(ctx context.Context, opts job.StartOptions) (jobID string, isRDC bool, err error) {
    83  	if opts.RealDevice {
    84  		return s.RDCStarter.StartJob(ctx, opts)
    85  	}
    86  
    87  	return s.VDCStarter.StartJob(ctx, opts)
    88  }