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