public void ProcessUploadedFile(IFormFile file, ValidFileTypes fileType)
        {
            if (file == null || file.Length < 0)
            {
                throw new FileUploadException("No file found");
            }

            string fileExtention = Path.GetExtension(file.FileName);

            IValidationStrategy validationStrategy = _validationFactory.Make(fileType);

            ValidationDTO validationDto = validationStrategy.ValidationStrategy(file);

            if (!validationDto.ValidMimeTypes.Contains(file.ContentType, StringComparer.OrdinalIgnoreCase))
            {
                throw new FileUploadException("Invalid file type");
            }

            if (!validationDto.ValidExtentions.Contains(fileExtention, StringComparer.OrdinalIgnoreCase))
            {
                throw new FileUploadException("Invalid file type");
            }

            if (file.Length > validationDto.MaxFileSize)
            {
                throw new FileUploadException("File size to large");
            }
        }
        /// <summary>
        /// Modify the traveler details
        /// </summary>
        /// <param name="traveler">The Traveler</param>
        /// <returns></returns>
        public async Task UpdateTravelerAsync(Traveler traveler)
        {
            var dto = traveler.ToDTO();

            dto.TravelerUserIdentity = GetHardwareId();
            var serializedTraveler = JsonSerializerHelper.Serialize(dto);
            var uri      = new Uri(string.Format(Addresses.UpdateTravelerUri, traveler.TravelerId));
            var response = await PutAsync(uri, serializedTraveler);

            if (!response.Success)
            {
                ValidationDTO validations = JsonSerializerHelper.Deserialize <ValidationDTO>(response.Content);
                throw new ArgumentException(validations.ModelState.First().Value.First());
            }
        }
        public async Task <Traveler> CreateTravelerAsync(Traveler traveler)
        {
            var dto = traveler.ToDTO();

            dto.TravelerUserIdentity = GetHardwareId();
            var json     = JsonSerializerHelper.Serialize(dto);
            var uri      = new Uri(Addresses.CreateTravelerUri);
            var response = await PostAsync(uri, json);

            if (!response.Success)
            {
                ValidationDTO validations = JsonSerializerHelper.Deserialize <ValidationDTO>(response.Content);
                throw new ArgumentException(validations.ModelState.First().Value.First());
            }
            return(JsonSerializerHelper.Deserialize <TravelerDTO>(response.Content).ToObject());
        }