Configurando Ambientes
Na Solfácil existem vários ambientes para homologação e por muitas vezes é necessário trocar de ambiente em tempo de execução, para isso foi feita uma implementação que possa trocar esses ambientes.
Hoje conta-se com três tipos de ambientes a serem trocados, sendo eles:
| Ambiente | Descrição |
|---|---|
| Rest API | Ambiente de requisições rest. |
| GraphQL API | Ambiente de requisição graphql. |
| Keycloak (SSO) | Ambiente de autenticação. |
Conexão
O Projeto contém duas classes de conexão, uma para conexões Rest e GraphQL e outra para ambientes Keycloak.
export default class Connection { apiURL: string; apiKey?: string; constructor(apiURL: string, apiKey?: string) { this.apiURL = apiURL; this.apiKey = apiKey; }}| Parâmetro | Obrigatório | Descrição |
|---|---|---|
apiURL | Sim | URL para a api que deve ser acessada. |
apiKey | Não | Chave da API que deve ser enviada no header. |
export default class KeycloakConnection { url: string; realm: string; client_id: string; constructor(url: string, realm: string, client_id: string) { this.url = url; this.realm = realm; this.client_id = client_id; }}| Parâmetro | Obrigatório | Descrição |
|---|---|---|
url | Sim | URL de acesso ao Keycloak |
realm | Sim | Realm para login no Keycloak. |
client_id | Sim | Cliente ID para login no Keycloak |
Rest API
Para qualquer ambiente as configurações estaram disponíveis na pasta utils, para Rest API's deve-se observar a pasta utils/connection/rest, nela irá conter as classes responsáveis por agrupar todas as requests de uma API.
Vamos pegar como exemplo utils/connection/rest/ConnectionsCore.ts, que é a classe responsável por agrupar todos os ambientes para acessar API's do projeto Core da Solfácil.
import Connection from '../Connection';export default class ConnectionsCore { static readonly development = new Connection( 'http://localhost:4000/v1', '77a991a1-9086-4e88-a7db-0143c940cb96' ); static readonly production = new Connection( 'http://prod.localhost:4000/v1', '$2a$12$ZVD3Gt7Ri7Gwfg3Bx.Ygy.VRqBXLogILKYAYqo7ucayaTne3MMxtW' ); static readonly staging = new Connection( 'http://stg.localhost:4000/v1/', '$2a$12$ZVD3Gt7Ri7Gwfg3Bx.Ygy.VRqBXLogILKYAYqo7ucayaTne3MMxtW' );}ConnectionsSolfacilPlus.ts.GraphQL
Para ambientes graphql não é diferente de ambientes rest, basta configurar uma classe em utils/connection/graphql, por exemplo:
import Connection from '../Connection';export default class ConnectionsCoreGql { static readonly development = new Connection( 'https://user-apollo-server.herokuapp.com/graphql' ); static readonly production = new Connection( 'http://prod.localhost:4000/v1/graphql' ); static readonly staging = new Connection( 'http://stg.localhost:4000/v1//graphql' );}Keycloak (SSO)
Para ambientes keycloak segue-se o mesmo princípio, porém a classe de conexão é diferente e o local onde fica as coneções configuradas fica em utils/keycloak. Segue uma classe já configurada.
import KeycloakConnection from './KeycloakConnection';export default class KeycloakConnections { static readonly development = new KeycloakConnection( 'http://localhost:8080', 'General', 'plasma' ); static readonly production = new KeycloakConnection( 'https://sso.solfacil.com.br', 'General', 'plasma' ); static readonly staging = new KeycloakConnection( 'https://stg-sso.solfacil.com.br', 'General', 'plasma' );}