From bf2649ca35d81f8863146bccac8210068f3bc762 Mon Sep 17 00:00:00 2001 From: Blagovest-Hristov Date: Mon, 20 Mar 2023 18:05:33 +0200 Subject: [PATCH 1/8] =?UTF-8?q?Wrapper=20Added=F0=9F=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DevDates API Wrapper.csproj | 10 ++ DevDates API Wrapper/Wrapper.cs | 139 ++++++++++++++++++ DevDatesAPIWrapper/Class1.cs | 7 + DevDatesAPIWrapper/DevDatesAPIWrapper.csproj | 9 ++ DevDatesWrapper/DevDatesWrapper.csproj | 9 ++ DevDatesWrapper/Wrapper.cs | 12 ++ 6 files changed, 186 insertions(+) create mode 100644 DevDates API Wrapper/DevDates API Wrapper.csproj create mode 100644 DevDates API Wrapper/Wrapper.cs create mode 100644 DevDatesAPIWrapper/Class1.cs create mode 100644 DevDatesAPIWrapper/DevDatesAPIWrapper.csproj create mode 100644 DevDatesWrapper/DevDatesWrapper.csproj create mode 100644 DevDatesWrapper/Wrapper.cs diff --git a/DevDates API Wrapper/DevDates API Wrapper.csproj b/DevDates API Wrapper/DevDates API Wrapper.csproj new file mode 100644 index 0000000..48b118d --- /dev/null +++ b/DevDates API Wrapper/DevDates API Wrapper.csproj @@ -0,0 +1,10 @@ + + + + net7.0 + DevDates_API_Wrapper + enable + enable + + + diff --git a/DevDates API Wrapper/Wrapper.cs b/DevDates API Wrapper/Wrapper.cs new file mode 100644 index 0000000..e76e6ce --- /dev/null +++ b/DevDates API Wrapper/Wrapper.cs @@ -0,0 +1,139 @@ +using System.Net.Http; +using System.Threading.Tasks; +using Newtonsoft.Json; + +namespace DevDatesApiWrapper +{ + public class DevDatesApiWrapper + { + private readonly HttpClient _httpClient; + private readonly string _baseUrl = "https://api.devdates.com/"; + + public DevDatesApiWrapper() + { + _httpClient = new HttpClient(); + _httpClient.DefaultRequestHeaders.Add("Accept", "application/json"); + } + + public async Task GetUser(int id) + { + var response = await _httpClient.GetAsync($"{_baseUrl}users/{id}"); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + } + + public async Task GetPhotos(int id) + { + var response = await _httpClient.GetAsync($"{_baseUrl}users/{id}/photos"); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + } + + public async Task GetInterests(int id) + { + var response = await _httpClient.GetAsync($"{_baseUrl}users/{id}/interests"); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + } + + public async Task GetConnectedServices(int id) + { + var response = await _httpClient.GetAsync($"{_baseUrl}users/{id}/connected-services"); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + } + + public async Task GetSexualPreferences(int id) + { + var response = await _httpClient.GetAsync($"{_baseUrl}users/{id}/sexual-preferences"); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + } + + public async Task GetShortUserInfo(int id) + { + var response = await _httpClient.GetAsync($"{_baseUrl}users/{id}/short-info"); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + } + + public async Task GetDetailedUserInfo(int id) + { + var response = await _httpClient.GetAsync($"{_baseUrl}users/{id}/detailed-info"); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + } + + public async Task GetPhoto(int id, int photoId) + { + var response = await _httpClient.GetAsync($"{_baseUrl}users/{id}/photos/{photoId}"); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + } + + + + public class User + { + public ShortUserInfo ShortInfo { get; set; } + public DetailedUserInfo DetailedInfo { get; set; } + public ConnectedService[] ConnectedServices { get; set; } + } + + public record ShortUserInfo + { + public string Name { get; set; } + public int Age { get; set; } + public string Gender { get; set; } + public SexualPreference[] SexualPreferences { get; set; } + public Photo[] Photos { get; set; } + } + + public record DetailedUserInfo + { + public ShortUserInfo? ShortInfo { get; set; } + public string Bio { get; set; } + public Interest[] Interests { get; set; } + } + + public record ConnectedService + { + public string Name { get; set; } + public string Url { get; set; } + } + + public record SexualPreference + { + public string Gender { get; set; } + public string Orientation { get; set; } + } + + public record Photo + { + public string Url { get; set; } + public string Description { get; set; } + } + + public record Interest + { + public string Name { get; set; } + public string Category { get; set; } + } + } +} diff --git a/DevDatesAPIWrapper/Class1.cs b/DevDatesAPIWrapper/Class1.cs new file mode 100644 index 0000000..0d3b8f5 --- /dev/null +++ b/DevDatesAPIWrapper/Class1.cs @@ -0,0 +1,7 @@ +namespace DevDatesAPIWrapper +{ + public class Class1 + { + + } +} \ No newline at end of file diff --git a/DevDatesAPIWrapper/DevDatesAPIWrapper.csproj b/DevDatesAPIWrapper/DevDatesAPIWrapper.csproj new file mode 100644 index 0000000..132c02c --- /dev/null +++ b/DevDatesAPIWrapper/DevDatesAPIWrapper.csproj @@ -0,0 +1,9 @@ + + + + net6.0 + enable + enable + + + diff --git a/DevDatesWrapper/DevDatesWrapper.csproj b/DevDatesWrapper/DevDatesWrapper.csproj new file mode 100644 index 0000000..132c02c --- /dev/null +++ b/DevDatesWrapper/DevDatesWrapper.csproj @@ -0,0 +1,9 @@ + + + + net6.0 + enable + enable + + + diff --git a/DevDatesWrapper/Wrapper.cs b/DevDatesWrapper/Wrapper.cs new file mode 100644 index 0000000..7be9d18 --- /dev/null +++ b/DevDatesWrapper/Wrapper.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DevDatesWrapper +{ + internal class Class2 + { + } +} From 2fe10559df7cad8773cfe4838420837f2645c1db Mon Sep 17 00:00:00 2001 From: Blagovest-Hristov Date: Mon, 20 Mar 2023 18:07:23 +0200 Subject: [PATCH 2/8] wrapper --- DevDates API Wrapper/DevDates API Wrapper.csproj | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/DevDates API Wrapper/DevDates API Wrapper.csproj b/DevDates API Wrapper/DevDates API Wrapper.csproj index 48b118d..2f0c008 100644 --- a/DevDates API Wrapper/DevDates API Wrapper.csproj +++ b/DevDates API Wrapper/DevDates API Wrapper.csproj @@ -7,4 +7,8 @@ enable + + + + From 2bc479c842e8a1d958eaf5beb70a06e7802b8719 Mon Sep 17 00:00:00 2001 From: Blagovest-Hristov Date: Mon, 20 Mar 2023 18:11:07 +0200 Subject: [PATCH 3/8] Wrapper update --- DevDatesAPI.sln | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/DevDatesAPI.sln b/DevDatesAPI.sln index eba45d3..b21c58a 100644 --- a/DevDatesAPI.sln +++ b/DevDatesAPI.sln @@ -1,6 +1,15 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevDatesAPI", "DevDatesAPI\DevDatesAPI.csproj", "{D17AD882-6EE1-4BA1-8003-FF8509EF2B8D}" +# Visual Studio Version 17 +VisualStudioVersion = 17.4.33213.308 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DevDatesAPI", "DevDatesAPI\DevDatesAPI.csproj", "{D17AD882-6EE1-4BA1-8003-FF8509EF2B8D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DevDates.Model", "DevDates.Model\DevDates.Model.csproj", "{2FD5579F-464F-432B-B0DD-510B636CC921}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wrapper", "Wrapper\Wrapper.csproj", "{9E27A2E5-7AB0-4C43-9F31-5CAE78EC1A1C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevDates API Wrapper", "DevDates API Wrapper\DevDates API Wrapper.csproj", "{BA513A6A-18E9-41F6-A1EB-B026D2041CE1}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -12,5 +21,23 @@ Global {D17AD882-6EE1-4BA1-8003-FF8509EF2B8D}.Debug|Any CPU.Build.0 = Debug|Any CPU {D17AD882-6EE1-4BA1-8003-FF8509EF2B8D}.Release|Any CPU.ActiveCfg = Release|Any CPU {D17AD882-6EE1-4BA1-8003-FF8509EF2B8D}.Release|Any CPU.Build.0 = Release|Any CPU + {2FD5579F-464F-432B-B0DD-510B636CC921}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2FD5579F-464F-432B-B0DD-510B636CC921}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2FD5579F-464F-432B-B0DD-510B636CC921}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2FD5579F-464F-432B-B0DD-510B636CC921}.Release|Any CPU.Build.0 = Release|Any CPU + {9E27A2E5-7AB0-4C43-9F31-5CAE78EC1A1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9E27A2E5-7AB0-4C43-9F31-5CAE78EC1A1C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9E27A2E5-7AB0-4C43-9F31-5CAE78EC1A1C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9E27A2E5-7AB0-4C43-9F31-5CAE78EC1A1C}.Release|Any CPU.Build.0 = Release|Any CPU + {BA513A6A-18E9-41F6-A1EB-B026D2041CE1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BA513A6A-18E9-41F6-A1EB-B026D2041CE1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BA513A6A-18E9-41F6-A1EB-B026D2041CE1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BA513A6A-18E9-41F6-A1EB-B026D2041CE1}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {F12B7BC0-D0F1-4B1A-B4B6-46CEE43FFB29} EndGlobalSection EndGlobal From 8c8c98742e0ec4ca5d4a27e3c8f4f130472fae39 Mon Sep 17 00:00:00 2001 From: Blagovest-Hristov Date: Wed, 22 Mar 2023 12:16:15 +0200 Subject: [PATCH 4/8] Revert "wrapper" This reverts commit 2fe10559df7cad8773cfe4838420837f2645c1db. --- DevDates API Wrapper/DevDates API Wrapper.csproj | 4 ---- 1 file changed, 4 deletions(-) diff --git a/DevDates API Wrapper/DevDates API Wrapper.csproj b/DevDates API Wrapper/DevDates API Wrapper.csproj index 2f0c008..48b118d 100644 --- a/DevDates API Wrapper/DevDates API Wrapper.csproj +++ b/DevDates API Wrapper/DevDates API Wrapper.csproj @@ -7,8 +7,4 @@ enable - - - - From 944f0822dbcdb70e1c0c3f45dd5f6be44297417b Mon Sep 17 00:00:00 2001 From: Blagovest-Hristov Date: Wed, 22 Mar 2023 12:19:02 +0200 Subject: [PATCH 5/8] uhhhh --- DevDatesAPIWrapper/Class1.cs | 7 ------- DevDatesAPIWrapper/DevDatesAPIWrapper.csproj | 9 --------- DevDatesWrapper/DevDatesWrapper.csproj | 9 --------- DevDatesWrapper/Wrapper.cs | 12 ------------ 4 files changed, 37 deletions(-) delete mode 100644 DevDatesAPIWrapper/Class1.cs delete mode 100644 DevDatesAPIWrapper/DevDatesAPIWrapper.csproj delete mode 100644 DevDatesWrapper/DevDatesWrapper.csproj delete mode 100644 DevDatesWrapper/Wrapper.cs diff --git a/DevDatesAPIWrapper/Class1.cs b/DevDatesAPIWrapper/Class1.cs deleted file mode 100644 index 0d3b8f5..0000000 --- a/DevDatesAPIWrapper/Class1.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace DevDatesAPIWrapper -{ - public class Class1 - { - - } -} \ No newline at end of file diff --git a/DevDatesAPIWrapper/DevDatesAPIWrapper.csproj b/DevDatesAPIWrapper/DevDatesAPIWrapper.csproj deleted file mode 100644 index 132c02c..0000000 --- a/DevDatesAPIWrapper/DevDatesAPIWrapper.csproj +++ /dev/null @@ -1,9 +0,0 @@ - - - - net6.0 - enable - enable - - - diff --git a/DevDatesWrapper/DevDatesWrapper.csproj b/DevDatesWrapper/DevDatesWrapper.csproj deleted file mode 100644 index 132c02c..0000000 --- a/DevDatesWrapper/DevDatesWrapper.csproj +++ /dev/null @@ -1,9 +0,0 @@ - - - - net6.0 - enable - enable - - - diff --git a/DevDatesWrapper/Wrapper.cs b/DevDatesWrapper/Wrapper.cs deleted file mode 100644 index 7be9d18..0000000 --- a/DevDatesWrapper/Wrapper.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace DevDatesWrapper -{ - internal class Class2 - { - } -} From 5b58b1d1f9d40848e7f421b341798d53321647fa Mon Sep 17 00:00:00 2001 From: Matey-Nikolov Date: Tue, 28 Mar 2023 20:09:09 +0300 Subject: [PATCH 6/8] =?UTF-8?q?=D0=BD=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Дайте я на някого, който разбира как се пише wrapper. --- DevDatesAPI/Controllers/InterestController.cs | 2 ++ .../Controllers/SexualPreferencesController.cs | 14 ++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/DevDatesAPI/Controllers/InterestController.cs b/DevDatesAPI/Controllers/InterestController.cs index 7f5c519..ffc9b38 100644 --- a/DevDatesAPI/Controllers/InterestController.cs +++ b/DevDatesAPI/Controllers/InterestController.cs @@ -41,5 +41,7 @@ public Interest GetInterestsInfo(int id) }).ToArray() }).ToArray()[0]; } + + } } \ No newline at end of file diff --git a/DevDatesAPI/Controllers/SexualPreferencesController.cs b/DevDatesAPI/Controllers/SexualPreferencesController.cs index c75ef72..acf4b1e 100644 --- a/DevDatesAPI/Controllers/SexualPreferencesController.cs +++ b/DevDatesAPI/Controllers/SexualPreferencesController.cs @@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Mvc; using System.Xml.Linq; using DevDates.DBModel.Data; +using DevDates.DBModel.Data.Models; namespace DevDatesAPI.Controllers { @@ -36,19 +37,24 @@ public SexualPreference GetPreference(int id) [HttpDelete("preference/delete/{id}")] public void Delete(int id) { - // TODO + var context = _context.Genders.Where(g => g.Id == id); + + _context.Remove(context); + _context.SaveChanges(); } [HttpPost("preference/post/{id}")] public void Post() { + //var context = _context.Genders.Find(g => g.Id == id); // TODO } [HttpPut("preference/put/{id}")] - public void put(int id) + public void put(int id, [FromBody] SexualPreference preference) { - // TODO + //var context = _context.Genders.Find(g => g.Id == id); + //TODO } } -} +} \ No newline at end of file From 29beee095dd5d314cfec1a1c7e42d01baeac9105 Mon Sep 17 00:00:00 2001 From: Martin Pashov <80414148+Martin-Pashov@users.noreply.github.com> Date: Wed, 29 Mar 2023 03:06:03 +0300 Subject: [PATCH 7/8] =?UTF-8?q?Ig=20=D0=BD=D1=8F=D0=BA=D0=B0=D0=BA=D0=B2?= =?UTF-8?q?=D0=B8=20=D0=BF=D0=BE=D0=B4=D0=BE=D0=B1=D1=80=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BF=D0=BE=20SexualPreferencesController=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Реално не знам как точно се прави това, но поне е нещо 🤷🏼‍♂️ --- DevDates.Model/ViewModels/SexualPreference.cs | 1 + .../SexualPreferencesController.cs | 70 +++++++++++++++++-- 2 files changed, 65 insertions(+), 6 deletions(-) diff --git a/DevDates.Model/ViewModels/SexualPreference.cs b/DevDates.Model/ViewModels/SexualPreference.cs index 292a7c0..c71978c 100644 --- a/DevDates.Model/ViewModels/SexualPreference.cs +++ b/DevDates.Model/ViewModels/SexualPreference.cs @@ -5,6 +5,7 @@ /// public class SexualPreference { + public int Id { get; set; } public string DisplayName { get; init; } public Photo Photo { get; init; } } diff --git a/DevDatesAPI/Controllers/SexualPreferencesController.cs b/DevDatesAPI/Controllers/SexualPreferencesController.cs index acf4b1e..112a15d 100644 --- a/DevDatesAPI/Controllers/SexualPreferencesController.cs +++ b/DevDatesAPI/Controllers/SexualPreferencesController.cs @@ -8,7 +8,7 @@ namespace DevDatesAPI.Controllers { [ApiController] [Route("[controller]")] - public class SexualPreferencesController + public class SexualPreferencesController : ControllerBase { private DevDatesDbContext _context; public SexualPreferencesController(DevDatesDbContext context) @@ -16,45 +16,103 @@ public SexualPreferencesController(DevDatesDbContext context) _context = context; } + + [HttpGet("preferences", Name = "GetAllPreferences")] public SexualPreference[] GetAllPreferences() { return _context.Genders.Select(g => new SexualPreference() { + Id = g.Id, DisplayName = g.DisplayName }).ToArray(); } + + [HttpGet("preference/{id}", Name = "GetPreference")] public SexualPreference GetPreference(int id) { return _context.Genders.Where(g => g.Id == id).Select(g => new SexualPreference() { + Id = g.Id, DisplayName = g.DisplayName }).ToArray()[0]; } + + [HttpDelete("preference/delete/{id}")] - public void Delete(int id) + public IActionResult Delete(int id) { + /* var context = _context.Genders.Where(g => g.Id == id); _context.Remove(context); _context.SaveChanges(); + */ + + var context = _context.Genders.FirstOrDefault(g => g.Id == id); + + if (context == null) + { + return NotFound(); + } + + _context.Remove(context); + _context.SaveChanges(); + + return NoContent(); } + + [HttpPost("preference/post/{id}")] - public void Post() + public IActionResult Post([FromBody] SexualPreference preference) { //var context = _context.Genders.Find(g => g.Id == id); - // TODO + + if (preference == null) + { + return BadRequest(); + } + + var gender = new Gender + { + DisplayName = preference.DisplayName + }; + + _context.Genders.Add(gender); + _context.SaveChanges(); + + return CreatedAtRoute("GetPreference", new { id = gender.Id }, preference); } + + [HttpPut("preference/put/{id}")] - public void put(int id, [FromBody] SexualPreference preference) + public IActionResult put(int id, [FromBody] SexualPreference preference) { //var context = _context.Genders.Find(g => g.Id == id); - //TODO + + if (preference == null || id != preference.Id) + { + return BadRequest(); + } + + var gender = _context.Genders.FirstOrDefault(g => g.Id == id); + + if (gender == null) + { + return NotFound(); + } + + gender.DisplayName = preference.DisplayName; + + _context.Genders.Update(gender); + _context.SaveChanges(); + + return NoContent(); } } } \ No newline at end of file From 6139345c46eb07366fe601f46df02edafd21fa8e Mon Sep 17 00:00:00 2001 From: Blagovest-Hristov Date: Wed, 10 May 2023 09:43:35 +0300 Subject: [PATCH 8/8] blago :) --- .../DevDates API Wrapper.csproj | 4 + DevDates API Wrapper/Wrapper.cs | 205 ++++++++++++++++++ 2 files changed, 209 insertions(+) diff --git a/DevDates API Wrapper/DevDates API Wrapper.csproj b/DevDates API Wrapper/DevDates API Wrapper.csproj index 48b118d..2f0c008 100644 --- a/DevDates API Wrapper/DevDates API Wrapper.csproj +++ b/DevDates API Wrapper/DevDates API Wrapper.csproj @@ -7,4 +7,8 @@ enable + + + + diff --git a/DevDates API Wrapper/Wrapper.cs b/DevDates API Wrapper/Wrapper.cs index e76e6ce..ad61b6e 100644 --- a/DevDates API Wrapper/Wrapper.cs +++ b/DevDates API Wrapper/Wrapper.cs @@ -86,9 +86,214 @@ public async Task GetPhoto(int id, int photoId) var json = await response.Content.ReadAsStringAsync(); return JsonConvert.DeserializeObject(json); } + + public async Task PostUser(int id) + { + var response = await _httpClient.PostAsync($"{_baseUrl}users/{id}", null); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + + } + + public async Task PostPhoto(int id, int photoId) + { + var response = await _httpClient.PostAsync($"{_baseUrl}users/{id}/photos/{photoId}", null); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + } + + public async Task PostInterest(int id, int interestId) + { + var response = await _httpClient.PostAsync($"{_baseUrl}users/{id}/interests/{interestId}", null); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + } + + public async Task PostConnectedService(int id, int connectedServiceId) + { + var response = await _httpClient.PostAsync($"{_baseUrl}users/{id}/connected-services/{connectedServiceId}", null); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + } + + public async Task PostSexualPreference(int id, int sexualPreferenceId) + { + var response = await _httpClient.PostAsync($"{_baseUrl}users/{id}/sexual-preferences/{sexualPreferenceId}", null); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + } + + public async Task PostShortUserInfo(int id) + { + var response = await _httpClient.PostAsync($"{_baseUrl}users/{id}/short-info", null); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + } + + public async Task PostDetailedUserInfo(int id) + { + var response = await _httpClient.PostAsync($"{_baseUrl}users/{id}/detailed-info", null); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + } + + public async Task PutUser(int id) + { + var response = await _httpClient.PutAsync($"{_baseUrl}users/{id}", null); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + + } + + public async Task PutPhoto(int id, int photoId) + { + var response = await _httpClient.PutAsync($"{_baseUrl}users/{id}/photos/{photoId}", null); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + } + + public async Task PutInterest(int id, int interestId) + { + var response = await _httpClient.PutAsync($"{_baseUrl}users/{id}/interests/{interestId}", null); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + } + + public async Task PutConnectedService(int id, int connectedServiceId) + { + var response = await _httpClient.PutAsync($"{_baseUrl}users/{id}/connected-services/{connectedServiceId}", null); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + } + + public async Task PutSexualPreference(int id, int sexualPreferenceId) + { + var response = await _httpClient.PutAsync($"{_baseUrl}users/{id}/sexual-preferences/{sexualPreferenceId}", null); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + } + + public async Task PutShortUserInfo(int id) + { + var response = await _httpClient.PutAsync($"{_baseUrl}users/{id}/short-info", null); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + } + + public async Task PutDetailedUserInfo(int id) + { + var response = await _httpClient.PutAsync($"{_baseUrl}users/{id}/detailed-info", null); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + } + + public async Task DeleteUser(int id) + { + var response = await _httpClient.DeleteAsync($"{_baseUrl}users/{id}"); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + } + + public async Task DeletePhoto(int id, int photoId) + { + var response = await _httpClient.DeleteAsync($"{_baseUrl}users/{id}/photos/{photoId}"); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + } + + public async Task DeleteInterest(int id, int interestId) + { + var response = await _httpClient.DeleteAsync($"{_baseUrl}users/{id}/interests/{interestId}"); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + } + + public async Task DeleteConnectedService(int id, int connectedServiceId) + { + var response = await _httpClient.DeleteAsync($"{_baseUrl}users/{id}/connected-services/{connectedServiceId}"); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + } + + public async Task DeleteSexualPreference(int id, int sexualPreferenceId) + { + var response = await _httpClient.DeleteAsync($"{_baseUrl}users/{id}/sexual-preferences/{sexualPreferenceId}"); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + } + + public async Task DeleteShortUserInfo(int id) + { + var response = await _httpClient.DeleteAsync($"{_baseUrl}users/{id}/short-info"); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + } + + public async Task DeleteDetailedUserInfo(int id) + { + var response = await _httpClient.DeleteAsync($"{_baseUrl}users/{id}/detailed-info"); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + } + + public async Task DeleteAll(int id) + { + var response = await _httpClient.DeleteAsync($"{_baseUrl}users/{id}/all"); + response.EnsureSuccessStatusCode(); + + var json = await response.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(json); + } + + + + + public class User { public ShortUserInfo ShortInfo { get; set; }