Пример #1
0
        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;
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
        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}");
            }
        }