Exemple #1
0
        public async Task <Employee> Get(int id)
        {
            // Set the Accept header.
            _httpClient.DefaultRequestHeaders.Clear();
            _httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(_dataFormat));
            string url = @"http://localhost:{_dataWarehousePortNumber}/api/employees/{id}";
            // Make a remote request.
            HttpResponseMessage response = await _httpClient.GetAsync(url);

            // Read response body and deserialize it.
            string body = await response.Content.ReadAsStringAsync();

            if (_dataFormat == "application/xml")
            {
                // Validate XML document.
                ValidateXmlSchema(body);
                // Deserialize XML document.
                Employee employee = await UtilityXml.DeserializeXmlAsync <Employee>(body);

                return(employee);
            }

            if (_dataFormat == "application/json")
            {
                Employee employee = await UtilityJson.DeserializeJsonAsync <Employee>(body);

                return(employee);
            }

            return(null);
        }
        public async Task <List <Employee> > Get(int offset, int limit)
        {
            // Set the Accept header.
            _httpClient.DefaultRequestHeaders.Clear();
            _httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(_dataFormat));
            string url = @"http://localhost:" + _dataWarehousePortNumber + "/api/employees/?offset= " + offset + "&limit= " + limit;
            // Make a remote request.
            HttpResponseMessage response = await _httpClient.GetAsync(url);

            // Read response body and deserialize it.
            string body = await response.Content.ReadAsStringAsync();

            if (_dataFormat == "application/xml")
            {
                // Validate XML document.
                ValidateXmlSchema(body);
                // Deserialize XML document.
                Employee[] employees = await UtilityXml.DeserializeXmlAsync <Employee[]>(body);

                return(employees.ToList());
            }

            if (_dataFormat == "application/json")
            {
                Employee[] employees = await UtilityJson.DeserializeJsonAsync <Employee[]>(body);

                return(employees.ToList());
            }

            // Return empty list.
            return(new List <Employee>());
        }
Exemple #3
0
        private static void Main(string[] args)
        {
            Console.WriteLine("Server application...");
            Thread.Sleep(1000);
            Task t = Task.Run(async() =>
            {
                // === Read settings ===
                // Emplyees file name.
                string employeesFileName = args[0];
                // Server port.
                string serverPortSetting = args[1];
                int serverPort           = int.Parse(serverPortSetting);
                // Data format.
                string dataFormat = args[2];

                // Read Employees data from the XML file.
                string employeesDataText =
                    File.ReadAllText("D:\\DistributionCollections\\" + employeesFileName);

                Employee[] employees =
                    await UtilityXml.DeserializeXmlAsync <Employee[]>(employeesDataText, rootElementName: "Employees");

                // Add Employees to the repository.
                employees.ToList().ForEach(e =>
                {
                    EmployeeRepository.Instance.Add(e);
                });

                // PUT all employees data to the DataWarehouse.
                foreach (Employee employee in employees)
                {
                    await SendEmployee(employee, dataFormat, serverPort);
                }

                // Run the HTTP Transport Service.
                var httpTransportService = new HttpTransportService(serverPort, dataFormat);
                httpTransportService.Start();
                Thread.Sleep(60000);
                httpTransportService.Stop();
            });

            t.Wait();
            Console.ReadLine();
        }
Exemple #4
0
        private void UpdateEmployee(HttpListenerRequest request, HttpListenerResponse response)
        {
            // Deserialize Employee object.
            string body = String.Empty;

            using (StreamReader reader = new StreamReader(request.InputStream))
            {
                body = reader.ReadToEnd();
            }

            Employee employee = null;

            try
            {
                if (_dataFormat == "application/xml")
                {
                    employee = UtilityXml.DeserializeXml <Employee>(body);
                }
                else if (_dataFormat == "application/json")
                {
                    employee = UtilityJson.DeserializeJson <Employee>(body);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(@"ERROR: Failed to deserialize the Employee object - {ex.Message}");
            }

            if (employee == null)
            {
                response.StatusCode = 400;
                response.Close();
                return;
            }

            // Perform the actual update.
            _repository.Update(employee);

            // Construct and send the response.
            response.StatusCode = 200;
            response.Close();

            Console.WriteLine(@"POST: Updated employee with ID {employee.EmployeeId}");
        }