public bool CanSwap(SwapOptions options, out string message) { if (!Account.HasTradingPair(options.OldPair)) { message = $"Cancel swap request {options.OldPair} for {options.NewPair}. Reason: pair does not exist"; return(false); } else if (Account.HasTradingPair(options.NewPair)) { message = $"Cancel swap request {options.OldPair} for {options.NewPair}. Reason: pair already exists"; return(false); } else if (!options.ManualOrder && !GetPairConfig(options.OldPair).SellEnabled) { message = $"Cancel swap request {options.OldPair} for {options.NewPair}. Reason: selling not enabled"; return(false); } else if (!options.ManualOrder && !GetPairConfig(options.NewPair).BuyEnabled) { message = $"Cancel swap request {options.OldPair} for {options.NewPair}. Reason: buying not enabled"; return(false); } else if (!GetMarketPairs().Contains(options.NewPair)) { message = $"Cancel swap request {options.OldPair} for {options.NewPair}. Reason: {options.NewPair} is not a valid pair"; return(false); } message = null; return(true); }
public static void Run() { var configuration = new Configuration(Common.MyAppSid, Common.MyAppKey); var apiInstance = new PagesApi(configuration); try { var fileInfo = new FileInfo { FilePath = "WordProcessing/four-pages.docx" }; var options = new SwapOptions { FileInfo = fileInfo, OutputPath = "Output/swap-pages.docx", FirstPageNumber = 2, SecondPageNumber = 4 }; var request = new SwapRequest(options); var response = apiInstance.Swap(request); Console.WriteLine("Output file path: " + response.Path); } catch (Exception e) { Console.WriteLine("Exception while calling api: " + e.Message); } }
public static void Run() { string filePath = Constants.SAMPLE_PPTX; string filePathOut = Path.Combine(Constants.GetOutputDirectoryPath(), Constants.SAMPLE_NAME + Path.GetExtension(filePath)); int pageNumber1 = 3; int pageNumber2 = 6; SwapOptions swapOptions = new SwapOptions(pageNumber2, pageNumber1); using (Merger merger = new Merger(filePath)) { merger.SwapPages(swapOptions); merger.Save(filePathOut); } Console.WriteLine("Source document was swapped successfully."); Console.WriteLine($"Check output {filePathOut}."); }
/// <summary> /// Swap by page numbers for password-protected document of known format /// </summary> /// <param name="fileName">source file</param> public static void SwapProtectedDocumentOfKnownFormat(string fileName) { //ExStart:SwapProtectedDocumentOfKnownFormat string sourceFile = CommonUtilities.sourcePath + fileName; // Preparing. string password = "******"; int pageNumber1 = 3; int pageNumber2 = 6; SwapOptions pagesOptions = new SwapOptions(pageNumber2, pageNumber1, FileFormat.Pdf, password); Stream openFile = new FileStream(sourceFile, FileMode.Open); // Main method. DocumentResult result = new DocumentHandler().SwapPages(openFile, pagesOptions); Stream documentStream = result.Stream; var fileStream = File.Create(CommonUtilities.outputPath + "OutPut." + FileFormat.Pdf); documentStream.CopyTo(fileStream); documentStream.Close(); //ExEnd:SwapProtectedDocumentOfKnownFormat }
public bool CanSwap(SwapOptions options, out string message) { if (!this.Account.HasTradingPair(options.OldPair)) { message = $"Cancel swap request {options.OldPair} for {options.NewPair}. Reason: pair does not exist"; return(false); } else if (this.Account.HasTradingPair(options.NewPair)) { message = $"Cancel swap request {options.OldPair} for {options.NewPair}. Reason: pair already exists"; return(false); } else if (!options.ManualOrder && !this.GetPairConfig(options.OldPair).SellEnabled) { message = $"Cancel swap request {options.OldPair} for {options.NewPair}. Reason: selling not enabled"; return(false); } else if (!options.ManualOrder && !this.GetPairConfig(options.NewPair).BuyEnabled) { message = $"Cancel swap request {options.OldPair} for {options.NewPair}. Reason: buying not enabled"; return(false); } else if (this.Account.GetBalance() < this.Account.GetTradingPair(options.OldPair).CurrentCost * 0.01M) { message = $"Cancel swap request {options.OldPair} for {options.NewPair}. Reason: not enough balance"; return(false); } else if (!this.Exchange.GetMarketPairs(this.Config.Market).Contains(options.NewPair)) { message = $"Cancel swap request {options.OldPair} for {options.NewPair}. Reason: {options.NewPair} is not a valid pair"; return(false); } message = null; return(true); }
public void Swap(SwapOptions options) { lock (syncRoot) { PauseTasks(); try { if (CanSwap(options, out string message)) { ITradingPair oldTradingPair = Account.GetTradingPair(options.OldPair); var sellOptions = new SellOptions(options.OldPair) { Swap = true, ManualOrder = options.ManualOrder, Metadata = new OrderMetadata { SwapPair = options.NewPair } }; if (CanSell(sellOptions, out message)) { decimal currentMargin = oldTradingPair.CurrentMargin; decimal additionalCosts = oldTradingPair.Cost - oldTradingPair.CurrentCost + (oldTradingPair.Metadata.AdditionalCosts ?? 0); int additionalDCALevels = oldTradingPair.DCALevel; IOrderDetails sellOrderDetails = orderingService.PlaceSellOrder(sellOptions); if (!Account.HasTradingPair(options.OldPair)) { var buyOptions = new BuyOptions(options.NewPair) { Swap = true, ManualOrder = options.ManualOrder, MaxCost = sellOrderDetails.Cost, Metadata = options.Metadata }; buyOptions.Metadata.LastBuyMargin = currentMargin; buyOptions.Metadata.SwapPair = options.OldPair; buyOptions.Metadata.AdditionalDCALevels = additionalDCALevels; buyOptions.Metadata.AdditionalCosts = additionalCosts; IOrderDetails buyOrderDetails = orderingService.PlaceBuyOrder(buyOptions); var newTradingPair = Account.GetTradingPair(options.NewPair) as TradingPair; if (newTradingPair != null) { newTradingPair.Metadata.AdditionalCosts += CalculateOrderFees(sellOrderDetails); loggingService.Info($"Swap {oldTradingPair.FormattedName} for {newTradingPair.FormattedName}. " + $"Old margin: {oldTradingPair.CurrentMargin:0.00}, new margin: {newTradingPair.CurrentMargin:0.00}"); } else { loggingService.Info($"Unable to swap {options.OldPair} for {options.NewPair}. Reason: failed to buy {options.NewPair}"); notificationService.Notify($"Unable to swap {options.OldPair} for {options.NewPair}: Failed to buy {options.NewPair}"); } } else { loggingService.Info($"Unable to swap {options.OldPair} for {options.NewPair}. Reason: failed to sell {options.OldPair}"); } } else { loggingService.Info($"Unable to swap {options.OldPair} for {options.NewPair}: {message}"); } } else { loggingService.Info(message); } } finally { ContinueTasks(); } } }
public void Swap(SwapOptions options) { lock (SyncRoot) { if (CanSwap(options, out string message)) { ITradingPair oldTradingPair = Account.GetTradingPair(options.OldPair); var sellOptions = new SellOptions(options.OldPair) { Swap = true, SwapPair = options.NewPair, ManualOrder = options.ManualOrder }; if (CanSell(sellOptions, out message)) { decimal currentMargin = oldTradingPair.CurrentMargin; decimal additionalCosts = oldTradingPair.AverageCostPaid - oldTradingPair.CurrentCost + (oldTradingPair.Metadata.AdditionalCosts ?? 0); int additionalDCALevels = oldTradingPair.DCALevel; IOrderDetails sellOrderDetails = tradingTimedTask.PlaceSellOrder(sellOptions); if (!Account.HasTradingPair(options.OldPair)) { var buyOptions = new BuyOptions(options.NewPair) { Swap = true, ManualOrder = options.ManualOrder, MaxCost = sellOrderDetails.AverageCost, Metadata = options.Metadata }; buyOptions.Metadata.LastBuyMargin = currentMargin; buyOptions.Metadata.SwapPair = options.OldPair; buyOptions.Metadata.AdditionalDCALevels = additionalDCALevels; buyOptions.Metadata.AdditionalCosts = additionalCosts; IOrderDetails buyOrderDetails = tradingTimedTask.PlaceBuyOrder(buyOptions); var newTradingPair = Account.GetTradingPair(options.NewPair) as TradingPair; if (newTradingPair != null) { if (sellOrderDetails.Fees != 0 && sellOrderDetails.FeesCurrency != null) { if (sellOrderDetails.FeesCurrency == Config.Market) { newTradingPair.Metadata.AdditionalCosts += sellOrderDetails.Fees; } else { string feesPair = sellOrderDetails.FeesCurrency + Config.Market; newTradingPair.Metadata.AdditionalCosts += GetCurrentPrice(feesPair) * sellOrderDetails.Fees; } } loggingService.Info($"Swap {oldTradingPair.FormattedName} for {newTradingPair.FormattedName}. Old margin: {oldTradingPair.CurrentMargin:0.00}, new margin: {newTradingPair.CurrentMargin:0.00}"); } else { loggingService.Info($"Unable to swap {options.OldPair} for {options.NewPair}. Reason: failed to buy {options.NewPair}"); notificationService.Notify($"Unable to swap {options.OldPair} for {options.NewPair}: Failed to buy {options.NewPair}"); } } else { loggingService.Info($"Unable to swap {options.OldPair} for {options.NewPair}. Reason: failed to sell {options.OldPair}"); } } else { loggingService.Info($"Unable to swap {options.OldPair} for {options.NewPair}: {message}"); } } else { loggingService.Info(message); } } }