From d1c696bad5f86197aba559e34c5796861c6ee9d0 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 16 Apr 2019 11:07:44 -0400 Subject: [PATCH] new api endpoints --- src/Core/Abstractions/IApiService.cs | 38 ++++++++- src/Core/Services/ApiService.cs | 113 ++++++++++++++++++++++++--- 2 files changed, 137 insertions(+), 14 deletions(-) diff --git a/src/Core/Abstractions/IApiService.cs b/src/Core/Abstractions/IApiService.cs index 7dd80c167..2cd82c032 100644 --- a/src/Core/Abstractions/IApiService.cs +++ b/src/Core/Abstractions/IApiService.cs @@ -1,9 +1,43 @@ -using System.Threading.Tasks; +using Bit.Core.Models.Domain; +using Bit.Core.Models.Request; +using Bit.Core.Models.Response; +using System; +using System.Net.Http; +using System.Threading.Tasks; namespace Bit.Core.Abstractions { public interface IApiService { - + string ApiBaseUrl { get; set; } + string IdentityBaseUrl { get; set; } + bool UrlsSet { get; } + + Task DeleteCipherAsync(string id); + Task DeleteCipherAttachmentAsync(string id, string attachmentId); + Task DeleteFolderAsync(string id); + Task DoRefreshTokenAsync(); + Task GetAccountRevisionDateAsync(); + Task GetActiveBearerTokenAsync(); + Task GetCipherAsync(string id); + Task GetFolderAsync(string id); + Task GetProfileAsync(); + Task GetSyncAsync(string id); + Task PostAccountKeysAsync(KeysRequest request); + Task PostCipherAsync(CipherRequest request); + Task PostCipherCreateAsync(CipherCreateRequest request); + Task PostFolderAsync(FolderRequest request); + Task> PostIdentityTokenAsync(TokenRequest request); + Task PostPasswordHintAsync(PasswordHintRequest request); + Task PostPreloginAsync(PreloginRequest request); + Task PostRegisterAsync(RegisterRequest request); + Task PutCipherAsync(string id, CipherRequest request); + Task PutCipherCollectionsAsync(string id, CipherCollectionsRequest request); + Task PutFolderAsync(string id, FolderRequest request); + Task PutShareCipherAsync(string id, CipherShareRequest request); + Task RefreshIdentityTokenAsync(); + Task SendAsync(HttpMethod method, string path, + TRequest body, bool authed, bool hasResponse); + void SetUrls(EnvironmentUrls urls); } } diff --git a/src/Core/Services/ApiService.cs b/src/Core/Services/ApiService.cs index a3aad7801..5be0362fd 100644 --- a/src/Core/Services/ApiService.cs +++ b/src/Core/Services/ApiService.cs @@ -124,36 +124,125 @@ namespace Bit.Core.Services #region Account APIs - public async Task GetProfileAsync() + public Task GetProfileAsync() { - return await SendAsync(HttpMethod.Get, "/accounts/profile", null, true, true); + return SendAsync(HttpMethod.Get, "/accounts/profile", null, true, true); } - public async Task PostPreloginAsync(PreloginRequest request) + public Task PostPreloginAsync(PreloginRequest request) { - return await SendAsync(HttpMethod.Post, "/accounts/prelogin", + return SendAsync(HttpMethod.Post, "/accounts/prelogin", request, false, true); } - public async Task GetAccountRevisionDateAsync() + public Task GetAccountRevisionDateAsync() { - return await SendAsync(HttpMethod.Get, "/accounts/revision-date", null, true, true); + return SendAsync(HttpMethod.Get, "/accounts/revision-date", null, true, true); } - public async Task PostPasswordHintAsync(PasswordHintRequest request) + public Task PostPasswordHintAsync(PasswordHintRequest request) { - await SendAsync(HttpMethod.Post, "/accounts/password-hint", + return SendAsync(HttpMethod.Post, "/accounts/password-hint", request, false, false); } - public async Task PostRegisterAsync(RegisterRequest request) + public Task PostRegisterAsync(RegisterRequest request) { - await SendAsync(HttpMethod.Post, "/accounts/register", request, false, false); + return SendAsync(HttpMethod.Post, "/accounts/register", request, false, false); } - public async Task PostAccountKeysAsync(KeysRequest request) + public Task PostAccountKeysAsync(KeysRequest request) { - await SendAsync(HttpMethod.Post, "/accounts/keys", request, true, false); + return SendAsync(HttpMethod.Post, "/accounts/keys", request, true, false); + } + + #endregion + + #region Folder APIs + + public Task GetFolderAsync(string id) + { + return SendAsync(HttpMethod.Get, string.Concat("/folders/", id), + null, true, true); + } + + public Task PostFolderAsync(FolderRequest request) + { + return SendAsync(HttpMethod.Post, "/folders", request, true, true); + } + + public async Task PutFolderAsync(string id, FolderRequest request) + { + return await SendAsync(HttpMethod.Put, string.Concat("/folders/", id), + request, true, true); + } + + public Task DeleteFolderAsync(string id) + { + return SendAsync(HttpMethod.Delete, string.Concat("/folders/", id), null, true, false); + } + + #endregion + + #region Cipher APIs + + public Task GetCipherAsync(string id) + { + return SendAsync(HttpMethod.Get, string.Concat("/ciphers/", id), + null, true, true); + } + + public Task PostCipherAsync(CipherRequest request) + { + return SendAsync(HttpMethod.Post, "/ciphers", request, true, true); + } + + public Task PostCipherCreateAsync(CipherCreateRequest request) + { + return SendAsync(HttpMethod.Post, "/ciphers/create", + request, true, true); + } + + public Task PutCipherAsync(string id, CipherRequest request) + { + return SendAsync(HttpMethod.Put, string.Concat("/ciphers/", id), + request, true, true); + } + + public Task PutShareCipherAsync(string id, CipherShareRequest request) + { + return SendAsync(HttpMethod.Put, + string.Concat("/ciphers/", id, "/share"), request, true, true); + } + + public Task PutCipherCollectionsAsync(string id, CipherCollectionsRequest request) + { + return SendAsync(HttpMethod.Put, + string.Concat("/ciphers/", id, "/collections"), request, true, false); + } + + public Task DeleteCipherAsync(string id) + { + return SendAsync(HttpMethod.Delete, string.Concat("/ciphers/", id), null, true, false); + } + + #endregion + + #region Attachments APIs + + public Task DeleteCipherAttachmentAsync(string id, string attachmentId) + { + return SendAsync(HttpMethod.Delete, + string.Concat("/ciphers/", id, "/attachments/", attachmentId), null, true, false); + } + + #endregion + + #region Sync APIs + + public Task GetSyncAsync(string id) + { + return SendAsync(HttpMethod.Get, "/sync", null, true, true); } #endregion