All Downloads are FREE. Search and download functionalities are using the official Maven repository.

me.jeffshaw.digitalocean.Region.scala Maven / Gradle / Ivy

package me.jeffshaw.digitalocean

import scala.concurrent.{ExecutionContext, Future}

case class Region(
  slug: String,
  name: String,
  sizes: Seq[String],
  available: Option[Boolean],
  features: Seq[String]
) {
  def getSizes(implicit client: DigitalOceanClient, ec: ExecutionContext): Future[Seq[Size]] = {
    Future.sequence(sizes.map(Size.apply))
  }

  def toEnum: RegionEnum = {
    RegionEnum.fromSlug(slug)
  }
}

object Region
  extends Path
  with Listable[Region, responses.Regions] {

  override val path: Seq[String] = Seq("regions")

  /*
  /region/$slug isn't supported, so just get all of them and get the one we want from the list.
   */
  def apply(slug: String)(implicit client: DigitalOceanClient, ec: ExecutionContext): Future[Region] = {
    for {
      response <- list()
    } yield {
      response.find(_.slug == slug).getOrElse(throw new NoSuchElementException(slug))
    }
  }

  def apply(enum: RegionEnum)(implicit client: DigitalOceanClient, ec: ExecutionContext): Future[Region] = {
    apply(enum.slug)
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy