mirror of
https://github.com/bitwarden/android.git
synced 2025-01-12 11:17:30 +03:00
events url
This commit is contained in:
parent
72cbdcbc8d
commit
3f94eee4d5
8 changed files with 117 additions and 11 deletions
|
@ -12,6 +12,7 @@ namespace Bit.Core.Abstractions
|
||||||
{
|
{
|
||||||
string ApiBaseUrl { get; set; }
|
string ApiBaseUrl { get; set; }
|
||||||
string IdentityBaseUrl { get; set; }
|
string IdentityBaseUrl { get; set; }
|
||||||
|
string EventsBaseUrl { get; set; }
|
||||||
bool UrlsSet { get; }
|
bool UrlsSet { get; }
|
||||||
|
|
||||||
Task DeleteCipherAsync(string id);
|
Task DeleteCipherAsync(string id);
|
||||||
|
@ -46,5 +47,6 @@ namespace Bit.Core.Abstractions
|
||||||
Task<List<BreachAccountResponse>> GetHibpBreachAsync(string username);
|
Task<List<BreachAccountResponse>> GetHibpBreachAsync(string username);
|
||||||
Task PostTwoFactorEmailAsync(TwoFactorEmailRequest request);
|
Task PostTwoFactorEmailAsync(TwoFactorEmailRequest request);
|
||||||
Task PutDeviceTokenAsync(string identifier, DeviceTokenRequest request);
|
Task PutDeviceTokenAsync(string identifier, DeviceTokenRequest request);
|
||||||
|
Task PostEventsCollectAsync(EventRequest request);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@ namespace Bit.Core.Abstractions
|
||||||
string IdentityUrl { get; set; }
|
string IdentityUrl { get; set; }
|
||||||
string NotificationsUrl { get; set; }
|
string NotificationsUrl { get; set; }
|
||||||
string WebVaultUrl { get; set; }
|
string WebVaultUrl { get; set; }
|
||||||
|
string EventsUrl { get; set; }
|
||||||
|
|
||||||
string GetWebVaultUrl();
|
string GetWebVaultUrl();
|
||||||
Task<EnvironmentUrlData> SetUrlsAsync(EnvironmentUrlData urls);
|
Task<EnvironmentUrlData> SetUrlsAsync(EnvironmentUrlData urls);
|
||||||
|
|
45
src/Core/Enums/EventType.cs
Normal file
45
src/Core/Enums/EventType.cs
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
namespace Bit.Core.Enums
|
||||||
|
{
|
||||||
|
public enum EventType : int
|
||||||
|
{
|
||||||
|
User_LoggedIn = 1000,
|
||||||
|
User_ChangedPassword = 1001,
|
||||||
|
User_Updated2fa = 1002,
|
||||||
|
User_Disabled2fa = 1003,
|
||||||
|
User_Recovered2fa = 1004,
|
||||||
|
User_FailedLogIn = 1005,
|
||||||
|
User_FailedLogIn2fa = 1006,
|
||||||
|
User_ClientExportedVault = 1007,
|
||||||
|
|
||||||
|
Cipher_Created = 1100,
|
||||||
|
Cipher_Updated = 1101,
|
||||||
|
Cipher_Deleted = 1102,
|
||||||
|
Cipher_AttachmentCreated = 1103,
|
||||||
|
Cipher_AttachmentDeleted = 1104,
|
||||||
|
Cipher_Shared = 1105,
|
||||||
|
Cipher_UpdatedCollections = 1106,
|
||||||
|
Cipher_ClientViewed = 1107,
|
||||||
|
Cipher_ClientToggledPasswordVisible = 1108,
|
||||||
|
Cipher_ClientToggledHiddenFieldVisible = 1109,
|
||||||
|
Cipher_ClientCopiedPassword = 1110,
|
||||||
|
Cipher_ClientCopedHiddenField = 1111,
|
||||||
|
Cipher_ClientAutofilled = 1112,
|
||||||
|
|
||||||
|
Collection_Created = 1300,
|
||||||
|
Collection_Updated = 1301,
|
||||||
|
Collection_Deleted = 1302,
|
||||||
|
|
||||||
|
Group_Created = 1400,
|
||||||
|
Group_Updated = 1401,
|
||||||
|
Group_Deleted = 1402,
|
||||||
|
|
||||||
|
OrganizationUser_Invited = 1500,
|
||||||
|
OrganizationUser_Confirmed = 1501,
|
||||||
|
OrganizationUser_Updated = 1502,
|
||||||
|
OrganizationUser_Removed = 1503,
|
||||||
|
OrganizationUser_UpdatedGroups = 1504,
|
||||||
|
|
||||||
|
Organization_Updated = 1600,
|
||||||
|
Organization_PurgedVault = 1601,
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,5 +8,6 @@
|
||||||
public string Icons { get; set; }
|
public string Icons { get; set; }
|
||||||
public string Notifications { get; set; }
|
public string Notifications { get; set; }
|
||||||
public string WebVault { get; set; }
|
public string WebVault { get; set; }
|
||||||
|
public string Events { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,5 +5,6 @@
|
||||||
public string Base { get; set; }
|
public string Base { get; set; }
|
||||||
public string Api { get; set; }
|
public string Api { get; set; }
|
||||||
public string Identity { get; set; }
|
public string Identity { get; set; }
|
||||||
|
public string Events { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
11
src/Core/Models/Request/EventRequest.cs
Normal file
11
src/Core/Models/Request/EventRequest.cs
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
using Bit.Core.Enums;
|
||||||
|
using Bit.Core.Models.Domain;
|
||||||
|
|
||||||
|
namespace Bit.Core.Models.Request
|
||||||
|
{
|
||||||
|
public class EventRequest
|
||||||
|
{
|
||||||
|
public EventType Type { get; set; }
|
||||||
|
public string CipherId { get; set; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -52,6 +52,7 @@ namespace Bit.Core.Services
|
||||||
public bool UrlsSet { get; private set; }
|
public bool UrlsSet { get; private set; }
|
||||||
public string ApiBaseUrl { get; set; }
|
public string ApiBaseUrl { get; set; }
|
||||||
public string IdentityBaseUrl { get; set; }
|
public string IdentityBaseUrl { get; set; }
|
||||||
|
public string EventsBaseUrl { get; set; }
|
||||||
|
|
||||||
public void SetUrls(EnvironmentUrls urls)
|
public void SetUrls(EnvironmentUrls urls)
|
||||||
{
|
{
|
||||||
|
@ -60,20 +61,27 @@ namespace Bit.Core.Services
|
||||||
{
|
{
|
||||||
ApiBaseUrl = urls.Base + "/api";
|
ApiBaseUrl = urls.Base + "/api";
|
||||||
IdentityBaseUrl = urls.Base + "/identity";
|
IdentityBaseUrl = urls.Base + "/identity";
|
||||||
|
EventsBaseUrl = urls.Base + "/events";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(!string.IsNullOrWhiteSpace(urls.Api) && !string.IsNullOrWhiteSpace(urls.Identity))
|
|
||||||
{
|
ApiBaseUrl = urls.Api;
|
||||||
ApiBaseUrl = urls.Api;
|
IdentityBaseUrl = urls.Identity;
|
||||||
IdentityBaseUrl = urls.Identity;
|
EventsBaseUrl = urls.Events;
|
||||||
return;
|
|
||||||
}
|
|
||||||
// Local Dev
|
|
||||||
//ApiBaseUrl = "http://localhost:4000";
|
|
||||||
//IdentityBaseUrl = "http://localhost:33656";
|
|
||||||
// Production
|
// Production
|
||||||
ApiBaseUrl = "https://api.bitwarden.com";
|
if(string.IsNullOrWhiteSpace(ApiBaseUrl))
|
||||||
IdentityBaseUrl = "https://identity.bitwarden.com";
|
{
|
||||||
|
ApiBaseUrl = "https://api.bitwarden.com";
|
||||||
|
}
|
||||||
|
if(string.IsNullOrWhiteSpace(IdentityBaseUrl))
|
||||||
|
{
|
||||||
|
IdentityBaseUrl = "https://identity.bitwarden.com";
|
||||||
|
}
|
||||||
|
if(string.IsNullOrWhiteSpace(EventsBaseUrl))
|
||||||
|
{
|
||||||
|
EventsBaseUrl = "https://events.bitwarden.com";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Auth APIs
|
#region Auth APIs
|
||||||
|
@ -298,6 +306,38 @@ namespace Bit.Core.Services
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Event APIs
|
||||||
|
|
||||||
|
public async Task PostEventsCollectAsync(EventRequest request)
|
||||||
|
{
|
||||||
|
using(var requestMessage = new HttpRequestMessage())
|
||||||
|
{
|
||||||
|
requestMessage.Method = HttpMethod.Post;
|
||||||
|
requestMessage.RequestUri = new Uri(string.Concat(EventsBaseUrl, "/collect"));
|
||||||
|
requestMessage.Headers.Add("Device-Type", _deviceType);
|
||||||
|
var authHeader = await GetActiveBearerTokenAsync();
|
||||||
|
requestMessage.Headers.Add("Authorization", string.Concat("Bearer ", authHeader));
|
||||||
|
requestMessage.Content = new StringContent(JsonConvert.SerializeObject(request, _jsonSettings),
|
||||||
|
Encoding.UTF8, "application/json");
|
||||||
|
HttpResponseMessage response;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
response = await _httpClient.SendAsync(requestMessage);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
throw new ApiException(HandleWebError());
|
||||||
|
}
|
||||||
|
if(!response.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
var error = await HandleErrorAsync(response, false);
|
||||||
|
throw new ApiException(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region HIBP APIs
|
#region HIBP APIs
|
||||||
|
|
||||||
public Task<List<BreachAccountResponse>> GetHibpBreachAsync(string username)
|
public Task<List<BreachAccountResponse>> GetHibpBreachAsync(string username)
|
||||||
|
|
|
@ -25,6 +25,7 @@ namespace Bit.Core.Services
|
||||||
public string IdentityUrl { get; set; }
|
public string IdentityUrl { get; set; }
|
||||||
public string IconsUrl { get; set; }
|
public string IconsUrl { get; set; }
|
||||||
public string NotificationsUrl { get; set; }
|
public string NotificationsUrl { get; set; }
|
||||||
|
public string EventsUrl { get; set; }
|
||||||
|
|
||||||
public string GetWebVaultUrl()
|
public string GetWebVaultUrl()
|
||||||
{
|
{
|
||||||
|
@ -58,6 +59,7 @@ namespace Bit.Core.Services
|
||||||
IdentityUrl = envUrls.Identity = urls.Identity;
|
IdentityUrl = envUrls.Identity = urls.Identity;
|
||||||
IconsUrl = urls.Icons;
|
IconsUrl = urls.Icons;
|
||||||
NotificationsUrl = urls.Notifications;
|
NotificationsUrl = urls.Notifications;
|
||||||
|
EventsUrl = envUrls.Events = urls.Events;
|
||||||
_apiService.SetUrls(envUrls);
|
_apiService.SetUrls(envUrls);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,6 +71,7 @@ namespace Bit.Core.Services
|
||||||
urls.Identity = FormatUrl(urls.Identity);
|
urls.Identity = FormatUrl(urls.Identity);
|
||||||
urls.Icons = FormatUrl(urls.Icons);
|
urls.Icons = FormatUrl(urls.Icons);
|
||||||
urls.Notifications = FormatUrl(urls.Notifications);
|
urls.Notifications = FormatUrl(urls.Notifications);
|
||||||
|
urls.Events = FormatUrl(urls.Events);
|
||||||
await _storageService.SaveAsync(Constants.EnvironmentUrlsKey, urls);
|
await _storageService.SaveAsync(Constants.EnvironmentUrlsKey, urls);
|
||||||
BaseUrl = urls.Base;
|
BaseUrl = urls.Base;
|
||||||
WebVaultUrl = urls.WebVault;
|
WebVaultUrl = urls.WebVault;
|
||||||
|
@ -76,6 +79,7 @@ namespace Bit.Core.Services
|
||||||
IdentityUrl = urls.Identity;
|
IdentityUrl = urls.Identity;
|
||||||
IconsUrl = urls.Icons;
|
IconsUrl = urls.Icons;
|
||||||
NotificationsUrl = urls.Notifications;
|
NotificationsUrl = urls.Notifications;
|
||||||
|
EventsUrl = urls.Events;
|
||||||
|
|
||||||
var envUrls = new EnvironmentUrls();
|
var envUrls = new EnvironmentUrls();
|
||||||
if(!string.IsNullOrWhiteSpace(BaseUrl))
|
if(!string.IsNullOrWhiteSpace(BaseUrl))
|
||||||
|
@ -86,6 +90,7 @@ namespace Bit.Core.Services
|
||||||
{
|
{
|
||||||
envUrls.Api = ApiUrl;
|
envUrls.Api = ApiUrl;
|
||||||
envUrls.Identity = IdentityUrl;
|
envUrls.Identity = IdentityUrl;
|
||||||
|
envUrls.Events = EventsUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
_apiService.SetUrls(envUrls);
|
_apiService.SetUrls(envUrls);
|
||||||
|
|
Loading…
Reference in a new issue