# Proyecto UI Plugin

## Descripción del Proyecto

El proyecto está estructurado en dos partes principales: `ui-emulator` y `uiPlugin`. 

- **ui-emulator**: Se encarga de simular el entorno de ejecución y proveer una interfaz para probar el plugin.
- **uiPlugin**: Contiene la implementación del plugin principal.

## Estructura del Proyecto

```plaintext
├── readme.md
├── ui-emulator
│   ├── angular.json
│   ├── config.json
│   ├── package.json
│   ├── package-lock.json
│   └── tsconfig.emulator.json
└── uiPlugin
    ├── angular.json
    ├── dist
    │   ├── assets
    │   │   └── i18n
    │   │       ├── en.json
    │   │       ├── en-US.json
    │   │       ├── es-ES.json
    │   │       ├── es.json
    │   │       └── i18n.json
    │   ├── bundle.js
    │   ├── index.html
    │   ├── manifest.json
    │   └── plugin.zip
    ├── package.json
    ├── package-lock.json
    ├── src
    │   ├── index.html
    │   ├── main
    │   │   ├── cloud-services
    │   │   │   ├── cloud-services.component.html
    │   │   │   ├── cloud-services.component.scss
    │   │   │   └── cloud-services.component.ts
    │   │   └── cloud-services.module.ts
    │   ├── plugin.main.ts
    │   └── public
    │       ├── assets
    │       │   └── i18n
    │       │       ├── en.json
    │       │       ├── en-US.json
    │       │       ├── es-ES.json
    │       │       ├── es.json
    │       │       └── i18n.json
    │       └── manifest.json
    └── tsconfig.json
```

## Requisitos Previos

Para ejecutar el proyecto localmente, necesitarás las siguientes dependencias:

- **Angular CLI**: 17.3.16
- **Node.js**: 18.20.8
- **Package Manager**: npm 10.8.2
- **Sistema Operativo**: linux x64, Windows 10/11 x64

Además, asegúrate de tener instalado **curl**.

## Instalación de Dependencias (Linux)

### Node.js

Puedes descargar e instalar Node.js desde el sitio oficial: [Node.js](https://nodejs.org/).

### Angular CLI

Una vez que tengas Node.js instalado, puedes instalar Angular CLI globalmente con el siguiente comando:

```bash
npm install -g @angular/cli@17.3.16
```

### Curl

Curl generalmente está preinstalado en la mayoría de las distribuciones Linux. Si no lo tienes instalado, puedes instalarlo usando tu gestor de paquetes. Por ejemplo, en Ubuntu:

```bash
sudo apt-get update
sudo apt-get install curl
```

## Inicialización y Ejecución del Proyecto

### Paso 1: Clona el Repositorio

Clona el repositorio del proyecto en tu máquina local:

```bash
git clone <URL_DEL_REPOSITORIO>
cd <NOMBRE_DEL_PROYECTO>
```

### Paso 2: Configura y Ejecuta el Emulador de vCloud

Primero, navega a la carpeta `ui-emulator` y ejecuta los siguientes comandos:

```bash
cd ui-emulator
npm install --legacy-peer-deps
```

### Paso 3: Configura y Ejecuta el Plugin UI

Luego, navega a la carpeta `uiPlugin` y ejecuta los siguientes comandos:

```bash
cd ../uiPlugin
npm install --force
```

### Paso 4: Autenticación en vCloud Director

**Linux:**

Ejecuta el siguiente comando de curl para autenticarte en vCloud Director. Asegúrate de reemplazar `user@tenant`, `password` y `https://enpoint-stg-or-production/cloudapi/1.0.0/sessions` con tus credenciales y el endpoint adecuado:

```bash
CREDS=$(echo -n 'user@tenant:password' | base64)
curl -D - -X POST https://enpoint-stg-or-production/cloudapi/1.0.0/sessions \
-H "Accept: application/json;version=last(39.1)"  \
-H "Authorization: Basic $CREDS" \
-H "Content-Type: application/json;version=39.1" \
-A -v
```

Busca en la respuesta el parámetro `X-VMWARE-VCLOUD-ACCESS-TOKEN` y guárdalo.

**Windows**

Usando PowerShell:

Ejecuta el siguiente comando de curl para autenticarte en vCloud Director. Asegúrate de reemplazar `user@tenant`, `password` y `https://enpoint-stg-or-production/cloudapi/1.0.0/sessions` con tus credenciales y el endpoint adecuado:

```bash
(Invoke-WebRequest -Uri "https:/enpoint-stg-or-production/cloudapi/1.0.0/sessions" -Method POST -Headers @{ "Accept"="application/json;version=39.1"; "Authorization"="Basic $([Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes('user@tenant:password')))"; "Content-Type"="application/json;version=39.1" } -Body '{}' -Verbose -Debug).Headers["X-VMWARE-VCLOUD-ACCESS-TOKEN"]
```

### Paso 5: Configura el Emulador con el Token de Acceso

Abre el archivo `config.json` dentro de la carpeta `ui-emulator` y reemplaza el valor del parámetro `jwt` con el token de acceso obtenido anteriormente:

```json
{
  "jwt": "tu-token-de-acceso"
}
```

### Paso 6: Inicia el Emulador

Finalmente, inicia el emulador con el siguiente comando:

```bash
cd ../ui-emulator
npm run start
```

Ahora deberías poder acceder a la aplicación en tu navegador local.

## Contribución

Si deseas contribuir al proyecto, sigue estos pasos:

1. Haz un fork del repositorio.
2. Crea una nueva rama para tus cambios: `git checkout -b feature/nueva-funcionalidad`.
3. Realiza los cambios necesarios y asegúrate de que todo funcione correctamente.
4. Commita tus cambios: `git commit -m "Añade nueva funcionalidad"`.
5. Envía tu rama a GitHub: `git push origin feature/nueva-funcionalidad`.
6. Crea una pull request en el repositorio original.
