public async Task Run() { // create a client for interacting with the NEM API var nemClient = new NEMClient(); var data = await nemClient.Get5MinDataAsync(); var httpClient = new HttpClient(); var authClient = new AuthenticationClient(httpClient); var token = await authClient.RequestTokenAsync("0", new TokenRequest { Username = settings.UserName, Password = settings.Password }); token = token.Trim('\"'); // there may be extra quotes on that string httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); try { var amphoraeClient = new AmphoraeClient(httpClient); var map = Mapping.Map; // load the Map // run in parallel for performance var nswTask = Task.Run(() => UploadPointsAsync(Region.Nsw1, data.Data.Where(d => d.Region == Region.Nsw1), amphoraeClient, map)); var vicTask = Task.Run(() => UploadPointsAsync(Region.Vic1, data.Data.Where(d => d.Region == Region.Vic1), amphoraeClient, map)); var qldTask = Task.Run(() => UploadPointsAsync(Region.Qld1, data.Data.Where(d => d.Region == Region.Qld1), amphoraeClient, map)); var saTask = Task.Run(() => UploadPointsAsync(Region.Sa1, data.Data.Where(d => d.Region == Region.Sa1), amphoraeClient, map)); var tasTask = Task.Run(() => UploadPointsAsync(Region.Tas1, data.Data.Where(d => d.Region == Region.Tas1), amphoraeClient , map)); await Task.WhenAll(nswTask, vicTask, qldTask, saTask, tasTask); } catch (ApiException ex) { log.LogError($"Engine Failed, Message: {ex.Message} ", ex); throw ex; } }
private async Task UploadPointsAsync(Region r, IEnumerable <Point> points, AmphoraeClient amphoraeClient, System.Collections.Generic.Dictionary <Region, string> map) { log.LogTrace($"First Point: {JsonConvert.SerializeObject(points.FirstOrDefault())}"); var batch = new List <Dictionary <string, object> >(); foreach (var p in points) { var s = mapper.Map <AmphoraSignal>(p); batch.Add(s.ToDictionary()); } var id = map[r]; log.LogInformation($"Using Amphora {id} for region {Enum.GetName(typeof(Region), r)}"); await amphoraeClient.UploadSignalBatchAsync(id, "0", batch); }
static async Task Main(string[] args) { Console.WriteLine("Starting sample"); // AUTHENTICATE var authClient = new AuthenticationClient(httpClient); var user = new LoginRequest { Username = "", // REPLACE THESE Password = "" }; var startTime = DateTime.Now; var token = await authClient.RequestTokenAsync(user); var endTime = DateTime.Now; Console.WriteLine($"Acquiring token took {(endTime - startTime).TotalSeconds}"); httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); // Read your own user data. var userClient = new UsersClient(httpClient); var self = await userClient.ReadSelfAsync(); Console.WriteLine($"Hello {self.FullName}"); var amphoraClient = new AmphoraeClient(httpClient); // get my first 10 amphora var myAmphorae = await amphoraClient.ListAsync("self", "created", 0, 10); foreach (var a in myAmphorae) { Console.WriteLine($"'{a.Name}' costs ${a.Price}"); } }