vzakharchenko/keycloak-lambda-authorizer

View on GitHub
Adapter.ts

Summary

Maintainability
A
0 mins
Test Coverage
import {
  AdapterDependencies,
  AdapterContent,
  updateOptions,
} from './src/Options';
import {SecurityAdapter} from './src/adapters/SecurityAdapter';
import {ApigatewayAdapter, DefaultApigatewayAdapter} from './src/adapters/ApigatewayAdapter';
import {ServiceAccount} from './src/serviceaccount/ServiceAccount';
import {DefaultMiddlewareAdapter, MiddlewareAdapter} from './src/adapters/MiddlewareAdapter';
import {JWKS} from './src/jwks/JWKS';

export interface KeycloakAdapter {
    getDefaultAdapter(): SecurityAdapter;

    getAPIGateWayAdapter(): ApigatewayAdapter;
    getExpressMiddlewareAdapter(): MiddlewareAdapter;

    getAWSLambdaAdapter(): ApigatewayAdapter;

    getServiceAccount():ServiceAccount;

    getJWKS():JWKS;
}

export default class DefaultKeycloakAdapter implements KeycloakAdapter {
  options: AdapterContent;

  constructor(options: AdapterDependencies) {
    this.options = updateOptions(options);
  }

  getJWKS(): JWKS {
    return this.options.jwks;
  }

  getServiceAccount(): ServiceAccount {
    return this.options.serviceAccount;
  }

  getAPIGateWayAdapter(): ApigatewayAdapter {
    return new DefaultApigatewayAdapter(this.options);
  }

  getAWSLambdaAdapter(): ApigatewayAdapter {
    return this.getAPIGateWayAdapter();
  }

  getDefaultAdapter(): SecurityAdapter {
    return this.options.securityAdapter;
  }

  getExpressMiddlewareAdapter(): MiddlewareAdapter {
    return new DefaultMiddlewareAdapter(this.options);
  }
}