#c# #.net
#c# #.net
Вопрос:
Центр приложений утверждает, что он может выполнять все этапы сборки и развертывания с помощью API. Файлы сертификатов необходимо загрузить для настройки параметров сборки iOS. (.p12 и .mobileprovision) Существует ссылка, которая описывает это. Но он не содержит примера, и я думаю, что у меня проблема с загрузкой моих файлов. Вот мой код для загрузки файла в appcenter:
private async Task<string> AppCenterUpload(string filePath, string orgName, string appName)
{
var createAssetReq = new RestRequest($"/v0.1/apps/{orgName}/{appName}/file_asset");
createAssetReq.AddHeader("X-API-TOKEN", apiKey);
var createAssetRes = await appCenterClient.PostAsync<dynamic>(createAssetReq);
string assetId = createAssetRes["id"];
string uploadDomain = createAssetRes["uploadDomain"];
string urlEncodedToken = createAssetRes["urlEncodedToken"];
double fileSize = new FileInfo(filePath.ToString()).Length;
var fileName = filePath.Substring(filePath.LastIndexOf("/") 1);
var uploadProcessReq = new RestRequest($"{uploadDomain}/upload/set_metadata/{assetId}?file_name={fileName}amp;file_size={fileSize}amp;token={urlEncodedToken}");
uploadProcessReq.AddHeader("X-API-TOKEN", apiKey);
var uploadProcessRes = await appCenterClient.PostAsync<dynamic>(uploadProcessReq);
JsonArray chunkList = uploadProcessRes["chunk_list"];
long chunkSize = uploadProcessRes["chunk_size"];
string id = uploadProcessRes["id"];
var item = System.IO.File.ReadAllBytes(filePath);
int startIndex = 0;
for(int i =0; i< chunkList.Count(); i )
{
int chunkLength = chunkSize > item.Count() ? item.Count() : (int)chunkSize;
byte[] buffers = new byte[chunkLength];
Array.Copy(item, startIndex, buffers, 0, chunkLength);
startIndex = chunkLength;
var startUploadReq = new RestRequest($"{uploadDomain}/upload/upload_chunk/{id}?block_number={chunkList[i]}amp;token={urlEncodedToken}");
startUploadReq.AddJsonBody(buffers);
await appCenterClient.PostAsync<dynamic>(startUploadReq);
}
var latestReq = new RestRequest($"{uploadDomain}/upload/finished/{id}?token={urlEncodedToken}");
latestReq.AddHeader("X-API-TOKEN", apiKey);
var resx = await appCenterClient.PostAsync<dynamic>(latestReq);
bool result = resx["error"];
if (result) return null;
return id;
}
Я думаю, что у меня проблема с загрузкой фрагментов байтов при передаче их в качестве тела запроса. Есть ли у вас какие-либо идеи для решения этой проблемы? Или, может быть, я ошибаюсь.