private static List <string> ExportMultipleArtboards(string tempDirectoryPath, string baseFile) { var zipFiles = new List <string>(); _illustratorActionWrapper.ExportMultipleArtboards(baseFile, tempDirectoryPath); zipFiles = new List <string>(); if (GetDirectorySize(tempDirectoryPath) <= 20000000) // ZIP FILES CAN'T BE MORE THAN 20MB { zipFiles.Add(_systemUtility.CreateZipFileFromDirectory(baseFile, tempDirectoryPath)); return(zipFiles); } GroupFilesByType(tempDirectoryPath); var subDirectories = Directory.GetDirectories(tempDirectoryPath); if (subDirectories.Length < 1) { throw new EtsyListItException("An error has occurred in creating subdirectories for images."); } if (subDirectories.Length > 5) { CombineSmallestDirectories(tempDirectoryPath); } foreach (var subDirectory in Directory.GetDirectories(tempDirectoryPath)) { var zip = _systemUtility.CreateZipFileFromDirectory(subDirectory.Substring(subDirectory.LastIndexOf(@"\")), subDirectory); zipFiles.Add(zip); } foreach (var zip in zipFiles) { var fileInfo = new FileInfo(zip); if (fileInfo.Length > 20000000) { throw new EtsyListItException("Unable to list files. File size too large."); } } return(zipFiles); }
static void Main(string[] args) { try { #region IOC _container = ConfigureStructureMap(); _settingsUtility = _container.GetInstance <ISettingsUtility>(); var commandLineUtility = _container.GetInstance <ICommandLineUtility>(); _listingWrapper = _container.GetInstance <IListingWrapper>(); _illustratorActionWrapper = _container.GetInstance <IIllustratorActionWrapper>(); _systemUtility = _container.GetInstance <ISystemUtility>(); #endregion var listItArgs = commandLineUtility.ParseCommandLineArguments(args); #region File System Exception Handling if (listItArgs.WorkingDirectory.IsNullOrEmpty()) { throw new EtsyListItException("Working directory can not be empty."); } if (listItArgs.OutputDirectory.IsNullOrEmpty()) { throw new EtsyListItException("Output directory can not be empty."); } var baseFiles = Directory.GetFiles(listItArgs.WorkingDirectory).Where(x => x.Contains(".ai")).ToList(); if (!baseFiles.Any()) { throw new EtsyListItException("There are no files to list!"); } #endregion foreach (var baseFile in baseFiles) { var tempDirectoryPath = Path.Combine(listItArgs.WorkingDirectory, Path.GetFileNameWithoutExtension(baseFile)); Directory.CreateDirectory(tempDirectoryPath); try { var artboardCount = _illustratorActionWrapper.CountArtboards(baseFile); var zipFiles = new List <string>(); var watermarks = new List <string>(); if (artboardCount > 1) { zipFiles = ExportMultipleArtboards(tempDirectoryPath, baseFile); watermarks = WatermarkMultipleArtboards(artboardCount, baseFile, tempDirectoryPath, listItArgs.WatermarkFile); } else { _illustratorActionWrapper.ExportAll(baseFile, tempDirectoryPath); watermarks.Add(_illustratorActionWrapper.SaveFileWithWatermark(listItArgs.WatermarkFile, baseFile, listItArgs.WorkingDirectory)); zipFiles.Add(_systemUtility.CreateZipFileFromDirectory(baseFile, tempDirectoryPath)); } bool.TryParse(listItArgs.AddToEtsy, out bool addToEtsy); #region Etsy Export if (addToEtsy) { Console.Write("Enter custom title: "); var customTitle = Console.ReadLine(); Console.Write("Enter price: "); var price = Console.ReadLine(); Console.Write("Enter tags: "); var tags = Console.ReadLine(); var authToken = GetAuthToken(listItArgs); if (!authToken.IsValidEtsyToken()) { throw new EtsyListItException( "Invalid AuthToken. Please use the correct Verifier key obtained from Etsy to generate your permanent token credentials."); } var listing = PopulateGraphicListing(watermarks, zipFiles, listItArgs, customTitle, price, tags); listing = _listingWrapper.CreateDigitalListingWithImages(listing, authToken); bool.TryParse(listItArgs.PublishListing, out bool publish); if (publish) { listing.State = "active"; _listingWrapper.UpdateListing(listing, authToken); } Console.WriteLine($"Listing created. New listing ID: {listing.ID}"); Directory.Delete(tempDirectoryPath, true); File.Move(baseFile, Path.Combine(listItArgs.OutputDirectory, Path.GetFileName(baseFile))); foreach (var watermark in watermarks) { File.Delete(watermark); } } else { Console.WriteLine("Add listing to Etsy feature turned OFF. Use command line arg -add true to turn on."); } #endregion Console.Write("Press any key to end."); Console.ReadLine(); } catch (Exception ex) { Console.WriteLine(ex.Message); Directory.Delete(tempDirectoryPath, true); throw; } } } catch (Exception ex) { Console.WriteLine(ex.Message); Console.Write("Type any key to quit."); Console.ReadLine(); } }