stefanrenne/RxSonosLib

View on GitHub
RxSonosLib/Framework/Domain/Interactors/GetMusicProvidersInteractor.swift

Summary

Maintainability
A
0 mins
Test Coverage
//
//  GetMusicProvidersInteractor.swift
//  RxSonosLib
//
//  Created by Stefan Renne on 30/04/2018.
//  Copyright © 2018 Uberweb. All rights reserved.
//

import Foundation
import RxSwift

struct GetMusicProvidersValues: RequestValues {
    let room: Room?
}

class GetMusicProvidersInteractor: SingleInteractor {
    
    typealias T = GetMusicProvidersValues
    
    private let musicProvidersRepository: MusicProvidersRepository
    
    init(musicProvidersRepository: MusicProvidersRepository) {
        self.musicProvidersRepository = musicProvidersRepository
    }
    
    func buildInteractorObservable(values: GetMusicProvidersValues?) -> Single<[MusicProvider]> {
        guard let room = values?.room else {
            return Single.error(SonosError.invalidImplementation)
        }
        
        return musicProvidersRepository
            .getMusicProviders(for: room)
    }
    
}