import scala.collection.mutable.ListBuffer

case class Config(baseUrl: String, timeout: Int)

trait Loggable
abstract class BaseClient

class HttpClient(config: Config) extends BaseClient with Loggable {
  val source: Config = config
  var fallback: BaseClient = null

  def get(path: String): String = {
    buildRequest("GET", path)
  }

  def post(path: String, body: String): String = {
    buildRequest("POST", path)
  }

  private def buildRequest(method: String, path: String): String = {
    s"$method ${config.baseUrl}$path"
  }
}

object HttpClientFactory {
  def create(baseUrl: String): HttpClient = {
    new HttpClient(Config(baseUrl, 30))
  }
}
