def distributeToExternalTesters()

in src/main/scala/com/gu/appstoreconnectapi/AppStoreConnectApi.scala [106:150]


  def distributeToExternalTesters(token: String, buildId: String, externalTesterConfig: ExternalTesterConfig): Try[Unit] = {
    val url = s"$appStoreConnectBaseUrl/builds/$buildId/relationships/betaGroups"
    val body = s"""
                  |{
                  |  "data": [
                  |     {
                  |       "id": "${externalTesterConfig.group1.id}",
                  |       "type": "betaGroups"
                  |     },
                  |     {
                  |       "id": "${externalTesterConfig.group2.id}",
                  |       "type": "betaGroups"
                  |     },
                  |     {
                  |       "id": "${externalTesterConfig.group3.id}",
                  |       "type": "betaGroups"
                  |     },
                  |     {
                  |       "id": "${externalTesterConfig.group4.id}",
                  |       "type": "betaGroups"
                  |     },
                  |     {
                  |       "id": "${externalTesterConfig.group5.id}",
                  |       "type": "betaGroups"
                  |     },
                  |     {
                  |       "id": "${externalTesterConfig.group6.id}",
                  |       "type": "betaGroups"
                  |     }
                  |  ]
                  |}
                  |""".stripMargin
    val request = new Request.Builder()
      .url(url)
      .addHeader("Authorization", s"Bearer $token")
      .post(RequestBody.create(body, MediaType.get("application/json; charset=utf-8")))
      .build
    for {
      httpResponse <- Try(SharedClient.client.newCall(request).execute)
      _ <- SharedClient.getResponseBodyIfSuccessful("App Store Connect API", httpResponse)
    } yield {
      logger.info(s"Successfully distributed build to ${externalTesterConfig.group1}, ${externalTesterConfig.group2}, " +
        s"${externalTesterConfig.group3}, ${externalTesterConfig.group4}, ${externalTesterConfig.group5}, and ${externalTesterConfig.group6}")
    }
  }