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

com.codacy.client.stash.service.BuildStatusServices.scala Maven / Gradle / Ivy

package com.codacy.client.stash.service

import com.codacy.client.stash.client.{Request, RequestResponse, StashClient}
import com.codacy.client.stash.{BuildStatus, TimestampedBuildStatus}

import play.api.libs.json.{JsValue, Json}

class BuildStatusServices(client: StashClient) {

  /*
   * Gets the build status for the given commit.
   */
  def getBuildStatus(commit: String): RequestResponse[Seq[TimestampedBuildStatus]] = {
    client.executePaginated(Request(urlPath(commit), classOf[Seq[TimestampedBuildStatus]]))
  }

  /*
   * Creates a build status for the given commit.
   */
  def createBuildStatus(commit: String, buildStatus: BuildStatus): RequestResponse[String] = {
    client.postJson(Request(urlPath(commit), classOf[String]), statusPayload(buildStatus))
  }

  /*
   * Update the build status for the given commit.
   */
  def updateBuildStatus(owner: String, repository: String, commit: String, buildStatus: BuildStatus): RequestResponse[BuildStatus] = {
    client.postJson(Request(urlPath(commit), classOf[BuildStatus]), statusPayload(buildStatus))
  }

  private def urlPath(commit: String): String = s"/rest/build-status/1.0/commits/$commit"

  private def statusPayload(buildStatus: BuildStatus): JsValue = {
    Json.obj(
      "state" -> buildStatus.state.toString,
      "key" -> buildStatus.key,
      "name" -> buildStatus.name,
      "url" -> buildStatus.url,
      "description" -> buildStatus.description
    )
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy