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 }