protected override async Task PatchStubAsync(MaterialStub advMaterialStub, Amsv1MaterialData amsv1Data) { // logo var logoElement = advMaterialStub.GetElementByType(MaterialElementType.CompositeBitmapImage); string uploadUrl = logoElement.UploadUrl; var materialId = advMaterialStub.Id; string fileName = $"{amsv1Data.ImageName}.{amsv1Data.ImageExt}"; var uploadHash = await _okapiClient.UploadFileAsync(materialId, new Uri(uploadUrl), fileName, amsv1Data.ImageData); logoElement.Value.Raw = uploadHash.Raw; // crop area logoElement.Value.CropArea = CropAreaFactory.Create(amsv1Data); // background color var bgColorElement = advMaterialStub.GetElementByType(MaterialElementType.Color); bgColorElement.Value.Raw = amsv1Data.BackgroundColor; // custom images var customImages = new List <SizeSpecificImage>(); foreach (var c in amsv1Data.SizeSpecificImages) { var img = await CreateCustomImageAsync(materialId, new Uri(uploadUrl), c); customImages.Add(img); } logoElement.Value.SizeSpecificImages = customImages.ToArray(); advMaterialStub.Properties.Name = "logo_zmk"; }
public static CropArea Create(Amsv1MaterialData data) { var area = new CropArea { Top = data.CropTop, Left = data.CropLeft, Height = data.CropHeight, Width = data.CropWidth }; return(area); }
public async Task <bool> SetModerationState(long amId, string version, Amsv1MaterialData materialData) { var uri = _baseUri + $"/api/{_apiVersion}/am/{amId}/version/{version}/moderation"; try { var status = materialData.ModerationState; if (_moderationStateMap.TryGetValue(materialData.ModerationState, out var mappedStatus)) { status = mappedStatus; } var request = new ModerationRequest { Status = status, Comment = materialData.ModerationComment ?? string.Empty }; var reqContent = new StringContent(request.ToJson(), Encoding.UTF8, "application/json"); using (var response = await _httpClient.PutAsync(uri, reqContent)) { var content = await response.Content.ReadAsStringAsync(); if (!response.IsSuccessStatusCode) { if (response.StatusCode == HttpStatusCode.PreconditionFailed) { _logger.Error("[MODERATION_FAIL] Unable to add moderation to material {amid} uuid {uuid} firm {firmid}. Moderation info: {info}, Response: {content}", amId, materialData.Uuid, materialData.FirmId, request, content); } else { response.EnsureSuccessStatusCode(); } } _logger.Information("[MODERATION_SUCCESS] Ad material {uuid} {firmid} successfully moderated with state: {state}, comment: {comment}", materialData.Uuid, materialData.FirmId, materialData.ModerationState, materialData.ModerationComment); return(response.IsSuccessStatusCode); } } catch (Exception ex) { _logger.Error(ex, "Exception occured while moderating material {amid}", amId); throw; } }
public async Task <MaterialCreationResult> ExecuteAsync(Amsv1MaterialData amsv1Data) { try { _logger.Information("Starting to execute {name} import strategy; Am id {uuid}; Firm id: {firmid}", Name, amsv1Data.Uuid, amsv1Data.FirmId); var(byWhat, targetCode) = GetCreationTarget(); _logger.Information("Creating stub for material id: {uuid}", amsv1Data.Uuid); var advMaterialStub = await _okapiClient.CreateMaterialStubAsync(byWhat, targetCode.ToString(), amsv1Data.FirmId, _options.Language); _logger.Information("Stub for material id {uuid} successfully created. Stub id: {stubId}", amsv1Data.Uuid, advMaterialStub.Id); _logger.Information("Stub patching started. AMS v1.0 material id {uuid}, OKAPI stub id: {stubId}", amsv1Data.Uuid, advMaterialStub.Id); await PatchStubAsync(advMaterialStub, amsv1Data); _logger.Information("Creating material started. AMS v1.0 material id {uuid}, OKAPI stub id: {stubId}", amsv1Data.Uuid, advMaterialStub.Id); var material = await _okapiClient.CreateNewMaterialAsync(advMaterialStub.Id, amsv1Data.FirmId, advMaterialStub); _logger.Information("Material {stubId} has been created", advMaterialStub.Id); _logger.Information("Strategy {name} has been completed successfully. Material id: {uuid}; Firm id: {firmid}", Name, amsv1Data.Uuid, amsv1Data.FirmId); return(new MaterialCreationResult { MaterialId = advMaterialStub.Id, FirmId = amsv1Data.FirmId, BindedNomenclatures = GetBindedNomenclatures(), VersionId = material.VersionId }); } catch (UnprocessableEntityException ueex) { _logger.Error("[UNPROCESSABLE] {uuid} {firmid} {content} {header}", amsv1Data.Uuid, amsv1Data.FirmId, ueex.Content, ueex.CustomImageHeader); return(null); } catch (Exception) { _logger.Information("Failed to process AM with AMS 1.0 id: {uuid} {firmid}", amsv1Data.Uuid, amsv1Data.FirmId); throw; } }
protected override async Task PatchStubAsync(MaterialStub advMaterialStub, Amsv1MaterialData amsv1Data) { // original logo var logoElement = advMaterialStub.GetElementByType(MaterialElementType.CompositeBitmapImage); string uploadUrl = logoElement.UploadUrl; var materialId = advMaterialStub.Id; string fileName = $"{amsv1Data.ImageName}.{amsv1Data.ImageExt}"; var uploadHash = await _okapiClient.UploadFileAsync(materialId, new Uri(uploadUrl), fileName, amsv1Data.ImageData); logoElement.Value.Raw = uploadHash.Raw; // crop area logoElement.Value.CropArea = CropAreaFactory.Create(amsv1Data); // background color var bgColorElement = advMaterialStub.GetElementByType(MaterialElementType.Color); bgColorElement.Value.Raw = amsv1Data.BackgroundColor; advMaterialStub.Properties.Name = "logo_kb"; }
protected abstract Task PatchStubAsync(MaterialStub stub, Amsv1MaterialData amsv1Data);