using System.Collections.Generic;
using System.Net.Http;
using System.Text;
using Newtonsoft.Json;

namespace SendungsportalClient
{
    // Modul 3 (REST): spricht die Schnittstelle an. GET ist als Beispiel
    // fertig, POST wertet ihr beim Statuscode noch aus (TODO).
    public class RestClient
    {
        private readonly HttpClient _client;
        private readonly string _basis;

        public RestClient(string basisUrl, string apiKey)
        {
            _basis = basisUrl.TrimEnd('/');
            _client = new HttpClient();
            _client.DefaultRequestHeaders.Add("X-Api-Key", apiKey);
        }

        // GET /auftraege  ->  Liste aller Auftraege
        public List<Auftrag> HoleAlle()
        {
            string url = _basis + "/auftraege";
            string json = _client.GetStringAsync(url).GetAwaiter().GetResult();
            return JsonConvert.DeserializeObject<List<Auftrag>>(json);
        }

        // POST /auftraege  ->  legt einen Auftrag an
        public bool Sende(Auftrag a)
        {
            string url = _basis + "/auftraege";
            string json = JsonConvert.SerializeObject(a);
            StringContent inhalt = new StringContent(json, Encoding.UTF8, "application/json");
            HttpResponseMessage antwort = _client.PostAsync(url, inhalt).GetAwaiter().GetResult();

            // TODO: Statuscode auswerten. Erfolg ist 201 (Created).
            return antwort.IsSuccessStatusCode;
        }
    }
}
