refactor: http service (#2233)
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
import { HttpResponse } from '@standardnotes/responses'
|
||||
import { ApiVersion } from '../../Api'
|
||||
import { ApiCallError } from '../../Error/ApiCallError'
|
||||
import { ErrorMessage } from '../../Error/ErrorMessage'
|
||||
import {
|
||||
GenerateRecoveryCodesResponse,
|
||||
RecoveryKeyParamsResponse,
|
||||
SignInWithRecoveryCodesResponse,
|
||||
GenerateRecoveryCodesResponseBody,
|
||||
RecoveryKeyParamsResponseBody,
|
||||
SignInWithRecoveryCodesResponseBody,
|
||||
} from '../../Response'
|
||||
import { AuthServerInterface } from '../../Server'
|
||||
|
||||
@@ -18,7 +19,7 @@ export class AuthApiService implements AuthApiServiceInterface {
|
||||
this.operationsInProgress = new Map()
|
||||
}
|
||||
|
||||
async generateRecoveryCodes(): Promise<GenerateRecoveryCodesResponse> {
|
||||
async generateRecoveryCodes(): Promise<HttpResponse<GenerateRecoveryCodesResponseBody>> {
|
||||
if (this.operationsInProgress.get(AuthApiOperations.GenerateRecoveryCodes)) {
|
||||
throw new ApiCallError(ErrorMessage.GenericInProgress)
|
||||
}
|
||||
@@ -40,7 +41,7 @@ export class AuthApiService implements AuthApiServiceInterface {
|
||||
username: string
|
||||
codeChallenge: string
|
||||
recoveryCodes: string
|
||||
}): Promise<RecoveryKeyParamsResponse> {
|
||||
}): Promise<HttpResponse<RecoveryKeyParamsResponseBody>> {
|
||||
if (this.operationsInProgress.get(AuthApiOperations.GetRecoveryKeyParams)) {
|
||||
throw new ApiCallError(ErrorMessage.GenericInProgress)
|
||||
}
|
||||
@@ -68,7 +69,7 @@ export class AuthApiService implements AuthApiServiceInterface {
|
||||
password: string
|
||||
codeVerifier: string
|
||||
recoveryCodes: string
|
||||
}): Promise<SignInWithRecoveryCodesResponse> {
|
||||
}): Promise<HttpResponse<SignInWithRecoveryCodesResponseBody>> {
|
||||
if (this.operationsInProgress.get(AuthApiOperations.SignInWithRecoveryCodes)) {
|
||||
throw new ApiCallError(ErrorMessage.GenericInProgress)
|
||||
}
|
||||
|
||||
@@ -1,20 +1,21 @@
|
||||
import { HttpResponse } from '@standardnotes/responses'
|
||||
import {
|
||||
GenerateRecoveryCodesResponse,
|
||||
RecoveryKeyParamsResponse,
|
||||
SignInWithRecoveryCodesResponse,
|
||||
GenerateRecoveryCodesResponseBody,
|
||||
RecoveryKeyParamsResponseBody,
|
||||
SignInWithRecoveryCodesResponseBody,
|
||||
} from '../../Response'
|
||||
|
||||
export interface AuthApiServiceInterface {
|
||||
generateRecoveryCodes(): Promise<GenerateRecoveryCodesResponse>
|
||||
generateRecoveryCodes(): Promise<HttpResponse<GenerateRecoveryCodesResponseBody>>
|
||||
recoveryKeyParams(dto: {
|
||||
username: string
|
||||
codeChallenge: string
|
||||
recoveryCodes: string
|
||||
}): Promise<RecoveryKeyParamsResponse>
|
||||
}): Promise<HttpResponse<RecoveryKeyParamsResponseBody>>
|
||||
signInWithRecoveryCodes(dto: {
|
||||
username: string
|
||||
password: string
|
||||
codeVerifier: string
|
||||
recoveryCodes: string
|
||||
}): Promise<SignInWithRecoveryCodesResponse>
|
||||
}): Promise<HttpResponse<SignInWithRecoveryCodesResponseBody>>
|
||||
}
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
import { ErrorMessage } from '../../Error/ErrorMessage'
|
||||
import { ApiCallError } from '../../Error/ApiCallError'
|
||||
import { HttpResponse } from '@standardnotes/responses'
|
||||
|
||||
import { AuthenticatorApiServiceInterface } from './AuthenticatorApiServiceInterface'
|
||||
import { AuthenticatorApiOperations } from './AuthenticatorApiOperations'
|
||||
import {
|
||||
ListAuthenticatorsResponse,
|
||||
DeleteAuthenticatorResponse,
|
||||
GenerateAuthenticatorRegistrationOptionsResponse,
|
||||
VerifyAuthenticatorRegistrationResponseResponse,
|
||||
GenerateAuthenticatorAuthenticationOptionsResponse,
|
||||
ListAuthenticatorsResponseBody,
|
||||
DeleteAuthenticatorResponseBody,
|
||||
GenerateAuthenticatorRegistrationOptionsResponseBody,
|
||||
VerifyAuthenticatorRegistrationResponseBody,
|
||||
GenerateAuthenticatorAuthenticationOptionsResponseBody,
|
||||
} from '../../Response'
|
||||
import { AuthenticatorServerInterface } from '../../Server/Authenticator/AuthenticatorServerInterface'
|
||||
|
||||
@@ -19,7 +20,7 @@ export class AuthenticatorApiService implements AuthenticatorApiServiceInterface
|
||||
this.operationsInProgress = new Map()
|
||||
}
|
||||
|
||||
async list(): Promise<ListAuthenticatorsResponse> {
|
||||
async list(): Promise<HttpResponse<ListAuthenticatorsResponseBody>> {
|
||||
if (this.operationsInProgress.get(AuthenticatorApiOperations.List)) {
|
||||
throw new ApiCallError(ErrorMessage.GenericInProgress)
|
||||
}
|
||||
@@ -37,7 +38,7 @@ export class AuthenticatorApiService implements AuthenticatorApiServiceInterface
|
||||
}
|
||||
}
|
||||
|
||||
async delete(authenticatorId: string): Promise<DeleteAuthenticatorResponse> {
|
||||
async delete(authenticatorId: string): Promise<HttpResponse<DeleteAuthenticatorResponseBody>> {
|
||||
if (this.operationsInProgress.get(AuthenticatorApiOperations.Delete)) {
|
||||
throw new ApiCallError(ErrorMessage.GenericInProgress)
|
||||
}
|
||||
@@ -57,7 +58,7 @@ export class AuthenticatorApiService implements AuthenticatorApiServiceInterface
|
||||
}
|
||||
}
|
||||
|
||||
async generateRegistrationOptions(): Promise<GenerateAuthenticatorRegistrationOptionsResponse> {
|
||||
async generateRegistrationOptions(): Promise<HttpResponse<GenerateAuthenticatorRegistrationOptionsResponseBody>> {
|
||||
if (this.operationsInProgress.get(AuthenticatorApiOperations.GenerateRegistrationOptions)) {
|
||||
throw new ApiCallError(ErrorMessage.GenericInProgress)
|
||||
}
|
||||
@@ -79,7 +80,7 @@ export class AuthenticatorApiService implements AuthenticatorApiServiceInterface
|
||||
userUuid: string,
|
||||
name: string,
|
||||
attestationResponse: Record<string, unknown>,
|
||||
): Promise<VerifyAuthenticatorRegistrationResponseResponse> {
|
||||
): Promise<HttpResponse<VerifyAuthenticatorRegistrationResponseBody>> {
|
||||
if (this.operationsInProgress.get(AuthenticatorApiOperations.VerifyRegistrationResponse)) {
|
||||
throw new ApiCallError(ErrorMessage.GenericInProgress)
|
||||
}
|
||||
@@ -101,7 +102,9 @@ export class AuthenticatorApiService implements AuthenticatorApiServiceInterface
|
||||
}
|
||||
}
|
||||
|
||||
async generateAuthenticationOptions(username: string): Promise<GenerateAuthenticatorAuthenticationOptionsResponse> {
|
||||
async generateAuthenticationOptions(
|
||||
username: string,
|
||||
): Promise<HttpResponse<GenerateAuthenticatorAuthenticationOptionsResponseBody>> {
|
||||
if (this.operationsInProgress.get(AuthenticatorApiOperations.GenerateAuthenticationOptions)) {
|
||||
throw new ApiCallError(ErrorMessage.GenericInProgress)
|
||||
}
|
||||
|
||||
@@ -1,19 +1,22 @@
|
||||
import { HttpResponse } from '@standardnotes/responses'
|
||||
import {
|
||||
ListAuthenticatorsResponse,
|
||||
DeleteAuthenticatorResponse,
|
||||
GenerateAuthenticatorRegistrationOptionsResponse,
|
||||
VerifyAuthenticatorRegistrationResponseResponse,
|
||||
GenerateAuthenticatorAuthenticationOptionsResponse,
|
||||
ListAuthenticatorsResponseBody,
|
||||
DeleteAuthenticatorResponseBody,
|
||||
GenerateAuthenticatorRegistrationOptionsResponseBody,
|
||||
VerifyAuthenticatorRegistrationResponseBody,
|
||||
GenerateAuthenticatorAuthenticationOptionsResponseBody,
|
||||
} from '../../Response'
|
||||
|
||||
export interface AuthenticatorApiServiceInterface {
|
||||
list(): Promise<ListAuthenticatorsResponse>
|
||||
delete(authenticatorId: string): Promise<DeleteAuthenticatorResponse>
|
||||
generateRegistrationOptions(): Promise<GenerateAuthenticatorRegistrationOptionsResponse>
|
||||
list(): Promise<HttpResponse<ListAuthenticatorsResponseBody>>
|
||||
delete(authenticatorId: string): Promise<HttpResponse<DeleteAuthenticatorResponseBody>>
|
||||
generateRegistrationOptions(): Promise<HttpResponse<GenerateAuthenticatorRegistrationOptionsResponseBody>>
|
||||
verifyRegistrationResponse(
|
||||
userUuid: string,
|
||||
name: string,
|
||||
attestationResponse: Record<string, unknown>,
|
||||
): Promise<VerifyAuthenticatorRegistrationResponseResponse>
|
||||
generateAuthenticationOptions(username: string): Promise<GenerateAuthenticatorAuthenticationOptionsResponse>
|
||||
): Promise<HttpResponse<VerifyAuthenticatorRegistrationResponseBody>>
|
||||
generateAuthenticationOptions(
|
||||
username: string,
|
||||
): Promise<HttpResponse<GenerateAuthenticatorAuthenticationOptionsResponseBody>>
|
||||
}
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
import { ErrorMessage } from '../../Error/ErrorMessage'
|
||||
import { ApiCallError } from '../../Error/ApiCallError'
|
||||
import { HttpResponse } from '@standardnotes/responses'
|
||||
|
||||
import { RevisionApiServiceInterface } from './RevisionApiServiceInterface'
|
||||
import { RevisionApiOperations } from './RevisionApiOperations'
|
||||
import { RevisionServerInterface } from '../../Server'
|
||||
import { DeleteRevisionResponse } from '../../Response/Revision/DeleteRevisionResponse'
|
||||
import { GetRevisionResponse } from '../../Response/Revision/GetRevisionResponse'
|
||||
import { ListRevisionsResponse } from '../../Response/Revision/ListRevisionsResponse'
|
||||
import { DeleteRevisionResponseBody } from '../../Response/Revision/DeleteRevisionResponseBody'
|
||||
import { GetRevisionResponseBody } from '../../Response/Revision/GetRevisionResponseBody'
|
||||
import { ListRevisionsResponseBody } from '../../Response/Revision/ListRevisionsResponseBody'
|
||||
|
||||
export class RevisionApiService implements RevisionApiServiceInterface {
|
||||
private operationsInProgress: Map<RevisionApiOperations, boolean>
|
||||
@@ -15,7 +16,7 @@ export class RevisionApiService implements RevisionApiServiceInterface {
|
||||
this.operationsInProgress = new Map()
|
||||
}
|
||||
|
||||
async listRevisions(itemUuid: string): Promise<ListRevisionsResponse> {
|
||||
async listRevisions(itemUuid: string): Promise<HttpResponse<ListRevisionsResponseBody>> {
|
||||
if (this.operationsInProgress.get(RevisionApiOperations.List)) {
|
||||
throw new ApiCallError(ErrorMessage.GenericInProgress)
|
||||
}
|
||||
@@ -35,7 +36,7 @@ export class RevisionApiService implements RevisionApiServiceInterface {
|
||||
}
|
||||
}
|
||||
|
||||
async getRevision(itemUuid: string, revisionUuid: string): Promise<GetRevisionResponse> {
|
||||
async getRevision(itemUuid: string, revisionUuid: string): Promise<HttpResponse<GetRevisionResponseBody>> {
|
||||
if (this.operationsInProgress.get(RevisionApiOperations.Get)) {
|
||||
throw new ApiCallError(ErrorMessage.GenericInProgress)
|
||||
}
|
||||
@@ -56,7 +57,7 @@ export class RevisionApiService implements RevisionApiServiceInterface {
|
||||
}
|
||||
}
|
||||
|
||||
async deleteRevision(itemUuid: string, revisionUuid: string): Promise<DeleteRevisionResponse> {
|
||||
async deleteRevision(itemUuid: string, revisionUuid: string): Promise<HttpResponse<DeleteRevisionResponseBody>> {
|
||||
if (this.operationsInProgress.get(RevisionApiOperations.Delete)) {
|
||||
throw new ApiCallError(ErrorMessage.GenericInProgress)
|
||||
}
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
import { DeleteRevisionResponse } from '../../Response/Revision/DeleteRevisionResponse'
|
||||
import { GetRevisionResponse } from '../../Response/Revision/GetRevisionResponse'
|
||||
import { ListRevisionsResponse } from '../../Response/Revision/ListRevisionsResponse'
|
||||
import { HttpResponse } from '@standardnotes/responses'
|
||||
import { DeleteRevisionResponseBody } from '../../Response/Revision/DeleteRevisionResponseBody'
|
||||
import { GetRevisionResponseBody } from '../../Response/Revision/GetRevisionResponseBody'
|
||||
import { ListRevisionsResponseBody } from '../../Response/Revision/ListRevisionsResponseBody'
|
||||
|
||||
export interface RevisionApiServiceInterface {
|
||||
listRevisions(itemUuid: string): Promise<ListRevisionsResponse>
|
||||
getRevision(itemUuid: string, revisionUuid: string): Promise<GetRevisionResponse>
|
||||
deleteRevision(itemUuid: string, revisionUuid: string): Promise<DeleteRevisionResponse>
|
||||
listRevisions(itemUuid: string): Promise<HttpResponse<ListRevisionsResponseBody>>
|
||||
getRevision(itemUuid: string, revisionUuid: string): Promise<HttpResponse<GetRevisionResponseBody>>
|
||||
deleteRevision(itemUuid: string, revisionUuid: string): Promise<HttpResponse<DeleteRevisionResponseBody>>
|
||||
}
|
||||
|
||||
@@ -3,14 +3,15 @@ import { ApiCallError } from '../../Error/ApiCallError'
|
||||
import { ApiVersion } from '../../Api/ApiVersion'
|
||||
import { ApiEndpointParam } from '../../Request/ApiEndpointParam'
|
||||
import { SubscriptionServerInterface } from '../../Server/Subscription/SubscriptionServerInterface'
|
||||
import { SubscriptionInviteResponse } from '../../Response/Subscription/SubscriptionInviteResponse'
|
||||
import { SubscriptionInviteListResponse } from '../../Response/Subscription/SubscriptionInviteListResponse'
|
||||
import { SubscriptionInviteCancelResponse } from '../../Response/Subscription/SubscriptionInviteCancelResponse'
|
||||
import { SubscriptionInviteAcceptResponse } from '../../Response/Subscription/SubscriptionInviteAcceptResponse'
|
||||
import { AppleIAPConfirmResponseBody } from './../../Response/Subscription/AppleIAPConfirmResponseBody'
|
||||
import { SubscriptionInviteAcceptResponseBody } from '../../Response/Subscription/SubscriptionInviteAcceptResponseBody'
|
||||
import { SubscriptionInviteCancelResponseBody } from '../../Response/Subscription/SubscriptionInviteCancelResponseBody'
|
||||
import { SubscriptionInviteListResponseBody } from '../../Response/Subscription/SubscriptionInviteListResponseBody'
|
||||
import { SubscriptionInviteResponseBody } from '../../Response/Subscription/SubscriptionInviteResponseBody'
|
||||
import { HttpResponse } from '@standardnotes/responses'
|
||||
|
||||
import { SubscriptionApiServiceInterface } from './SubscriptionApiServiceInterface'
|
||||
import { SubscriptionApiOperations } from './SubscriptionApiOperations'
|
||||
import { AppleIAPConfirmResponse } from './../../Response/Subscription/AppleIAPConfirmResponse'
|
||||
import { AppleIAPConfirmRequestParams } from '../../Request'
|
||||
|
||||
export class SubscriptionApiService implements SubscriptionApiServiceInterface {
|
||||
@@ -20,7 +21,7 @@ export class SubscriptionApiService implements SubscriptionApiServiceInterface {
|
||||
this.operationsInProgress = new Map()
|
||||
}
|
||||
|
||||
async listInvites(): Promise<SubscriptionInviteListResponse> {
|
||||
async listInvites(): Promise<HttpResponse<SubscriptionInviteListResponseBody>> {
|
||||
if (this.operationsInProgress.get(SubscriptionApiOperations.ListingInvites)) {
|
||||
throw new ApiCallError(ErrorMessage.GenericInProgress)
|
||||
}
|
||||
@@ -40,7 +41,7 @@ export class SubscriptionApiService implements SubscriptionApiServiceInterface {
|
||||
}
|
||||
}
|
||||
|
||||
async cancelInvite(inviteUuid: string): Promise<SubscriptionInviteCancelResponse> {
|
||||
async cancelInvite(inviteUuid: string): Promise<HttpResponse<SubscriptionInviteCancelResponseBody>> {
|
||||
if (this.operationsInProgress.get(SubscriptionApiOperations.CancelingInvite)) {
|
||||
throw new ApiCallError(ErrorMessage.GenericInProgress)
|
||||
}
|
||||
@@ -61,7 +62,7 @@ export class SubscriptionApiService implements SubscriptionApiServiceInterface {
|
||||
}
|
||||
}
|
||||
|
||||
async invite(inviteeEmail: string): Promise<SubscriptionInviteResponse> {
|
||||
async invite(inviteeEmail: string): Promise<HttpResponse<SubscriptionInviteResponseBody>> {
|
||||
if (this.operationsInProgress.get(SubscriptionApiOperations.Inviting)) {
|
||||
throw new ApiCallError(ErrorMessage.GenericInProgress)
|
||||
}
|
||||
@@ -82,7 +83,7 @@ export class SubscriptionApiService implements SubscriptionApiServiceInterface {
|
||||
}
|
||||
}
|
||||
|
||||
async acceptInvite(inviteUuid: string): Promise<SubscriptionInviteAcceptResponse> {
|
||||
async acceptInvite(inviteUuid: string): Promise<HttpResponse<SubscriptionInviteAcceptResponseBody>> {
|
||||
if (this.operationsInProgress.get(SubscriptionApiOperations.AcceptingInvite)) {
|
||||
throw new ApiCallError(ErrorMessage.GenericInProgress)
|
||||
}
|
||||
@@ -102,7 +103,7 @@ export class SubscriptionApiService implements SubscriptionApiServiceInterface {
|
||||
}
|
||||
}
|
||||
|
||||
async confirmAppleIAP(params: AppleIAPConfirmRequestParams): Promise<AppleIAPConfirmResponse> {
|
||||
async confirmAppleIAP(params: AppleIAPConfirmRequestParams): Promise<HttpResponse<AppleIAPConfirmResponseBody>> {
|
||||
if (this.operationsInProgress.get(SubscriptionApiOperations.ConfirmAppleIAP)) {
|
||||
throw new ApiCallError(ErrorMessage.GenericInProgress)
|
||||
}
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
import { AppleIAPConfirmResponse } from './../../Response/Subscription/AppleIAPConfirmResponse'
|
||||
import { AppleIAPConfirmRequestParams } from '../../Request'
|
||||
import { SubscriptionInviteAcceptResponse } from '../../Response/Subscription/SubscriptionInviteAcceptResponse'
|
||||
import { SubscriptionInviteCancelResponse } from '../../Response/Subscription/SubscriptionInviteCancelResponse'
|
||||
import { SubscriptionInviteListResponse } from '../../Response/Subscription/SubscriptionInviteListResponse'
|
||||
import { SubscriptionInviteResponse } from '../../Response/Subscription/SubscriptionInviteResponse'
|
||||
import { AppleIAPConfirmResponseBody } from './../../Response/Subscription/AppleIAPConfirmResponseBody'
|
||||
import { SubscriptionInviteAcceptResponseBody } from '../../Response/Subscription/SubscriptionInviteAcceptResponseBody'
|
||||
import { SubscriptionInviteCancelResponseBody } from '../../Response/Subscription/SubscriptionInviteCancelResponseBody'
|
||||
import { SubscriptionInviteListResponseBody } from '../../Response/Subscription/SubscriptionInviteListResponseBody'
|
||||
import { SubscriptionInviteResponseBody } from '../../Response/Subscription/SubscriptionInviteResponseBody'
|
||||
import { HttpResponse } from '@standardnotes/responses'
|
||||
|
||||
export interface SubscriptionApiServiceInterface {
|
||||
invite(inviteeEmail: string): Promise<SubscriptionInviteResponse>
|
||||
listInvites(): Promise<SubscriptionInviteListResponse>
|
||||
cancelInvite(inviteUuid: string): Promise<SubscriptionInviteCancelResponse>
|
||||
acceptInvite(inviteUuid: string): Promise<SubscriptionInviteAcceptResponse>
|
||||
confirmAppleIAP(params: AppleIAPConfirmRequestParams): Promise<AppleIAPConfirmResponse>
|
||||
invite(inviteeEmail: string): Promise<HttpResponse<SubscriptionInviteResponseBody>>
|
||||
listInvites(): Promise<HttpResponse<SubscriptionInviteListResponseBody>>
|
||||
cancelInvite(inviteUuid: string): Promise<HttpResponse<SubscriptionInviteCancelResponseBody>>
|
||||
acceptInvite(inviteUuid: string): Promise<HttpResponse<SubscriptionInviteAcceptResponseBody>>
|
||||
confirmAppleIAP(params: AppleIAPConfirmRequestParams): Promise<HttpResponse<AppleIAPConfirmResponseBody>>
|
||||
}
|
||||
|
||||
@@ -3,12 +3,14 @@ import { UserRequestType } from '@standardnotes/common'
|
||||
|
||||
import { ErrorMessage } from '../../Error/ErrorMessage'
|
||||
import { ApiCallError } from '../../Error/ApiCallError'
|
||||
import { UserRegistrationResponse } from '../../Response/User/UserRegistrationResponse'
|
||||
import { UserServerInterface } from '../../Server/User/UserServerInterface'
|
||||
import { ApiVersion } from '../../Api/ApiVersion'
|
||||
import { ApiEndpointParam } from '../../Request/ApiEndpointParam'
|
||||
import { UserRequestResponse } from '../../Response/UserRequest/UserRequestResponse'
|
||||
import { UserDeletionResponse } from '../../Response/User/UserDeletionResponse'
|
||||
import { HttpResponse } from '@standardnotes/responses'
|
||||
|
||||
import { UserDeletionResponseBody } from '../../Response/User/UserDeletionResponseBody'
|
||||
import { UserRegistrationResponseBody } from '../../Response/User/UserRegistrationResponseBody'
|
||||
import { UserRequestResponseBody } from '../../Response/UserRequest/UserRequestResponseBody'
|
||||
import { UserRequestServerInterface } from '../../Server/UserRequest/UserRequestServerInterface'
|
||||
|
||||
import { UserApiOperations } from './UserApiOperations'
|
||||
@@ -21,7 +23,7 @@ export class UserApiService implements UserApiServiceInterface {
|
||||
this.operationsInProgress = new Map()
|
||||
}
|
||||
|
||||
async deleteAccount(userUuid: string): Promise<UserDeletionResponse> {
|
||||
async deleteAccount(userUuid: string): Promise<HttpResponse<UserDeletionResponseBody>> {
|
||||
this.lockOperation(UserApiOperations.DeletingAccount)
|
||||
|
||||
try {
|
||||
@@ -37,7 +39,10 @@ export class UserApiService implements UserApiServiceInterface {
|
||||
}
|
||||
}
|
||||
|
||||
async submitUserRequest(dto: { userUuid: string; requestType: UserRequestType }): Promise<UserRequestResponse> {
|
||||
async submitUserRequest(dto: {
|
||||
userUuid: string
|
||||
requestType: UserRequestType
|
||||
}): Promise<HttpResponse<UserRequestResponseBody>> {
|
||||
this.lockOperation(UserApiOperations.SubmittingRequest)
|
||||
|
||||
try {
|
||||
@@ -59,7 +64,7 @@ export class UserApiService implements UserApiServiceInterface {
|
||||
serverPassword: string
|
||||
keyParams: RootKeyParamsInterface
|
||||
ephemeral: boolean
|
||||
}): Promise<UserRegistrationResponse> {
|
||||
}): Promise<HttpResponse<UserRegistrationResponseBody>> {
|
||||
this.lockOperation(UserApiOperations.Registering)
|
||||
|
||||
try {
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
import { UserRequestType } from '@standardnotes/common'
|
||||
import { type RootKeyParamsInterface } from '@standardnotes/models'
|
||||
import { HttpResponse } from '@standardnotes/responses'
|
||||
|
||||
import { UserDeletionResponse } from '../../Response/User/UserDeletionResponse'
|
||||
import { UserRegistrationResponse } from '../../Response/User/UserRegistrationResponse'
|
||||
import { UserRequestResponse } from '../../Response/UserRequest/UserRequestResponse'
|
||||
import { UserDeletionResponseBody } from '../../Response/User/UserDeletionResponseBody'
|
||||
import { UserRegistrationResponseBody } from '../../Response/User/UserRegistrationResponseBody'
|
||||
import { UserRequestResponseBody } from '../../Response/UserRequest/UserRequestResponseBody'
|
||||
|
||||
export interface UserApiServiceInterface {
|
||||
register(registerDTO: {
|
||||
@@ -11,7 +12,10 @@ export interface UserApiServiceInterface {
|
||||
serverPassword: string
|
||||
keyParams: RootKeyParamsInterface
|
||||
ephemeral: boolean
|
||||
}): Promise<UserRegistrationResponse>
|
||||
submitUserRequest(dto: { userUuid: string; requestType: UserRequestType }): Promise<UserRequestResponse>
|
||||
deleteAccount(userUuid: string): Promise<UserDeletionResponse>
|
||||
}): Promise<HttpResponse<UserRegistrationResponseBody>>
|
||||
submitUserRequest(dto: {
|
||||
userUuid: string
|
||||
requestType: UserRequestType
|
||||
}): Promise<HttpResponse<UserRequestResponseBody>>
|
||||
deleteAccount(userUuid: string): Promise<HttpResponse<UserDeletionResponseBody>>
|
||||
}
|
||||
|
||||
@@ -4,7 +4,8 @@ import { ApiCallError } from '../../Error/ApiCallError'
|
||||
import { WebSocketApiServiceInterface } from './WebSocketApiServiceInterface'
|
||||
import { WebSocketApiOperations } from './WebSocketApiOperations'
|
||||
import { WebSocketServerInterface } from '../../Server'
|
||||
import { WebSocketConnectionTokenResponse } from '../../Response'
|
||||
import { HttpResponse } from '@standardnotes/responses'
|
||||
import { WebSocketConnectionTokenResponseBody } from '../../Response'
|
||||
|
||||
export class WebSocketApiService implements WebSocketApiServiceInterface {
|
||||
private operationsInProgress: Map<WebSocketApiOperations, boolean>
|
||||
@@ -13,7 +14,7 @@ export class WebSocketApiService implements WebSocketApiServiceInterface {
|
||||
this.operationsInProgress = new Map()
|
||||
}
|
||||
|
||||
async createConnectionToken(): Promise<WebSocketConnectionTokenResponse> {
|
||||
async createConnectionToken(): Promise<HttpResponse<WebSocketConnectionTokenResponseBody>> {
|
||||
if (this.operationsInProgress.get(WebSocketApiOperations.CreatingConnectionToken)) {
|
||||
throw new ApiCallError(ErrorMessage.GenericInProgress)
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { WebSocketConnectionTokenResponse } from '../../Response'
|
||||
import { HttpResponse } from '@standardnotes/responses'
|
||||
import { WebSocketConnectionTokenResponseBody } from '../../Response'
|
||||
|
||||
export interface WebSocketApiServiceInterface {
|
||||
createConnectionToken(): Promise<WebSocketConnectionTokenResponse>
|
||||
createConnectionToken(): Promise<HttpResponse<WebSocketConnectionTokenResponseBody>>
|
||||
}
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
import { ErrorTag } from './ErrorTag'
|
||||
|
||||
export type HttpErrorResponseBody = {
|
||||
error: {
|
||||
message: string
|
||||
tag?: ErrorTag
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
import { HttpStatusCode } from './HttpStatusCode'
|
||||
import { HttpResponseBody } from './HttpResponseBody'
|
||||
import { HttpErrorResponseBody } from './HttpErrorResponseBody'
|
||||
import { HttpResponseMeta } from './HttpResponseMeta'
|
||||
import { HttpHeaders } from './HttpHeaders'
|
||||
|
||||
export interface HttpResponse {
|
||||
status: HttpStatusCode
|
||||
data?: HttpResponseBody | HttpErrorResponseBody
|
||||
meta?: HttpResponseMeta
|
||||
headers?: HttpHeaders
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
export type HttpResponseBody = Record<string, unknown>
|
||||
@@ -1,35 +1,50 @@
|
||||
import { isString, joinPaths, sleep } from '@standardnotes/utils'
|
||||
import { Environment } from '@standardnotes/models'
|
||||
import { Session, SessionToken } from '@standardnotes/domain-core'
|
||||
|
||||
import { HttpRequestParams } from './HttpRequestParams'
|
||||
import { HttpVerb } from './HttpVerb'
|
||||
import { HttpRequest } from './HttpRequest'
|
||||
import { HttpResponse } from './HttpResponse'
|
||||
import {
|
||||
HttpStatusCode,
|
||||
HttpRequestParams,
|
||||
HttpVerb,
|
||||
HttpRequest,
|
||||
HttpResponse,
|
||||
HttpResponseMeta,
|
||||
HttpErrorResponse,
|
||||
isErrorResponse,
|
||||
} from '@standardnotes/responses'
|
||||
import { HttpServiceInterface } from './HttpServiceInterface'
|
||||
import { HttpStatusCode } from './HttpStatusCode'
|
||||
import { XMLHttpRequestState } from './XMLHttpRequestState'
|
||||
import { ErrorMessage } from '../Error/ErrorMessage'
|
||||
import { HttpResponseMeta } from './HttpResponseMeta'
|
||||
import { HttpErrorResponseBody } from './HttpErrorResponseBody'
|
||||
|
||||
import { Paths } from '../Server/Auth/Paths'
|
||||
import { SessionRefreshResponse } from '../Response/Auth/SessionRefreshResponse'
|
||||
import { SessionRefreshResponseBody } from '../Response/Auth/SessionRefreshResponseBody'
|
||||
|
||||
export class HttpService implements HttpServiceInterface {
|
||||
private session: Session | null
|
||||
private __latencySimulatorMs?: number
|
||||
private declare host: string
|
||||
|
||||
constructor(
|
||||
private environment: Environment,
|
||||
private appVersion: string,
|
||||
private snjsVersion: string,
|
||||
private updateMetaCallback: (meta: HttpResponseMeta) => void,
|
||||
private refreshSessionCallback: (session: Session) => void,
|
||||
) {
|
||||
private inProgressRefreshSessionPromise?: Promise<boolean>
|
||||
private updateMetaCallback!: (meta: HttpResponseMeta) => void
|
||||
private refreshSessionCallback!: (session: Session) => void
|
||||
|
||||
constructor(private environment: Environment, private appVersion: string, private snjsVersion: string) {
|
||||
this.session = null
|
||||
}
|
||||
|
||||
setCallbacks(
|
||||
updateMetaCallback: (meta: HttpResponseMeta) => void,
|
||||
refreshSessionCallback: (session: Session) => void,
|
||||
): void {
|
||||
this.updateMetaCallback = updateMetaCallback
|
||||
this.refreshSessionCallback = refreshSessionCallback
|
||||
}
|
||||
|
||||
public deinit(): void {
|
||||
this.session = null
|
||||
;(this.updateMetaCallback as unknown) = undefined
|
||||
;(this.refreshSessionCallback as unknown) = undefined
|
||||
}
|
||||
|
||||
setSession(session: Session): void {
|
||||
this.session = session
|
||||
}
|
||||
@@ -38,7 +53,7 @@ export class HttpService implements HttpServiceInterface {
|
||||
this.host = host
|
||||
}
|
||||
|
||||
async get(path: string, params?: HttpRequestParams, authentication?: string): Promise<HttpResponse> {
|
||||
async get<T>(path: string, params?: HttpRequestParams, authentication?: string): Promise<HttpResponse<T>> {
|
||||
return this.runHttp({
|
||||
url: joinPaths(this.host, path),
|
||||
params,
|
||||
@@ -47,7 +62,7 @@ export class HttpService implements HttpServiceInterface {
|
||||
})
|
||||
}
|
||||
|
||||
async post(path: string, params?: HttpRequestParams, authentication?: string): Promise<HttpResponse> {
|
||||
async post<T>(path: string, params?: HttpRequestParams, authentication?: string): Promise<HttpResponse<T>> {
|
||||
return this.runHttp({
|
||||
url: joinPaths(this.host, path),
|
||||
params,
|
||||
@@ -56,7 +71,7 @@ export class HttpService implements HttpServiceInterface {
|
||||
})
|
||||
}
|
||||
|
||||
async put(path: string, params?: HttpRequestParams, authentication?: string): Promise<HttpResponse> {
|
||||
async put<T>(path: string, params?: HttpRequestParams, authentication?: string): Promise<HttpResponse<T>> {
|
||||
return this.runHttp({
|
||||
url: joinPaths(this.host, path),
|
||||
params,
|
||||
@@ -65,7 +80,7 @@ export class HttpService implements HttpServiceInterface {
|
||||
})
|
||||
}
|
||||
|
||||
async patch(path: string, params: HttpRequestParams, authentication?: string): Promise<HttpResponse> {
|
||||
async patch<T>(path: string, params: HttpRequestParams, authentication?: string): Promise<HttpResponse<T>> {
|
||||
return this.runHttp({
|
||||
url: joinPaths(this.host, path),
|
||||
params,
|
||||
@@ -74,7 +89,7 @@ export class HttpService implements HttpServiceInterface {
|
||||
})
|
||||
}
|
||||
|
||||
async delete(path: string, params?: HttpRequestParams, authentication?: string): Promise<HttpResponse> {
|
||||
async delete<T>(path: string, params?: HttpRequestParams, authentication?: string): Promise<HttpResponse<T>> {
|
||||
return this.runHttp({
|
||||
url: joinPaths(this.host, path),
|
||||
params,
|
||||
@@ -83,23 +98,36 @@ export class HttpService implements HttpServiceInterface {
|
||||
})
|
||||
}
|
||||
|
||||
private async runHttp(httpRequest: HttpRequest): Promise<HttpResponse> {
|
||||
async runHttp<T>(httpRequest: HttpRequest): Promise<HttpResponse<T>> {
|
||||
if (this.inProgressRefreshSessionPromise) {
|
||||
await this.inProgressRefreshSessionPromise
|
||||
|
||||
httpRequest.authentication = this.session?.accessToken.value
|
||||
}
|
||||
|
||||
const request = this.createXmlRequest(httpRequest)
|
||||
|
||||
if (this.__latencySimulatorMs) {
|
||||
await sleep(this.__latencySimulatorMs, true)
|
||||
}
|
||||
|
||||
const response = await this.runRequest(request, this.createRequestBody(httpRequest))
|
||||
const response = await this.runRequest<T>(request, this.createRequestBody(httpRequest))
|
||||
|
||||
if (response.meta) {
|
||||
this.updateMetaCallback(response.meta)
|
||||
this.updateMetaCallback?.(response.meta)
|
||||
}
|
||||
|
||||
if (response.status === HttpStatusCode.ExpiredAccessToken) {
|
||||
const isSessionRefreshed = await this.refreshSession()
|
||||
if (!isSessionRefreshed) {
|
||||
return response
|
||||
if (this.inProgressRefreshSessionPromise) {
|
||||
await this.inProgressRefreshSessionPromise
|
||||
} else {
|
||||
this.inProgressRefreshSessionPromise = this.refreshSession()
|
||||
const isSessionRefreshed = await this.inProgressRefreshSessionPromise
|
||||
this.inProgressRefreshSessionPromise = undefined
|
||||
|
||||
if (!isSessionRefreshed) {
|
||||
return response
|
||||
}
|
||||
}
|
||||
|
||||
httpRequest.authentication = this.session?.accessToken.value
|
||||
@@ -115,17 +143,17 @@ export class HttpService implements HttpServiceInterface {
|
||||
return false
|
||||
}
|
||||
|
||||
const response = (await this.post(Paths.v1.refreshSession, {
|
||||
const response = await this.post<SessionRefreshResponseBody>(Paths.v1.refreshSession, {
|
||||
access_token: this.session.accessToken.value,
|
||||
refresh_token: this.session.refreshToken.value,
|
||||
})) as SessionRefreshResponse
|
||||
})
|
||||
|
||||
if (response.data.error) {
|
||||
if (isErrorResponse(response)) {
|
||||
return false
|
||||
}
|
||||
|
||||
if (response.meta) {
|
||||
this.updateMetaCallback(response.meta)
|
||||
this.updateMetaCallback?.(response.meta)
|
||||
}
|
||||
|
||||
const accessTokenOrError = SessionToken.create(
|
||||
@@ -135,6 +163,7 @@ export class HttpService implements HttpServiceInterface {
|
||||
if (accessTokenOrError.isFailed()) {
|
||||
return false
|
||||
}
|
||||
|
||||
const accessToken = accessTokenOrError.getValue()
|
||||
|
||||
const refreshTokenOrError = SessionToken.create(
|
||||
@@ -144,6 +173,7 @@ export class HttpService implements HttpServiceInterface {
|
||||
if (refreshTokenOrError.isFailed()) {
|
||||
return false
|
||||
}
|
||||
|
||||
const refreshToken = refreshTokenOrError.getValue()
|
||||
|
||||
const sessionOrError = Session.create(accessToken, refreshToken, response.data.session.readonly_access)
|
||||
@@ -204,27 +234,24 @@ export class HttpService implements HttpServiceInterface {
|
||||
return request
|
||||
}
|
||||
|
||||
private async runRequest(request: XMLHttpRequest, body?: string | Uint8Array): Promise<HttpResponse> {
|
||||
return new Promise((resolve, reject) => {
|
||||
private async runRequest<T>(request: XMLHttpRequest, body?: string | Uint8Array): Promise<HttpResponse<T>> {
|
||||
return new Promise((resolve) => {
|
||||
request.onreadystatechange = () => {
|
||||
this.stateChangeHandlerForRequest(request, resolve, reject)
|
||||
this.stateChangeHandlerForRequest(request, resolve)
|
||||
}
|
||||
request.send(body)
|
||||
})
|
||||
}
|
||||
|
||||
private stateChangeHandlerForRequest(
|
||||
request: XMLHttpRequest,
|
||||
resolve: (response: HttpResponse) => void,
|
||||
reject: (response: HttpResponse) => void,
|
||||
) {
|
||||
private stateChangeHandlerForRequest<T>(request: XMLHttpRequest, resolve: (response: HttpResponse<T>) => void) {
|
||||
if (request.readyState !== XMLHttpRequestState.Completed) {
|
||||
return
|
||||
}
|
||||
const httpStatus = request.status
|
||||
const response: HttpResponse = {
|
||||
const response: HttpResponse<T> = {
|
||||
status: httpStatus,
|
||||
headers: new Map<string, string | null>(),
|
||||
data: {} as T,
|
||||
}
|
||||
|
||||
const responseHeaderLines = request
|
||||
@@ -266,12 +293,29 @@ export class HttpService implements HttpServiceInterface {
|
||||
console.error(error)
|
||||
}
|
||||
if (httpStatus >= HttpStatusCode.Success && httpStatus < HttpStatusCode.InternalServerError) {
|
||||
if (httpStatus === HttpStatusCode.Forbidden && response.data && response.data.error !== undefined) {
|
||||
;(response.data as HttpErrorResponseBody).error.message = ErrorMessage.RateLimited
|
||||
if (
|
||||
httpStatus === HttpStatusCode.Forbidden &&
|
||||
response.data &&
|
||||
(response as HttpErrorResponse).data.error !== undefined
|
||||
) {
|
||||
;(response as HttpErrorResponse).data.error.message = ErrorMessage.RateLimited
|
||||
}
|
||||
resolve(response)
|
||||
} else {
|
||||
reject(response)
|
||||
const errorResponse = response as HttpErrorResponse
|
||||
if (!errorResponse.data) {
|
||||
errorResponse.data = {
|
||||
error: {
|
||||
message: 'Unknown error',
|
||||
},
|
||||
}
|
||||
}
|
||||
if (!errorResponse.data.error) {
|
||||
errorResponse.data.error = {
|
||||
message: 'Unknown error',
|
||||
}
|
||||
}
|
||||
resolve(response as HttpErrorResponse)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,14 +1,18 @@
|
||||
import { Session } from '@standardnotes/domain-core'
|
||||
|
||||
import { HttpRequestParams } from './HttpRequestParams'
|
||||
import { HttpResponse } from './HttpResponse'
|
||||
import { HttpRequest, HttpRequestParams, HttpResponse, HttpResponseMeta } from '@standardnotes/responses'
|
||||
|
||||
export interface HttpServiceInterface {
|
||||
setHost(host: string): void
|
||||
setSession(session: Session): void
|
||||
get(path: string, params?: HttpRequestParams, authentication?: string): Promise<HttpResponse>
|
||||
post(path: string, params?: HttpRequestParams, authentication?: string): Promise<HttpResponse>
|
||||
put(path: string, params?: HttpRequestParams, authentication?: string): Promise<HttpResponse>
|
||||
patch(path: string, params: HttpRequestParams, authentication?: string): Promise<HttpResponse>
|
||||
delete(path: string, params?: HttpRequestParams, authentication?: string): Promise<HttpResponse>
|
||||
get<T>(path: string, params?: HttpRequestParams, authentication?: string): Promise<HttpResponse<T>>
|
||||
post<T>(path: string, params?: HttpRequestParams, authentication?: string): Promise<HttpResponse<T>>
|
||||
put<T>(path: string, params?: HttpRequestParams, authentication?: string): Promise<HttpResponse<T>>
|
||||
patch<T>(path: string, params: HttpRequestParams, authentication?: string): Promise<HttpResponse<T>>
|
||||
delete<T>(path: string, params?: HttpRequestParams, authentication?: string): Promise<HttpResponse<T>>
|
||||
runHttp<T>(httpRequest: HttpRequest): Promise<HttpResponse<T>>
|
||||
setCallbacks(
|
||||
updateMetaCallback: (meta: HttpResponseMeta) => void,
|
||||
refreshSessionCallback: (session: Session) => void,
|
||||
): void
|
||||
deinit(): void
|
||||
}
|
||||
|
||||
@@ -1,13 +1,3 @@
|
||||
export * from './ErrorTag'
|
||||
export * from './HttpErrorResponseBody'
|
||||
export * from './HttpHeaders'
|
||||
export * from './HttpRequest'
|
||||
export * from './HttpRequestParams'
|
||||
export * from './HttpResponse'
|
||||
export * from './HttpResponseBody'
|
||||
export * from './HttpResponseMeta'
|
||||
export * from './HttpService'
|
||||
export * from './HttpServiceInterface'
|
||||
export * from './HttpStatusCode'
|
||||
export * from './HttpVerb'
|
||||
export * from './XMLHttpRequestState'
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
import { Either } from '@standardnotes/common'
|
||||
|
||||
import { HttpErrorResponseBody } from '../../Http/HttpErrorResponseBody'
|
||||
import { HttpResponse } from '../../Http/HttpResponse'
|
||||
import { SessionRefreshResponseBody } from './SessionRefreshResponseBody'
|
||||
|
||||
export interface SessionRefreshResponse extends HttpResponse {
|
||||
data: Either<SessionRefreshResponseBody, HttpErrorResponseBody>
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
import { Either } from '@standardnotes/common'
|
||||
|
||||
import { HttpErrorResponseBody } from '../../Http/HttpErrorResponseBody'
|
||||
import { HttpResponse } from '../../Http/HttpResponse'
|
||||
|
||||
import { DeleteAuthenticatorResponseBody } from './DeleteAuthenticatorResponseBody'
|
||||
|
||||
export interface DeleteAuthenticatorResponse extends HttpResponse {
|
||||
data: Either<DeleteAuthenticatorResponseBody, HttpErrorResponseBody>
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
import { Either } from '@standardnotes/common'
|
||||
|
||||
import { HttpErrorResponseBody } from '../../Http/HttpErrorResponseBody'
|
||||
import { HttpResponse } from '../../Http/HttpResponse'
|
||||
|
||||
import { GenerateAuthenticatorAuthenticationOptionsResponseBody } from './GenerateAuthenticatorAuthenticationOptionsResponseBody'
|
||||
|
||||
export interface GenerateAuthenticatorAuthenticationOptionsResponse extends HttpResponse {
|
||||
data: Either<GenerateAuthenticatorAuthenticationOptionsResponseBody, HttpErrorResponseBody>
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
import { Either } from '@standardnotes/common'
|
||||
|
||||
import { HttpErrorResponseBody } from '../../Http/HttpErrorResponseBody'
|
||||
import { HttpResponse } from '../../Http/HttpResponse'
|
||||
|
||||
import { GenerateAuthenticatorRegistrationOptionsResponseBody } from './GenerateAuthenticatorRegistrationOptionsResponseBody'
|
||||
|
||||
export interface GenerateAuthenticatorRegistrationOptionsResponse extends HttpResponse {
|
||||
data: Either<GenerateAuthenticatorRegistrationOptionsResponseBody, HttpErrorResponseBody>
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
import { Either } from '@standardnotes/common'
|
||||
|
||||
import { HttpErrorResponseBody } from '../../Http/HttpErrorResponseBody'
|
||||
import { HttpResponse } from '../../Http/HttpResponse'
|
||||
|
||||
import { ListAuthenticatorsResponseBody } from './ListAuthenticatorsResponseBody'
|
||||
|
||||
export interface ListAuthenticatorsResponse extends HttpResponse {
|
||||
data: Either<ListAuthenticatorsResponseBody, HttpErrorResponseBody>
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
export interface VerifyAuthenticatorRegistrationResponseBody {
|
||||
success: boolean
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
import { Either } from '@standardnotes/common'
|
||||
|
||||
import { HttpErrorResponseBody } from '../../Http/HttpErrorResponseBody'
|
||||
import { HttpResponse } from '../../Http/HttpResponse'
|
||||
|
||||
import { VerifyAuthenticatorRegistrationResponseResponseBody } from './VerifyAuthenticatorRegistrationResponseResponseBody'
|
||||
|
||||
export interface VerifyAuthenticatorRegistrationResponseResponse extends HttpResponse {
|
||||
data: Either<VerifyAuthenticatorRegistrationResponseResponseBody, HttpErrorResponseBody>
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
export interface VerifyAuthenticatorRegistrationResponseResponseBody {
|
||||
success: boolean
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
import { Either } from '@standardnotes/common'
|
||||
|
||||
import { HttpErrorResponseBody } from '../../Http/HttpErrorResponseBody'
|
||||
import { HttpResponse } from '../../Http/HttpResponse'
|
||||
|
||||
import { GenerateRecoveryCodesResponseBody } from './GenerateRecoveryCodesResponseBody'
|
||||
|
||||
export interface GenerateRecoveryCodesResponse extends HttpResponse {
|
||||
data: Either<GenerateRecoveryCodesResponseBody, HttpErrorResponseBody>
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
import { Either } from '@standardnotes/common'
|
||||
|
||||
import { HttpErrorResponseBody } from '../../Http/HttpErrorResponseBody'
|
||||
import { HttpResponse } from '../../Http/HttpResponse'
|
||||
|
||||
import { RecoveryKeyParamsResponseBody } from './RecoveryKeyParamsResponseBody'
|
||||
|
||||
export interface RecoveryKeyParamsResponse extends HttpResponse {
|
||||
data: Either<RecoveryKeyParamsResponseBody, HttpErrorResponseBody>
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
import { Either } from '@standardnotes/common'
|
||||
|
||||
import { HttpErrorResponseBody } from '../../Http/HttpErrorResponseBody'
|
||||
import { HttpResponse } from '../../Http/HttpResponse'
|
||||
|
||||
import { SignInWithRecoveryCodesResponseBody } from './SignInWithRecoveryCodesResponseBody'
|
||||
|
||||
export interface SignInWithRecoveryCodesResponse extends HttpResponse {
|
||||
data: Either<SignInWithRecoveryCodesResponseBody, HttpErrorResponseBody>
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
import { Either } from '@standardnotes/common'
|
||||
|
||||
import { HttpErrorResponseBody } from '../../Http/HttpErrorResponseBody'
|
||||
import { HttpResponse } from '../../Http/HttpResponse'
|
||||
|
||||
import { DeleteRevisionResponseBody } from './DeleteRevisionResponseBody'
|
||||
|
||||
export interface DeleteRevisionResponse extends HttpResponse {
|
||||
data: Either<DeleteRevisionResponseBody, HttpErrorResponseBody>
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
import { Either } from '@standardnotes/common'
|
||||
|
||||
import { HttpErrorResponseBody } from '../../Http/HttpErrorResponseBody'
|
||||
import { HttpResponse } from '../../Http/HttpResponse'
|
||||
|
||||
import { GetRevisionResponseBody } from './GetRevisionResponseBody'
|
||||
|
||||
export interface GetRevisionResponse extends HttpResponse {
|
||||
data: Either<GetRevisionResponseBody, HttpErrorResponseBody>
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
import { Either } from '@standardnotes/common'
|
||||
|
||||
import { HttpErrorResponseBody } from '../../Http/HttpErrorResponseBody'
|
||||
import { HttpResponse } from '../../Http/HttpResponse'
|
||||
|
||||
import { ListRevisionsResponseBody } from './ListRevisionsResponseBody'
|
||||
|
||||
export interface ListRevisionsResponse extends HttpResponse {
|
||||
data: Either<ListRevisionsResponseBody, HttpErrorResponseBody>
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
import { Either } from '@standardnotes/common'
|
||||
|
||||
import { HttpErrorResponseBody } from '../../Http/HttpErrorResponseBody'
|
||||
import { HttpResponse } from '../../Http/HttpResponse'
|
||||
import { AppleIAPConfirmResponseBody } from './AppleIAPConfirmResponseBody'
|
||||
|
||||
export interface AppleIAPConfirmResponse extends HttpResponse {
|
||||
data: Either<AppleIAPConfirmResponseBody, HttpErrorResponseBody>
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
import { Either } from '@standardnotes/common'
|
||||
|
||||
import { HttpErrorResponseBody } from '../../Http/HttpErrorResponseBody'
|
||||
import { HttpResponse } from '../../Http/HttpResponse'
|
||||
import { SubscriptionInviteAcceptResponseBody } from './SubscriptionInviteAcceptResponseBody'
|
||||
|
||||
export interface SubscriptionInviteAcceptResponse extends HttpResponse {
|
||||
data: Either<SubscriptionInviteAcceptResponseBody, HttpErrorResponseBody>
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
import { Either } from '@standardnotes/common'
|
||||
|
||||
import { HttpErrorResponseBody } from '../../Http/HttpErrorResponseBody'
|
||||
import { HttpResponse } from '../../Http/HttpResponse'
|
||||
import { SubscriptionInviteCancelResponseBody } from './SubscriptionInviteCancelResponseBody'
|
||||
|
||||
export interface SubscriptionInviteCancelResponse extends HttpResponse {
|
||||
data: Either<SubscriptionInviteCancelResponseBody, HttpErrorResponseBody>
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
import { Either } from '@standardnotes/common'
|
||||
|
||||
import { HttpErrorResponseBody } from '../../Http/HttpErrorResponseBody'
|
||||
import { HttpResponse } from '../../Http/HttpResponse'
|
||||
import { SubscriptionInviteDeclineResponseBody } from './SubscriptionInviteDeclineResponseBody'
|
||||
|
||||
export interface SubscriptionInviteDeclineResponse extends HttpResponse {
|
||||
data: Either<SubscriptionInviteDeclineResponseBody, HttpErrorResponseBody>
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
import { Either } from '@standardnotes/common'
|
||||
|
||||
import { HttpErrorResponseBody } from '../../Http/HttpErrorResponseBody'
|
||||
import { HttpResponse } from '../../Http/HttpResponse'
|
||||
import { SubscriptionInviteListResponseBody } from './SubscriptionInviteListResponseBody'
|
||||
|
||||
export interface SubscriptionInviteListResponse extends HttpResponse {
|
||||
data: Either<SubscriptionInviteListResponseBody, HttpErrorResponseBody>
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
import { Either } from '@standardnotes/common'
|
||||
|
||||
import { HttpErrorResponseBody } from '../../Http/HttpErrorResponseBody'
|
||||
import { HttpResponse } from '../../Http/HttpResponse'
|
||||
import { SubscriptionInviteResponseBody } from './SubscriptionInviteResponseBody'
|
||||
|
||||
export interface SubscriptionInviteResponse extends HttpResponse {
|
||||
data: Either<SubscriptionInviteResponseBody, HttpErrorResponseBody>
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
import { Either } from '@standardnotes/common'
|
||||
import { HttpErrorResponseBody } from '../../Http/HttpErrorResponseBody'
|
||||
import { HttpResponse } from '../../Http/HttpResponse'
|
||||
|
||||
import { UserDeletionResponseBody } from './UserDeletionResponseBody'
|
||||
|
||||
export interface UserDeletionResponse extends HttpResponse {
|
||||
data: Either<UserDeletionResponseBody, HttpErrorResponseBody>
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
import { HttpErrorResponseBody } from '../../Http/HttpErrorResponseBody'
|
||||
import { HttpResponse } from '../../Http/HttpResponse'
|
||||
import { UserRegistrationResponseBody } from './UserRegistrationResponseBody'
|
||||
|
||||
export interface UserRegistrationResponse extends HttpResponse {
|
||||
data: UserRegistrationResponseBody | HttpErrorResponseBody
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
import { Either } from '@standardnotes/common'
|
||||
|
||||
import { HttpErrorResponseBody } from '../../Http/HttpErrorResponseBody'
|
||||
import { HttpResponse } from '../../Http/HttpResponse'
|
||||
import { UserRequestResponseBody } from './UserRequestResponseBody'
|
||||
|
||||
export interface UserRequestResponse extends HttpResponse {
|
||||
data: Either<UserRequestResponseBody, HttpErrorResponseBody>
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
import { Either } from '@standardnotes/common'
|
||||
|
||||
import { HttpErrorResponseBody } from '../../Http/HttpErrorResponseBody'
|
||||
import { HttpResponse } from '../../Http/HttpResponse'
|
||||
import { WebSocketConnectionTokenResponseBody } from './WebSocketConnectionTokenResponseBody'
|
||||
|
||||
export interface WebSocketConnectionTokenResponse extends HttpResponse {
|
||||
data: Either<WebSocketConnectionTokenResponseBody, HttpErrorResponseBody>
|
||||
}
|
||||
@@ -1,44 +1,22 @@
|
||||
export * from './Auth/SessionRefreshResponse'
|
||||
export * from './Auth/SessionRefreshResponseBody'
|
||||
export * from './Authenticator/DeleteAuthenticatorResponse'
|
||||
export * from './Authenticator/DeleteAuthenticatorResponseBody'
|
||||
export * from './Authenticator/GenerateAuthenticatorAuthenticationOptionsResponse'
|
||||
export * from './Authenticator/GenerateAuthenticatorAuthenticationOptionsResponseBody'
|
||||
export * from './Authenticator/GenerateAuthenticatorRegistrationOptionsResponse'
|
||||
export * from './Authenticator/GenerateAuthenticatorRegistrationOptionsResponseBody'
|
||||
export * from './Authenticator/ListAuthenticatorsResponse'
|
||||
export * from './Authenticator/ListAuthenticatorsResponseBody'
|
||||
export * from './Authenticator/VerifyAuthenticatorRegistrationResponseResponse'
|
||||
export * from './Authenticator/VerifyAuthenticatorRegistrationResponseResponseBody'
|
||||
export * from './Recovery/GenerateRecoveryCodesResponse'
|
||||
export * from './Authenticator/VerifyAuthenticatorRegistrationResponseBody'
|
||||
export * from './Recovery/GenerateRecoveryCodesResponseBody'
|
||||
export * from './Recovery/RecoveryKeyParamsResponse'
|
||||
export * from './Recovery/RecoveryKeyParamsResponseBody'
|
||||
export * from './Recovery/SignInWithRecoveryCodesResponse'
|
||||
export * from './Recovery/SignInWithRecoveryCodesResponseBody'
|
||||
export * from './Recovery/GenerateRecoveryCodesResponse'
|
||||
export * from './Recovery/GenerateRecoveryCodesResponseBody'
|
||||
export * from './Recovery/RecoveryKeyParamsResponse'
|
||||
export * from './Recovery/RecoveryKeyParamsResponseBody'
|
||||
export * from './Recovery/SignInWithRecoveryCodesResponse'
|
||||
export * from './Recovery/SignInWithRecoveryCodesResponseBody'
|
||||
export * from './Subscription/AppleIAPConfirmResponse'
|
||||
export * from './Subscription/AppleIAPConfirmResponseBody'
|
||||
export * from './Subscription/SubscriptionInviteAcceptResponse'
|
||||
export * from './Subscription/SubscriptionInviteAcceptResponseBody'
|
||||
export * from './Subscription/SubscriptionInviteCancelResponse'
|
||||
export * from './Subscription/SubscriptionInviteCancelResponseBody'
|
||||
export * from './Subscription/SubscriptionInviteDeclineResponse'
|
||||
export * from './Subscription/SubscriptionInviteDeclineResponseBody'
|
||||
export * from './Subscription/SubscriptionInviteListResponse'
|
||||
export * from './Subscription/SubscriptionInviteListResponseBody'
|
||||
export * from './Subscription/SubscriptionInviteResponse'
|
||||
export * from './Subscription/SubscriptionInviteResponseBody'
|
||||
export * from './User/UserDeletionResponse'
|
||||
export * from './User/UserDeletionResponseBody'
|
||||
export * from './User/UserRegistrationResponse'
|
||||
export * from './User/UserRegistrationResponseBody'
|
||||
export * from './UserRequest/UserRequestResponse'
|
||||
export * from './UserRequest/UserRequestResponseBody'
|
||||
export * from './WebSocket/WebSocketConnectionTokenResponse'
|
||||
export * from './WebSocket/WebSocketConnectionTokenResponseBody'
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
import { HttpServiceInterface } from '../../Http/HttpServiceInterface'
|
||||
import { RecoveryKeyParamsRequestParams, SignInWithRecoveryCodesRequestParams } from '../../Request'
|
||||
import { HttpResponse } from '@standardnotes/responses'
|
||||
import {
|
||||
GenerateRecoveryCodesResponse,
|
||||
RecoveryKeyParamsResponse,
|
||||
SignInWithRecoveryCodesResponse,
|
||||
GenerateRecoveryCodesResponseBody,
|
||||
RecoveryKeyParamsResponseBody,
|
||||
SignInWithRecoveryCodesResponseBody,
|
||||
} from '../../Response'
|
||||
import { AuthServerInterface } from './AuthServerInterface'
|
||||
import { Paths } from './Paths'
|
||||
@@ -11,23 +12,19 @@ import { Paths } from './Paths'
|
||||
export class AuthServer implements AuthServerInterface {
|
||||
constructor(private httpService: HttpServiceInterface) {}
|
||||
|
||||
async generateRecoveryCodes(): Promise<GenerateRecoveryCodesResponse> {
|
||||
const response = await this.httpService.post(Paths.v1.generateRecoveryCodes)
|
||||
|
||||
return response as GenerateRecoveryCodesResponse
|
||||
async generateRecoveryCodes(): Promise<HttpResponse<GenerateRecoveryCodesResponseBody>> {
|
||||
return this.httpService.post(Paths.v1.generateRecoveryCodes)
|
||||
}
|
||||
|
||||
async recoveryKeyParams(params: RecoveryKeyParamsRequestParams): Promise<RecoveryKeyParamsResponse> {
|
||||
const response = await this.httpService.post(Paths.v1.recoveryKeyParams, params)
|
||||
|
||||
return response as RecoveryKeyParamsResponse
|
||||
async recoveryKeyParams(
|
||||
params: RecoveryKeyParamsRequestParams,
|
||||
): Promise<HttpResponse<RecoveryKeyParamsResponseBody>> {
|
||||
return this.httpService.post(Paths.v1.recoveryKeyParams, params)
|
||||
}
|
||||
|
||||
async signInWithRecoveryCodes(
|
||||
params: SignInWithRecoveryCodesRequestParams,
|
||||
): Promise<SignInWithRecoveryCodesResponse> {
|
||||
const response = await this.httpService.post(Paths.v1.signInWithRecoveryCodes, params)
|
||||
|
||||
return response as SignInWithRecoveryCodesResponse
|
||||
): Promise<HttpResponse<SignInWithRecoveryCodesResponseBody>> {
|
||||
return this.httpService.post(Paths.v1.signInWithRecoveryCodes, params)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
import { HttpResponse } from '@standardnotes/responses'
|
||||
import { RecoveryKeyParamsRequestParams, SignInWithRecoveryCodesRequestParams } from '../../Request'
|
||||
import {
|
||||
GenerateRecoveryCodesResponse,
|
||||
RecoveryKeyParamsResponse,
|
||||
SignInWithRecoveryCodesResponse,
|
||||
GenerateRecoveryCodesResponseBody,
|
||||
RecoveryKeyParamsResponseBody,
|
||||
SignInWithRecoveryCodesResponseBody,
|
||||
} from '../../Response'
|
||||
|
||||
export interface AuthServerInterface {
|
||||
generateRecoveryCodes(): Promise<GenerateRecoveryCodesResponse>
|
||||
recoveryKeyParams(params: RecoveryKeyParamsRequestParams): Promise<RecoveryKeyParamsResponse>
|
||||
signInWithRecoveryCodes(params: SignInWithRecoveryCodesRequestParams): Promise<SignInWithRecoveryCodesResponse>
|
||||
generateRecoveryCodes(): Promise<HttpResponse<GenerateRecoveryCodesResponseBody>>
|
||||
recoveryKeyParams(params: RecoveryKeyParamsRequestParams): Promise<HttpResponse<RecoveryKeyParamsResponseBody>>
|
||||
signInWithRecoveryCodes(
|
||||
params: SignInWithRecoveryCodesRequestParams,
|
||||
): Promise<HttpResponse<SignInWithRecoveryCodesResponseBody>>
|
||||
}
|
||||
|
||||
@@ -5,12 +5,13 @@ import {
|
||||
DeleteAuthenticatorRequestParams,
|
||||
VerifyAuthenticatorRegistrationResponseRequestParams,
|
||||
} from '../../Request'
|
||||
import { HttpResponse } from '@standardnotes/responses'
|
||||
import {
|
||||
ListAuthenticatorsResponse,
|
||||
DeleteAuthenticatorResponse,
|
||||
GenerateAuthenticatorRegistrationOptionsResponse,
|
||||
VerifyAuthenticatorRegistrationResponseResponse,
|
||||
GenerateAuthenticatorAuthenticationOptionsResponse,
|
||||
ListAuthenticatorsResponseBody,
|
||||
DeleteAuthenticatorResponseBody,
|
||||
GenerateAuthenticatorRegistrationOptionsResponseBody,
|
||||
VerifyAuthenticatorRegistrationResponseBody,
|
||||
GenerateAuthenticatorAuthenticationOptionsResponseBody,
|
||||
} from '../../Response'
|
||||
import { AuthenticatorServerInterface } from './AuthenticatorServerInterface'
|
||||
import { Paths } from './Paths'
|
||||
@@ -18,37 +19,27 @@ import { Paths } from './Paths'
|
||||
export class AuthenticatorServer implements AuthenticatorServerInterface {
|
||||
constructor(private httpService: HttpServiceInterface) {}
|
||||
|
||||
async list(params: ListAuthenticatorsRequestParams): Promise<ListAuthenticatorsResponse> {
|
||||
const response = await this.httpService.get(Paths.v1.listAuthenticators, params)
|
||||
|
||||
return response as ListAuthenticatorsResponse
|
||||
async list(params: ListAuthenticatorsRequestParams): Promise<HttpResponse<ListAuthenticatorsResponseBody>> {
|
||||
return this.httpService.get(Paths.v1.listAuthenticators, params)
|
||||
}
|
||||
|
||||
async delete(params: DeleteAuthenticatorRequestParams): Promise<DeleteAuthenticatorResponse> {
|
||||
const response = await this.httpService.delete(Paths.v1.deleteAuthenticator(params.authenticatorId), params)
|
||||
|
||||
return response as DeleteAuthenticatorResponse
|
||||
async delete(params: DeleteAuthenticatorRequestParams): Promise<HttpResponse<DeleteAuthenticatorResponseBody>> {
|
||||
return this.httpService.delete(Paths.v1.deleteAuthenticator(params.authenticatorId), params)
|
||||
}
|
||||
|
||||
async generateRegistrationOptions(): Promise<GenerateAuthenticatorRegistrationOptionsResponse> {
|
||||
const response = await this.httpService.get(Paths.v1.generateRegistrationOptions)
|
||||
|
||||
return response as GenerateAuthenticatorRegistrationOptionsResponse
|
||||
async generateRegistrationOptions(): Promise<HttpResponse<GenerateAuthenticatorRegistrationOptionsResponseBody>> {
|
||||
return this.httpService.get(Paths.v1.generateRegistrationOptions)
|
||||
}
|
||||
|
||||
async verifyRegistrationResponse(
|
||||
params: VerifyAuthenticatorRegistrationResponseRequestParams,
|
||||
): Promise<VerifyAuthenticatorRegistrationResponseResponse> {
|
||||
const response = await this.httpService.post(Paths.v1.verifyRegistrationResponse, params)
|
||||
|
||||
return response as VerifyAuthenticatorRegistrationResponseResponse
|
||||
): Promise<HttpResponse<VerifyAuthenticatorRegistrationResponseBody>> {
|
||||
return this.httpService.post(Paths.v1.verifyRegistrationResponse, params)
|
||||
}
|
||||
|
||||
async generateAuthenticationOptions(
|
||||
params: GenerateAuthenticatorAuthenticationOptionsRequestParams,
|
||||
): Promise<GenerateAuthenticatorAuthenticationOptionsResponse> {
|
||||
const response = await this.httpService.post(Paths.v1.generateAuthenticationOptions, params)
|
||||
|
||||
return response as GenerateAuthenticatorAuthenticationOptionsResponse
|
||||
): Promise<HttpResponse<GenerateAuthenticatorAuthenticationOptionsResponseBody>> {
|
||||
return this.httpService.post(Paths.v1.generateAuthenticationOptions, params)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { HttpResponse } from '@standardnotes/responses'
|
||||
import {
|
||||
ListAuthenticatorsRequestParams,
|
||||
DeleteAuthenticatorRequestParams,
|
||||
@@ -5,21 +6,21 @@ import {
|
||||
GenerateAuthenticatorAuthenticationOptionsRequestParams,
|
||||
} from '../../Request'
|
||||
import {
|
||||
ListAuthenticatorsResponse,
|
||||
DeleteAuthenticatorResponse,
|
||||
GenerateAuthenticatorRegistrationOptionsResponse,
|
||||
VerifyAuthenticatorRegistrationResponseResponse,
|
||||
GenerateAuthenticatorAuthenticationOptionsResponse,
|
||||
ListAuthenticatorsResponseBody,
|
||||
DeleteAuthenticatorResponseBody,
|
||||
GenerateAuthenticatorRegistrationOptionsResponseBody,
|
||||
VerifyAuthenticatorRegistrationResponseBody,
|
||||
GenerateAuthenticatorAuthenticationOptionsResponseBody,
|
||||
} from '../../Response'
|
||||
|
||||
export interface AuthenticatorServerInterface {
|
||||
list(params: ListAuthenticatorsRequestParams): Promise<ListAuthenticatorsResponse>
|
||||
delete(params: DeleteAuthenticatorRequestParams): Promise<DeleteAuthenticatorResponse>
|
||||
generateRegistrationOptions(): Promise<GenerateAuthenticatorRegistrationOptionsResponse>
|
||||
list(params: ListAuthenticatorsRequestParams): Promise<HttpResponse<ListAuthenticatorsResponseBody>>
|
||||
delete(params: DeleteAuthenticatorRequestParams): Promise<HttpResponse<DeleteAuthenticatorResponseBody>>
|
||||
generateRegistrationOptions(): Promise<HttpResponse<GenerateAuthenticatorRegistrationOptionsResponseBody>>
|
||||
verifyRegistrationResponse(
|
||||
params: VerifyAuthenticatorRegistrationResponseRequestParams,
|
||||
): Promise<VerifyAuthenticatorRegistrationResponseResponse>
|
||||
): Promise<HttpResponse<VerifyAuthenticatorRegistrationResponseBody>>
|
||||
generateAuthenticationOptions(
|
||||
params: GenerateAuthenticatorAuthenticationOptionsRequestParams,
|
||||
): Promise<GenerateAuthenticatorAuthenticationOptionsResponse>
|
||||
): Promise<HttpResponse<GenerateAuthenticatorAuthenticationOptionsResponseBody>>
|
||||
}
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import { HttpServiceInterface } from '../../Http/HttpServiceInterface'
|
||||
import { DeleteRevisionRequestParams, GetRevisionRequestParams, ListRevisionsRequestParams } from '../../Request'
|
||||
import { DeleteRevisionResponse } from '../../Response/Revision/DeleteRevisionResponse'
|
||||
import { GetRevisionResponse } from '../../Response/Revision/GetRevisionResponse'
|
||||
import { ListRevisionsResponse } from '../../Response/Revision/ListRevisionsResponse'
|
||||
import { HttpResponse } from '@standardnotes/responses'
|
||||
import { DeleteRevisionResponseBody } from '../../Response/Revision/DeleteRevisionResponseBody'
|
||||
import { GetRevisionResponseBody } from '../../Response/Revision/GetRevisionResponseBody'
|
||||
import { ListRevisionsResponseBody } from '../../Response/Revision/ListRevisionsResponseBody'
|
||||
|
||||
import { Paths } from './Paths'
|
||||
import { RevisionServerInterface } from './RevisionServerInterface'
|
||||
@@ -10,21 +11,15 @@ import { RevisionServerInterface } from './RevisionServerInterface'
|
||||
export class RevisionServer implements RevisionServerInterface {
|
||||
constructor(private httpService: HttpServiceInterface) {}
|
||||
|
||||
async listRevisions(params: ListRevisionsRequestParams): Promise<ListRevisionsResponse> {
|
||||
const response = await this.httpService.get(Paths.v2.listRevisions(params.itemUuid))
|
||||
|
||||
return response as ListRevisionsResponse
|
||||
async listRevisions(params: ListRevisionsRequestParams): Promise<HttpResponse<ListRevisionsResponseBody>> {
|
||||
return this.httpService.get(Paths.v2.listRevisions(params.itemUuid))
|
||||
}
|
||||
|
||||
async getRevision(params: GetRevisionRequestParams): Promise<GetRevisionResponse> {
|
||||
const response = await this.httpService.get(Paths.v2.getRevision(params.itemUuid, params.revisionUuid))
|
||||
|
||||
return response as GetRevisionResponse
|
||||
async getRevision(params: GetRevisionRequestParams): Promise<HttpResponse<GetRevisionResponseBody>> {
|
||||
return this.httpService.get(Paths.v2.getRevision(params.itemUuid, params.revisionUuid))
|
||||
}
|
||||
|
||||
async deleteRevision(params: DeleteRevisionRequestParams): Promise<DeleteRevisionResponse> {
|
||||
const response = await this.httpService.delete(Paths.v2.deleteRevision(params.itemUuid, params.revisionUuid))
|
||||
|
||||
return response as DeleteRevisionResponse
|
||||
async deleteRevision(params: DeleteRevisionRequestParams): Promise<HttpResponse<DeleteRevisionResponseBody>> {
|
||||
return this.httpService.delete(Paths.v2.deleteRevision(params.itemUuid, params.revisionUuid))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
import { HttpResponse } from '@standardnotes/responses'
|
||||
import { DeleteRevisionRequestParams } from '../../Request/Revision/DeleteRevisionRequestParams'
|
||||
import { GetRevisionRequestParams } from '../../Request/Revision/GetRevisionRequestParams'
|
||||
import { ListRevisionsRequestParams } from '../../Request/Revision/ListRevisionsRequestParams'
|
||||
import { DeleteRevisionResponse } from '../../Response/Revision/DeleteRevisionResponse'
|
||||
import { GetRevisionResponse } from '../../Response/Revision/GetRevisionResponse'
|
||||
import { ListRevisionsResponse } from '../../Response/Revision/ListRevisionsResponse'
|
||||
import { DeleteRevisionResponseBody } from '../../Response/Revision/DeleteRevisionResponseBody'
|
||||
import { GetRevisionResponseBody } from '../../Response/Revision/GetRevisionResponseBody'
|
||||
import { ListRevisionsResponseBody } from '../../Response/Revision/ListRevisionsResponseBody'
|
||||
|
||||
export interface RevisionServerInterface {
|
||||
listRevisions(params: ListRevisionsRequestParams): Promise<ListRevisionsResponse>
|
||||
getRevision(params: GetRevisionRequestParams): Promise<GetRevisionResponse>
|
||||
deleteRevision(params: DeleteRevisionRequestParams): Promise<DeleteRevisionResponse>
|
||||
listRevisions(params: ListRevisionsRequestParams): Promise<HttpResponse<ListRevisionsResponseBody>>
|
||||
getRevision(params: GetRevisionRequestParams): Promise<HttpResponse<GetRevisionResponseBody>>
|
||||
deleteRevision(params: DeleteRevisionRequestParams): Promise<HttpResponse<DeleteRevisionResponseBody>>
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import { AppleIAPConfirmResponse } from './../../Response/Subscription/AppleIAPConfirmResponse'
|
||||
import { HttpServiceInterface } from '../../Http/HttpServiceInterface'
|
||||
import { AppleIAPConfirmRequestParams } from '../../Request'
|
||||
import { SubscriptionInviteAcceptRequestParams } from '../../Request/Subscription/SubscriptionInviteAcceptRequestParams'
|
||||
@@ -6,11 +5,13 @@ import { SubscriptionInviteCancelRequestParams } from '../../Request/Subscriptio
|
||||
import { SubscriptionInviteDeclineRequestParams } from '../../Request/Subscription/SubscriptionInviteDeclineRequestParams'
|
||||
import { SubscriptionInviteListRequestParams } from '../../Request/Subscription/SubscriptionInviteListRequestParams'
|
||||
import { SubscriptionInviteRequestParams } from '../../Request/Subscription/SubscriptionInviteRequestParams'
|
||||
import { SubscriptionInviteAcceptResponse } from '../../Response/Subscription/SubscriptionInviteAcceptResponse'
|
||||
import { SubscriptionInviteCancelResponse } from '../../Response/Subscription/SubscriptionInviteCancelResponse'
|
||||
import { SubscriptionInviteDeclineResponse } from '../../Response/Subscription/SubscriptionInviteDeclineResponse'
|
||||
import { SubscriptionInviteListResponse } from '../../Response/Subscription/SubscriptionInviteListResponse'
|
||||
import { SubscriptionInviteResponse } from '../../Response/Subscription/SubscriptionInviteResponse'
|
||||
import { AppleIAPConfirmResponseBody } from './../../Response/Subscription/AppleIAPConfirmResponseBody'
|
||||
import { SubscriptionInviteAcceptResponseBody } from '../../Response/Subscription/SubscriptionInviteAcceptResponseBody'
|
||||
import { SubscriptionInviteCancelResponseBody } from '../../Response/Subscription/SubscriptionInviteCancelResponseBody'
|
||||
import { SubscriptionInviteDeclineResponseBody } from '../../Response/Subscription/SubscriptionInviteDeclineResponseBody'
|
||||
import { SubscriptionInviteListResponseBody } from '../../Response/Subscription/SubscriptionInviteListResponseBody'
|
||||
import { SubscriptionInviteResponseBody } from '../../Response/Subscription/SubscriptionInviteResponseBody'
|
||||
import { HttpResponse } from '@standardnotes/responses'
|
||||
|
||||
import { Paths } from './Paths'
|
||||
import { SubscriptionServerInterface } from './SubscriptionServerInterface'
|
||||
@@ -18,39 +19,35 @@ import { SubscriptionServerInterface } from './SubscriptionServerInterface'
|
||||
export class SubscriptionServer implements SubscriptionServerInterface {
|
||||
constructor(private httpService: HttpServiceInterface) {}
|
||||
|
||||
async acceptInvite(params: SubscriptionInviteAcceptRequestParams): Promise<SubscriptionInviteAcceptResponse> {
|
||||
const response = await this.httpService.post(Paths.v1.acceptInvite(params.inviteUuid), params)
|
||||
|
||||
return response as SubscriptionInviteAcceptResponse
|
||||
async acceptInvite(
|
||||
params: SubscriptionInviteAcceptRequestParams,
|
||||
): Promise<HttpResponse<SubscriptionInviteAcceptResponseBody>> {
|
||||
return this.httpService.post(Paths.v1.acceptInvite(params.inviteUuid), params)
|
||||
}
|
||||
|
||||
async declineInvite(params: SubscriptionInviteDeclineRequestParams): Promise<SubscriptionInviteDeclineResponse> {
|
||||
const response = await this.httpService.get(Paths.v1.declineInvite(params.inviteUuid), params)
|
||||
|
||||
return response as SubscriptionInviteDeclineResponse
|
||||
async declineInvite(
|
||||
params: SubscriptionInviteDeclineRequestParams,
|
||||
): Promise<HttpResponse<SubscriptionInviteDeclineResponseBody>> {
|
||||
return this.httpService.get(Paths.v1.declineInvite(params.inviteUuid), params)
|
||||
}
|
||||
|
||||
async cancelInvite(params: SubscriptionInviteCancelRequestParams): Promise<SubscriptionInviteCancelResponse> {
|
||||
const response = await this.httpService.delete(Paths.v1.cancelInvite(params.inviteUuid), params)
|
||||
|
||||
return response as SubscriptionInviteCancelResponse
|
||||
async cancelInvite(
|
||||
params: SubscriptionInviteCancelRequestParams,
|
||||
): Promise<HttpResponse<SubscriptionInviteCancelResponseBody>> {
|
||||
return this.httpService.delete(Paths.v1.cancelInvite(params.inviteUuid), params)
|
||||
}
|
||||
|
||||
async listInvites(params: SubscriptionInviteListRequestParams): Promise<SubscriptionInviteListResponse> {
|
||||
const response = await this.httpService.get(Paths.v1.listInvites, params)
|
||||
|
||||
return response as SubscriptionInviteListResponse
|
||||
async listInvites(
|
||||
params: SubscriptionInviteListRequestParams,
|
||||
): Promise<HttpResponse<SubscriptionInviteListResponseBody>> {
|
||||
return this.httpService.get(Paths.v1.listInvites, params)
|
||||
}
|
||||
|
||||
async invite(params: SubscriptionInviteRequestParams): Promise<SubscriptionInviteResponse> {
|
||||
const response = await this.httpService.post(Paths.v1.invite, params)
|
||||
|
||||
return response as SubscriptionInviteResponse
|
||||
async invite(params: SubscriptionInviteRequestParams): Promise<HttpResponse<SubscriptionInviteResponseBody>> {
|
||||
return this.httpService.post(Paths.v1.invite, params)
|
||||
}
|
||||
|
||||
async confirmAppleIAP(params: AppleIAPConfirmRequestParams): Promise<AppleIAPConfirmResponse> {
|
||||
const response = await this.httpService.post(Paths.v1.confirmAppleIAP, params)
|
||||
|
||||
return response as AppleIAPConfirmResponse
|
||||
async confirmAppleIAP(params: AppleIAPConfirmRequestParams): Promise<HttpResponse<AppleIAPConfirmResponseBody>> {
|
||||
return this.httpService.post(Paths.v1.confirmAppleIAP, params)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,21 +1,29 @@
|
||||
import { AppleIAPConfirmResponse } from './../../Response/Subscription/AppleIAPConfirmResponse'
|
||||
import { AppleIAPConfirmRequestParams } from './../../Request/Subscription/AppleIAPConfirmRequestParams'
|
||||
import { SubscriptionInviteAcceptRequestParams } from '../../Request/Subscription/SubscriptionInviteAcceptRequestParams'
|
||||
import { SubscriptionInviteCancelRequestParams } from '../../Request/Subscription/SubscriptionInviteCancelRequestParams'
|
||||
import { SubscriptionInviteDeclineRequestParams } from '../../Request/Subscription/SubscriptionInviteDeclineRequestParams'
|
||||
import { SubscriptionInviteListRequestParams } from '../../Request/Subscription/SubscriptionInviteListRequestParams'
|
||||
import { SubscriptionInviteRequestParams } from '../../Request/Subscription/SubscriptionInviteRequestParams'
|
||||
import { SubscriptionInviteAcceptResponse } from '../../Response/Subscription/SubscriptionInviteAcceptResponse'
|
||||
import { SubscriptionInviteCancelResponse } from '../../Response/Subscription/SubscriptionInviteCancelResponse'
|
||||
import { SubscriptionInviteDeclineResponse } from '../../Response/Subscription/SubscriptionInviteDeclineResponse'
|
||||
import { SubscriptionInviteListResponse } from '../../Response/Subscription/SubscriptionInviteListResponse'
|
||||
import { SubscriptionInviteResponse } from '../../Response/Subscription/SubscriptionInviteResponse'
|
||||
|
||||
import { AppleIAPConfirmResponseBody } from './../../Response/Subscription/AppleIAPConfirmResponseBody'
|
||||
import { SubscriptionInviteAcceptResponseBody } from '../../Response/Subscription/SubscriptionInviteAcceptResponseBody'
|
||||
import { SubscriptionInviteCancelResponseBody } from '../../Response/Subscription/SubscriptionInviteCancelResponseBody'
|
||||
import { SubscriptionInviteDeclineResponseBody } from '../../Response/Subscription/SubscriptionInviteDeclineResponseBody'
|
||||
import { SubscriptionInviteListResponseBody } from '../../Response/Subscription/SubscriptionInviteListResponseBody'
|
||||
import { SubscriptionInviteResponseBody } from '../../Response/Subscription/SubscriptionInviteResponseBody'
|
||||
import { HttpResponse } from '@standardnotes/responses'
|
||||
|
||||
export interface SubscriptionServerInterface {
|
||||
invite(params: SubscriptionInviteRequestParams): Promise<SubscriptionInviteResponse>
|
||||
acceptInvite(params: SubscriptionInviteAcceptRequestParams): Promise<SubscriptionInviteAcceptResponse>
|
||||
declineInvite(params: SubscriptionInviteDeclineRequestParams): Promise<SubscriptionInviteDeclineResponse>
|
||||
cancelInvite(params: SubscriptionInviteCancelRequestParams): Promise<SubscriptionInviteCancelResponse>
|
||||
listInvites(params: SubscriptionInviteListRequestParams): Promise<SubscriptionInviteListResponse>
|
||||
confirmAppleIAP(params: AppleIAPConfirmRequestParams): Promise<AppleIAPConfirmResponse>
|
||||
invite(params: SubscriptionInviteRequestParams): Promise<HttpResponse<SubscriptionInviteResponseBody>>
|
||||
acceptInvite(
|
||||
params: SubscriptionInviteAcceptRequestParams,
|
||||
): Promise<HttpResponse<SubscriptionInviteAcceptResponseBody>>
|
||||
declineInvite(
|
||||
params: SubscriptionInviteDeclineRequestParams,
|
||||
): Promise<HttpResponse<SubscriptionInviteDeclineResponseBody>>
|
||||
cancelInvite(
|
||||
params: SubscriptionInviteCancelRequestParams,
|
||||
): Promise<HttpResponse<SubscriptionInviteCancelResponseBody>>
|
||||
listInvites(params: SubscriptionInviteListRequestParams): Promise<HttpResponse<SubscriptionInviteListResponseBody>>
|
||||
confirmAppleIAP(params: AppleIAPConfirmRequestParams): Promise<HttpResponse<AppleIAPConfirmResponseBody>>
|
||||
}
|
||||
|
||||
@@ -1,23 +1,20 @@
|
||||
import { HttpServiceInterface } from '../../Http/HttpServiceInterface'
|
||||
import { UserDeletionRequestParams } from '../../Request/User/UserDeletionRequestParams'
|
||||
import { UserRegistrationRequestParams } from '../../Request/User/UserRegistrationRequestParams'
|
||||
import { UserDeletionResponse } from '../../Response/User/UserDeletionResponse'
|
||||
import { UserRegistrationResponse } from '../../Response/User/UserRegistrationResponse'
|
||||
import { HttpResponse } from '@standardnotes/responses'
|
||||
import { UserDeletionResponseBody } from '../../Response/User/UserDeletionResponseBody'
|
||||
import { UserRegistrationResponseBody } from '../../Response/User/UserRegistrationResponseBody'
|
||||
import { Paths } from './Paths'
|
||||
import { UserServerInterface } from './UserServerInterface'
|
||||
|
||||
export class UserServer implements UserServerInterface {
|
||||
constructor(private httpService: HttpServiceInterface) {}
|
||||
|
||||
async deleteAccount(params: UserDeletionRequestParams): Promise<UserDeletionResponse> {
|
||||
const response = await this.httpService.delete(Paths.v1.deleteAccount(params.userUuid), params)
|
||||
|
||||
return response as UserDeletionResponse
|
||||
async deleteAccount(params: UserDeletionRequestParams): Promise<HttpResponse<UserDeletionResponseBody>> {
|
||||
return this.httpService.delete(Paths.v1.deleteAccount(params.userUuid), params)
|
||||
}
|
||||
|
||||
async register(params: UserRegistrationRequestParams): Promise<UserRegistrationResponse> {
|
||||
const response = await this.httpService.post(Paths.v1.register, params)
|
||||
|
||||
return response as UserRegistrationResponse
|
||||
async register(params: UserRegistrationRequestParams): Promise<HttpResponse<UserRegistrationResponseBody>> {
|
||||
return this.httpService.post(Paths.v1.register, params)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
import { HttpResponse } from '@standardnotes/responses'
|
||||
import { UserDeletionRequestParams } from '../../Request/User/UserDeletionRequestParams'
|
||||
import { UserRegistrationRequestParams } from '../../Request/User/UserRegistrationRequestParams'
|
||||
import { UserDeletionResponse } from '../../Response/User/UserDeletionResponse'
|
||||
import { UserRegistrationResponse } from '../../Response/User/UserRegistrationResponse'
|
||||
import { UserDeletionResponseBody } from '../../Response/User/UserDeletionResponseBody'
|
||||
import { UserRegistrationResponseBody } from '../../Response/User/UserRegistrationResponseBody'
|
||||
|
||||
export interface UserServerInterface {
|
||||
register(params: UserRegistrationRequestParams): Promise<UserRegistrationResponse>
|
||||
deleteAccount(params: UserDeletionRequestParams): Promise<UserDeletionResponse>
|
||||
register(params: UserRegistrationRequestParams): Promise<HttpResponse<UserRegistrationResponseBody>>
|
||||
deleteAccount(params: UserDeletionRequestParams): Promise<HttpResponse<UserDeletionResponseBody>>
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { HttpServiceInterface } from '../../Http/HttpServiceInterface'
|
||||
import { UserRequestRequestParams } from '../../Request/UserRequest/UserRequestRequestParams'
|
||||
import { UserRequestResponse } from '../../Response/UserRequest/UserRequestResponse'
|
||||
import { HttpResponse } from '@standardnotes/responses'
|
||||
import { UserRequestResponseBody } from '../../Response/UserRequest/UserRequestResponseBody'
|
||||
|
||||
import { Paths } from './Paths'
|
||||
import { UserRequestServerInterface } from './UserRequestServerInterface'
|
||||
@@ -8,9 +9,7 @@ import { UserRequestServerInterface } from './UserRequestServerInterface'
|
||||
export class UserRequestServer implements UserRequestServerInterface {
|
||||
constructor(private httpService: HttpServiceInterface) {}
|
||||
|
||||
async submitUserRequest(params: UserRequestRequestParams): Promise<UserRequestResponse> {
|
||||
const response = await this.httpService.post(Paths.v1.submitUserRequest(params.userUuid), params)
|
||||
|
||||
return response as UserRequestResponse
|
||||
async submitUserRequest(params: UserRequestRequestParams): Promise<HttpResponse<UserRequestResponseBody>> {
|
||||
return this.httpService.post(Paths.v1.submitUserRequest(params.userUuid), params)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { HttpResponse } from '@standardnotes/responses'
|
||||
import { UserRequestRequestParams } from '../../Request/UserRequest/UserRequestRequestParams'
|
||||
import { UserRequestResponse } from '../../Response/UserRequest/UserRequestResponse'
|
||||
import { UserRequestResponseBody } from '../../Response/UserRequest/UserRequestResponseBody'
|
||||
|
||||
export interface UserRequestServerInterface {
|
||||
submitUserRequest(params: UserRequestRequestParams): Promise<UserRequestResponse>
|
||||
submitUserRequest(params: UserRequestRequestParams): Promise<HttpResponse<UserRequestResponseBody>>
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { HttpServiceInterface } from '../../Http/HttpServiceInterface'
|
||||
import { WebSocketConnectionTokenRequestParams } from '../../Request/WebSocket/WebSocketConnectionTokenRequestParams'
|
||||
import { WebSocketConnectionTokenResponse } from '../../Response/WebSocket/WebSocketConnectionTokenResponse'
|
||||
import { HttpResponse } from '@standardnotes/responses'
|
||||
import { WebSocketConnectionTokenResponseBody } from '../../Response/WebSocket/WebSocketConnectionTokenResponseBody'
|
||||
import { Paths } from './Paths'
|
||||
import { WebSocketServerInterface } from './WebSocketServerInterface'
|
||||
|
||||
@@ -9,9 +10,7 @@ export class WebSocketServer implements WebSocketServerInterface {
|
||||
|
||||
async createConnectionToken(
|
||||
params: WebSocketConnectionTokenRequestParams,
|
||||
): Promise<WebSocketConnectionTokenResponse> {
|
||||
const response = await this.httpService.post(Paths.v1.createConnectionToken, params)
|
||||
|
||||
return response as WebSocketConnectionTokenResponse
|
||||
): Promise<HttpResponse<WebSocketConnectionTokenResponseBody>> {
|
||||
return this.httpService.post(Paths.v1.createConnectionToken, params)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
import { HttpResponse } from '@standardnotes/responses'
|
||||
import { WebSocketConnectionTokenRequestParams } from '../../Request/WebSocket/WebSocketConnectionTokenRequestParams'
|
||||
import { WebSocketConnectionTokenResponse } from '../../Response/WebSocket/WebSocketConnectionTokenResponse'
|
||||
import { WebSocketConnectionTokenResponseBody } from '../../Response/WebSocket/WebSocketConnectionTokenResponseBody'
|
||||
|
||||
export interface WebSocketServerInterface {
|
||||
createConnectionToken(params: WebSocketConnectionTokenRequestParams): Promise<WebSocketConnectionTokenResponse>
|
||||
createConnectionToken(
|
||||
params: WebSocketConnectionTokenRequestParams,
|
||||
): Promise<HttpResponse<WebSocketConnectionTokenResponseBody>>
|
||||
}
|
||||
|
||||
@@ -48,13 +48,13 @@ export function CreateAnyKeyParams(keyParams: AnyKeyParamsContent) {
|
||||
|
||||
export function KeyParamsFromApiResponse(response: KeyParamsResponse, identifier?: string) {
|
||||
const rawKeyParams: AnyKeyParamsContent = {
|
||||
identifier: identifier || response.data.identifier!,
|
||||
pw_cost: response.data.pw_cost!,
|
||||
pw_nonce: response.data.pw_nonce!,
|
||||
pw_salt: response.data.pw_salt!,
|
||||
version: ProtocolVersionForKeyParams(response.data),
|
||||
origination: response.data.origination,
|
||||
created: response.data.created,
|
||||
identifier: identifier || response.identifier!,
|
||||
pw_cost: response.pw_cost!,
|
||||
pw_nonce: response.pw_nonce!,
|
||||
pw_salt: response.pw_salt!,
|
||||
version: ProtocolVersionForKeyParams(response),
|
||||
origination: response.origination,
|
||||
created: response.created,
|
||||
}
|
||||
return CreateAnyKeyParams(rawKeyParams)
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { StartUploadSessionResponse, MinimalHttpResponse, ClientDisplayableError } from '@standardnotes/responses'
|
||||
import { StartUploadSessionResponse, HttpResponse, ClientDisplayableError } from '@standardnotes/responses'
|
||||
import { FileContent } from '@standardnotes/models'
|
||||
|
||||
export interface FilesApiInterface {
|
||||
startUploadSession(apiToken: string): Promise<StartUploadSessionResponse>
|
||||
startUploadSession(apiToken: string): Promise<HttpResponse<StartUploadSessionResponse>>
|
||||
|
||||
uploadFileBytes(apiToken: string, chunkId: number, encryptedBytes: Uint8Array): Promise<boolean>
|
||||
|
||||
@@ -16,7 +16,7 @@ export interface FilesApiInterface {
|
||||
onBytesReceived: (bytes: Uint8Array) => Promise<void>,
|
||||
): Promise<ClientDisplayableError | undefined>
|
||||
|
||||
deleteFile(apiToken: string): Promise<MinimalHttpResponse>
|
||||
deleteFile(apiToken: string): Promise<HttpResponse>
|
||||
|
||||
createFileValetToken(
|
||||
remoteIdentifier: string,
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
import { HttpResponse } from '../Http/HttpResponse'
|
||||
import { ChangeCredentialsData } from './ChangeCredentialsData'
|
||||
|
||||
export type ChangeCredentialsResponse = HttpResponse & {
|
||||
data: ChangeCredentialsData
|
||||
}
|
||||
export type ChangeCredentialsResponse = ChangeCredentialsData
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
import { HttpResponse } from '../Http/HttpResponse'
|
||||
import { KeyParamsData } from './KeyParamsData'
|
||||
|
||||
export type KeyParamsResponse = HttpResponse & {
|
||||
data: KeyParamsData
|
||||
}
|
||||
export type KeyParamsResponse = KeyParamsData
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
import { HttpResponse } from '../Http/HttpResponse'
|
||||
import { RegistrationData } from './RegistrationData'
|
||||
|
||||
export type RegistrationResponse = HttpResponse & {
|
||||
data: RegistrationData
|
||||
}
|
||||
export type RegistrationResponse = RegistrationData
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import { HttpResponse } from '../Http/HttpResponse'
|
||||
import { SessionListEntry } from './SessionListEntry'
|
||||
|
||||
export type SessionListResponse = HttpResponse & { data: SessionListEntry[] }
|
||||
export type SessionListResponse = SessionListEntry[]
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
import { HttpResponse } from '../Http/HttpResponse'
|
||||
import { SessionRenewalData } from './SessionRenewalData'
|
||||
|
||||
export type SessionRenewalResponse = HttpResponse & {
|
||||
data: SessionRenewalData
|
||||
}
|
||||
export type SessionRenewalResponse = SessionRenewalData
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
import { HttpResponse } from '../Http/HttpResponse'
|
||||
import { SignInData } from './SignInData'
|
||||
|
||||
export type SignInResponse = HttpResponse & {
|
||||
data: SignInData
|
||||
}
|
||||
export type SignInResponse = SignInData
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
import { HttpResponse } from '../Http/HttpResponse'
|
||||
import { HttpSuccessResponse } from '../Http/HttpResponse'
|
||||
|
||||
export type SignOutResponse = HttpResponse & Record<string, unknown>
|
||||
export type SignOutResponse = HttpSuccessResponse
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
import { Error } from '../Http/Error'
|
||||
|
||||
export class ClientDisplayableError {
|
||||
constructor(public text: string, public title?: string, public tag?: string) {
|
||||
console.error('Client Displayable Error:', text, title || '', tag || '')
|
||||
}
|
||||
|
||||
static FromError(error: Error) {
|
||||
static FromError(error: { message: string; tag?: string }) {
|
||||
return new ClientDisplayableError(error.message, undefined, error.tag)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1 @@
|
||||
import { MinimalHttpResponse } from '../Http/MinimalHttpResponses'
|
||||
|
||||
export type CloseUploadSessionResponse = MinimalHttpResponse & {
|
||||
success: boolean
|
||||
message: string
|
||||
}
|
||||
export type CloseUploadSessionResponse = { success: boolean; message: string }
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
import { MinimalHttpResponse } from '../Http/MinimalHttpResponses'
|
||||
import { CreateValetTokenResponseData } from './CreateValetTokenResponseData'
|
||||
|
||||
export type CreateValetTokenResponse = MinimalHttpResponse & {
|
||||
data: CreateValetTokenResponseData
|
||||
}
|
||||
export type CreateValetTokenResponse = CreateValetTokenResponseData
|
||||
|
||||
@@ -1,5 +1 @@
|
||||
import { MinimalHttpResponse } from '../Http/MinimalHttpResponses'
|
||||
|
||||
export type DownloadFileChunkResponse = MinimalHttpResponse & {
|
||||
data: ArrayBuffer
|
||||
}
|
||||
export type DownloadFileChunkResponse = ArrayBuffer
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
import { MinimalHttpResponse } from '../Http/MinimalHttpResponses'
|
||||
|
||||
export type StartUploadSessionResponse = MinimalHttpResponse & {
|
||||
export type StartUploadSessionResponse = {
|
||||
success: boolean
|
||||
uploadId: string
|
||||
}
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import { MinimalHttpResponse } from '../Http/MinimalHttpResponses'
|
||||
|
||||
export type UploadFileChunkResponse = MinimalHttpResponse & {
|
||||
export type UploadFileChunkResponse = {
|
||||
success: boolean
|
||||
}
|
||||
|
||||
5
packages/responses/src/Domain/Http/DeprecatedError.ts
Normal file
5
packages/responses/src/Domain/Http/DeprecatedError.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
export type DeprecatedError = {
|
||||
message: string
|
||||
status: number
|
||||
tag?: string
|
||||
}
|
||||
13
packages/responses/src/Domain/Http/DeprecatedHttpResponse.ts
Normal file
13
packages/responses/src/Domain/Http/DeprecatedHttpResponse.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import { DeprecatedError } from './DeprecatedError'
|
||||
import { HttpStatusCode } from './HttpStatusCode'
|
||||
import { DeprecatedResponseMeta } from './DeprecatedResponseMeta'
|
||||
|
||||
export type DeprecatedHttpResponse = {
|
||||
status: HttpStatusCode
|
||||
error?: DeprecatedError
|
||||
data?: {
|
||||
error?: DeprecatedError
|
||||
}
|
||||
meta?: DeprecatedResponseMeta
|
||||
headers?: Map<string, string | null>
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
import { DeprecatedError } from './DeprecatedError'
|
||||
import { HttpStatusCode } from './HttpStatusCode'
|
||||
|
||||
export type DeprecatedMinimalHttpResponse = {
|
||||
status: HttpStatusCode
|
||||
error?: DeprecatedError
|
||||
headers?: Map<string, string | null>
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
import { Role } from '@standardnotes/security'
|
||||
|
||||
export type ResponseMeta = {
|
||||
export type DeprecatedResponseMeta = {
|
||||
auth: {
|
||||
userUuid?: string
|
||||
roles?: Role[]
|
||||
@@ -1,7 +1,6 @@
|
||||
export enum StatusCode {
|
||||
export enum DeprecatedStatusCode {
|
||||
LocalValidationError = 10,
|
||||
CanceledMfa = 11,
|
||||
UnknownError = 12,
|
||||
|
||||
HttpStatusMinSuccess = 200,
|
||||
HttpStatusNoContent = 204,
|
||||
@@ -1,10 +0,0 @@
|
||||
export type Error = {
|
||||
message: string
|
||||
status: number
|
||||
tag?: string
|
||||
/** In the case of MFA required responses,
|
||||
* the required prompt is returned as part of the error */
|
||||
payload?: {
|
||||
mfa_key?: string
|
||||
}
|
||||
}
|
||||
@@ -9,4 +9,7 @@ export enum ErrorTag {
|
||||
RevokedSession = 'revoked-session',
|
||||
AuthInvalid = 'invalid-auth',
|
||||
ReadOnlyAccess = 'read-only-access',
|
||||
|
||||
ClientValidationError = 'client-validation-error',
|
||||
ClientCanceledMfa = 'client-canceled-mfa',
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
import { HttpResponse } from './HttpResponse'
|
||||
import { StatusCode } from './StatusCode'
|
||||
|
||||
export function isErrorResponseExpiredToken(errorResponse: HttpResponse): boolean {
|
||||
return errorResponse.status === StatusCode.HttpStatusExpiredAccessToken
|
||||
}
|
||||
6
packages/responses/src/Domain/Http/HttpError.ts
Normal file
6
packages/responses/src/Domain/Http/HttpError.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
import { ErrorTag } from './ErrorTag'
|
||||
|
||||
export type HttpError = {
|
||||
message: string
|
||||
tag?: ErrorTag
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
import { HttpError } from './HttpError'
|
||||
|
||||
export type HttpErrorResponseBody = {
|
||||
error: HttpError
|
||||
}
|
||||
@@ -1,13 +1,26 @@
|
||||
import { StatusCode } from './StatusCode'
|
||||
import { Error } from './Error'
|
||||
import { ResponseMeta } from './ResponseMeta'
|
||||
import { HttpErrorResponseBody } from './HttpErrorResponseBody'
|
||||
import { HttpResponseMeta } from './HttpResponseMeta'
|
||||
import { HttpHeaders } from './HttpHeaders'
|
||||
import { HttpStatusCode } from './HttpStatusCode'
|
||||
|
||||
export type HttpResponse = {
|
||||
status?: StatusCode
|
||||
error?: Error
|
||||
data?: {
|
||||
error?: Error
|
||||
}
|
||||
meta?: ResponseMeta
|
||||
headers?: Map<string, string | null>
|
||||
type AnySuccessRecord = Record<string, unknown> & { error?: never }
|
||||
|
||||
interface HttpResponseBase {
|
||||
status: HttpStatusCode
|
||||
meta?: HttpResponseMeta
|
||||
headers?: HttpHeaders
|
||||
}
|
||||
|
||||
export interface HttpErrorResponse extends HttpResponseBase {
|
||||
data: HttpErrorResponseBody
|
||||
}
|
||||
|
||||
export interface HttpSuccessResponse<T = AnySuccessRecord> extends HttpResponseBase {
|
||||
data: T
|
||||
}
|
||||
|
||||
export type HttpResponse<T = AnySuccessRecord> = HttpErrorResponse | HttpSuccessResponse<T>
|
||||
|
||||
export function isErrorResponse<T>(response: HttpResponse<T>): response is HttpErrorResponse {
|
||||
return (response.data as HttpErrorResponseBody)?.error != undefined
|
||||
}
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
import { StatusCode } from './StatusCode'
|
||||
import { Error } from './Error'
|
||||
|
||||
export type MinimalHttpResponse = {
|
||||
status?: StatusCode
|
||||
error?: Error
|
||||
headers?: Map<string, string | null>
|
||||
}
|
||||
15
packages/responses/src/Domain/Http/index.ts
Normal file
15
packages/responses/src/Domain/Http/index.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
export * from './ErrorTag'
|
||||
export * from './HttpErrorResponseBody'
|
||||
export * from './HttpHeaders'
|
||||
export * from './HttpRequest'
|
||||
export * from './HttpRequestParams'
|
||||
export * from './HttpResponse'
|
||||
export * from './HttpResponseMeta'
|
||||
export * from './HttpVerb'
|
||||
export * from './DeprecatedError'
|
||||
export * from './DeprecatedHttpResponse'
|
||||
export * from './DeprecatedMinimalHttpResponses'
|
||||
export * from './DeprecatedResponseMeta'
|
||||
export * from './DeprecatedStatusCode'
|
||||
export * from './HttpStatusCode'
|
||||
export * from './HttpError'
|
||||
@@ -1,8 +1,5 @@
|
||||
import { MinimalHttpResponse } from '../Http/MinimalHttpResponses'
|
||||
import { IntegrityPayload } from './IntegrityPayload'
|
||||
|
||||
export type CheckIntegrityResponse = MinimalHttpResponse & {
|
||||
data: {
|
||||
mismatches: IntegrityPayload[]
|
||||
}
|
||||
export type CheckIntegrityResponse = {
|
||||
mismatches: IntegrityPayload[]
|
||||
}
|
||||
|
||||
@@ -1,14 +1,11 @@
|
||||
import { MinimalHttpResponse } from '../Http/MinimalHttpResponses'
|
||||
import { ServerItemResponse } from './ServerItemResponse'
|
||||
|
||||
export type GetSingleItemResponse = MinimalHttpResponse & {
|
||||
data:
|
||||
| {
|
||||
success: true
|
||||
item: ServerItemResponse
|
||||
}
|
||||
| {
|
||||
success: false
|
||||
message: string
|
||||
}
|
||||
}
|
||||
export type GetSingleItemResponse =
|
||||
| {
|
||||
success: true
|
||||
item: ServerItemResponse
|
||||
}
|
||||
| {
|
||||
success: false
|
||||
message: string
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import { HttpResponse } from '../Http/HttpResponse'
|
||||
import { RawSyncData } from './RawSyncData'
|
||||
|
||||
export type RawSyncResponse = HttpResponse & { data: RawSyncData }
|
||||
export type RawSyncResponse = RawSyncData
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { AnyKeyParamsContent, ContentType } from '@standardnotes/common'
|
||||
import { HttpResponse } from '../Http/HttpResponse'
|
||||
import { DeprecatedHttpResponse } from '../Http/DeprecatedHttpResponse'
|
||||
import { ServerItemResponse } from '../Item/ServerItemResponse'
|
||||
|
||||
export type ActionResponse = HttpResponse & {
|
||||
export type ActionResponse = DeprecatedHttpResponse & {
|
||||
description: string
|
||||
supported_types: ContentType[]
|
||||
deprecation?: string
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
import { HttpResponse } from '../Http/HttpResponse'
|
||||
import { ListedAccountInfo } from './ListedAccountInfo'
|
||||
|
||||
export type ListedAccountInfoResponse = HttpResponse & {
|
||||
data: ListedAccountInfo
|
||||
}
|
||||
export type ListedAccountInfoResponse = ListedAccountInfo
|
||||
|
||||
@@ -1,5 +1 @@
|
||||
import { MinimalHttpResponse } from '../Http/MinimalHttpResponses'
|
||||
|
||||
export type ListedRegistrationResponse = MinimalHttpResponse & {
|
||||
data?: unknown
|
||||
}
|
||||
export type ListedRegistrationResponse = unknown
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
import { MinimalHttpResponse } from '../Http/MinimalHttpResponses'
|
||||
import { HttpResponse } from '../Http/HttpResponse'
|
||||
|
||||
export type DeleteSettingResponse = MinimalHttpResponse
|
||||
export type DeleteSettingResponse = HttpResponse
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
import { MinimalHttpResponse } from '../Http/MinimalHttpResponses'
|
||||
import { AvailableSubscriptions } from './AvailableSubscriptions'
|
||||
|
||||
export type GetAvailableSubscriptionsResponse = MinimalHttpResponse & {
|
||||
data?: AvailableSubscriptions
|
||||
}
|
||||
export type GetAvailableSubscriptionsResponse = AvailableSubscriptions
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
import { FeatureDescription } from '@standardnotes/features'
|
||||
import { MinimalHttpResponse } from '../Http/MinimalHttpResponses'
|
||||
|
||||
export type GetOfflineFeaturesResponse = MinimalHttpResponse & {
|
||||
data?: {
|
||||
features: FeatureDescription[]
|
||||
roles: string[]
|
||||
}
|
||||
export type GetOfflineFeaturesResponse = {
|
||||
features: FeatureDescription[]
|
||||
roles: string[]
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user