Как добавить Tester в TestFlight через API-интерфейсы REST ITunesConnect? - PullRequest
0 голосов
/ 03 июня 2018

Я работаю над проектом по автоматизации добавления / удаления пользователей в ITunesConnect - TestFlight для одного из моих приложений в магазине приложений.

Я использовал следующие команды, чтобы успешно добавить / удалить тестер для моего приложения с помощью инструмента fastlane pilot (https://docs.fastlane.tools/actions/pilot/).

bundle exec fastlane pilot add hareesh@test.com -a com.abc.MyApp
bundle exec fastlane pilot remove hareesh@test.com -a com.abc.MyApp

Я хотел бы сделать то же самое с помощью пользовательского интерфейса, внутренний интерфейс которогов Java. Я нашел конечные точки REST в следующих ссылках

https://github.com/fastlane/itc-api-docs/ https://github.com/fastlane/itc-api-docs#register-new-external-beta-tester

Но код, который я написал, не работает должным образом и не может добавить тестер в TestFlight.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;

import org.apache.http.auth.AuthenticationException;
import org.apache.http.auth.Credentials;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.CookieSpecs;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.auth.BasicScheme;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;

public class TestFlightCreateTester {

    public static void main(String[] args) throws AuthenticationException, ClientProtocolException, IOException {

        RequestConfig customizedRequestConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.IGNORE_COOKIES).build();
        HttpClientBuilder customizedClientBuilder = HttpClients.custom().setDefaultRequestConfig(customizedRequestConfig);
        CloseableHttpClient client = customizedClientBuilder.build(); 
        HttpPost httpPost = new HttpPost("https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa/ra/users/pre/create");
        UsernamePasswordCredentials creds = new UsernamePasswordCredentials("testUserName", "testPassword");
        httpPost.addHeader(new BasicScheme().authenticate((Credentials) creds, httpPost,null));

        String json = "{\"testers\":[{\"emailAddress\":{\"value\":\"hareesh@test.com\",\"errorKeys\":[]},\"firstName\":{\"value\":\"Hareesh\"},\"lastName\":{\"value\":\"Sarma\"},\"testing\":{\"value\":true},\"groups\":[]}]}";
        StringEntity entity = new StringEntity(json);
        httpPost.setEntity(entity);
        httpPost.setHeader("Accept", "application/json");
        httpPost.setHeader("Content-type", "application/json");

        CloseableHttpResponse response = client.execute(httpPost);

        BufferedReader r = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

        StringBuilder total = new StringBuilder();

        String line = null;

        while ((line = r.readLine()) != null) {
           total.append(line);
        }
        System.out.println(total.toString());
        response.close();
    }

}

Когда я запускаю приведенный выше код, я получаю следующий ответ

UnauthenticatedRequest ID: XXXXXXXXXXXXXXXX.0.0
...