public static void Run([TimerTrigger("0 */50 * * * *", RunOnStartup = true)] TimerInfo myTimer, TraceWriter log, ExecutionContext context) { try { Logger.Init(log); log.Info($"Starting at {DateTime.Now} in {context.FunctionAppDirectory}"); var azureContainerManager = new AzureContainerManager(context.FunctionAppDirectory); var containerStatus = azureContainerManager.GetStatus(); Logger.Info($"Status is {containerStatus}"); switch (containerStatus) { case ContainerStatus.Missing: Logger.Info("Starting container"); azureContainerManager.StartImageAnalyzer(); break; case ContainerStatus.ExceededDuration: azureContainerManager.StopImageAnalyzer(); break; } log.Info($"Finished at {DateTime.Now}"); } catch (Exception e) { log.Info(e.ToString()); } }
public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequestMessage req, TraceWriter log) { try { CryptoTrader.Timestamp = DateTime.Now.Ticks; Logger.Init(log); Logger.Log($"Started function at {DateTime.UtcNow}"); AzureContainerManager azureContainerManager = new AzureContainerManager(); var status = req.GetQueryNameValuePairs() .FirstOrDefault(q => string.Compare(q.Key, "status", StringComparison.OrdinalIgnoreCase) == 0) .Value; if (status == "loaded") { foreach (var marketChart in MarketCharts) { Logger.Log($"Retrieving signal for {marketChart.Market}"); var cryptoTrader = new CryptoTrader(); await cryptoTrader.RetrieveAndProcessSignal(Environment.GetEnvironmentVariable("containerUrl"), marketChart); } azureContainerManager.StopImageAnalyzer(); } Logger.Log($"Finished function at {DateTime.UtcNow}"); } catch (Exception e) { Logger.Log(e.ToString()); return(req.CreateResponse(HttpStatusCode.InternalServerError, e.ToString())); } return(req.CreateResponse(HttpStatusCode.OK, "invalid")); }
public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequestMessage req, TraceWriter log, ExecutionContext context) { try { CryptoTrader.Timestamp = DateTime.Now.Ticks; Logger.Init(log); Logger.Info($"Started function at {DateTime.UtcNow}"); AzureContainerManager.StopIfRunning(context.FunctionAppDirectory); var timestamp = GetParam(req, "timestamp"); var buyNow = GetParam(req, "symbol"); var isBullish = GetParam(req, "bullish"); var env = GetParam(req, "env"); if (string.IsNullOrEmpty(buyNow) == false) { string message; if (string.IsNullOrWhiteSpace(isBullish) == false) { message = await CryptoTrader.CreateTrades(SignalType.Bullish, TradedSymbols.MarketCharts.FirstOrDefault(m => m.Market == buyNow), env); } else { message = await CryptoTrader.CreateTrades(SignalType.Bearish, TradedSymbols.MarketCharts.FirstOrDefault(m => m.Market == buyNow), env); } return(req.CreateResponse(HttpStatusCode.OK, message)); } var signalManager = new SignalManager(); return(await signalManager.ProcessImages(timestamp)); } catch (Exception e) { Logger.Error(e.ToString()); return(req.CreateResponse(HttpStatusCode.InternalServerError, e.ToString())); } finally { Logger.Info($"Finished function at {DateTime.UtcNow}"); } }
public static void Run([TimerTrigger("0 */15 * * * *", RunOnStartup = true)] TimerInfo myTimer, TraceWriter log) { try { Logger.Init(log); log.Info($"Starting at {DateTime.Now}"); var containerManager = new ContainerManager(); var containerStatus = containerManager.GetStatus(); Logger.Log($"Status is {containerStatus}"); if (containerStatus == ContainerStatus.Missing) { Logger.Log($"Starting container"); var azureContainerManager = new AzureContainerManager(); azureContainerManager.StartImageAnalyzer(); } log.Info($"Finished at {DateTime.Now}"); } catch (Exception e) { log.Info(e.ToString()); } }