private void PrepareImagesContent(HudStoreUploadInfo uploadInfo, MultipartFormDataContent multiPartContent) { for (var i = 0; i < uploadInfo.Images.Length; i++) { var imageInfo = uploadInfo.Images[i]; if (!MediaTypeHeaderValue.TryParse(MimeMapping.GetMimeMapping(imageInfo.Path), out MediaTypeHeaderValue contentType)) { throw new DHBusinessException(new LocalizableString("Error_HudStore_Upload_BadImageFormat", imageInfo.Path)); } var streamContent = new StreamContent(File.OpenRead(imageInfo.Path)); streamContent.Headers.ContentType = contentType; multiPartContent.Add(streamContent, $"images[]", Path.GetFileName(imageInfo.Path)); } }
/// <summary> /// Uploads data to the HUD store /// </summary> /// <param name="uploadInfo">Data to upload</param> /// <exception cref="DHInternalException" /> public void Upload(HudStoreUploadInfo uploadInfo) { if (uploadInfo == null) { throw new ArgumentNullException(nameof(uploadInfo)); } try { uploadInfo.Serial = SecurityUtils.EncryptStringRSA(uploadInfo.Serial, encryptKey); var multiPartContent = new MultipartFormDataContent(); PrepareImagesContent(uploadInfo, multiPartContent); PrepareLayoutContent(uploadInfo, multiPartContent); var jsonString = JsonConvert.SerializeObject(uploadInfo); multiPartContent.Add(new StringContent(jsonString, Encoding.UTF8), "data"); var serviceResponse = Post <bool?>(HudStoreServiceNames.HudsService, HudStoreServiceCommands.Upload, multiPartContent); if (serviceResponse != null && serviceResponse.Result == true) { return; } var errorMessage = ConvertErrors(serviceResponse?.Errors); throw new DHBusinessException(new LocalizableString("Common_HudWebService_UploadingFailed", errorMessage)); } catch (DHBusinessException) { throw; } catch (Exception e) { throw new DHInternalException(new NonLocalizableString("Couldn't upload data to hud store web service."), e); } }
public void Upload(HudStoreUploadInfo uploadInfo) { service.Upload(uploadInfo); }
private void PrepareLayoutContent(HudStoreUploadInfo uploadInfo, MultipartFormDataContent multiPartContent) { multiPartContent.Add(new StringContent(uploadInfo.HudLayout, Encoding.UTF8), "layout"); }