def getSwitches()

in app/story_packages/switchboard/S3client.scala [23:45]


  def getSwitches(): Option[Map[String, Boolean]] = {
    val request: GetObjectRequest = new GetObjectRequest(bucket, objectKey)
    val t = Try[S3Object](client.getObject(request)) flatMap { result =>
      val resultAsString: String = Source.fromInputStream(result.getObjectContent).mkString
      result.close()
      Try(Json.parse(resultAsString)).map { json =>
        json.validate[Map[String, Boolean]] match {
          case JsSuccess(m, _) => {
            Logger.info("successfully got switches from switchboard at %s - %s" format(bucket, objectKey))
            json.asOpt[Map[String, Boolean]]}
          case JsError(_) => {
            Logger.error("invalid json content at %s - %s : %s" format(bucket, objectKey, resultAsString))
            None}}}}

    t match {
      case Success(result) => result
      case Failure(e: AmazonS3Exception) if e.getStatusCode == 404 => {
        Logger.warn("switches status not found at %s - %s" format(bucket, objectKey))
        None}
      case Failure(e) => {
        Logger.error("Failure in switchboard S3 getSwitches", e)
        None}}
  }