O CloudZ é uma biblioteca desenvolvida para facilitar a interação com serviços em nuvem de maneira genérica e intuitiva.
- FTP
- SFTP
- AWS S3
A biblioteca CloudZ está disponível para uso no gerenciado de pacotes Composer, para utilizar a mesma, use o seguinte comando:
composer require somasolucoes/cloudz
Antes de começar a utilizar a biblioteca CloudZ, é necessário criar arquivos JSON para fornecer informações de configuração para diferentes serviços de nuvem. Para isso, siga as etapas abaixo:
- Crie uma pasta chamada
.cloudz
na raiz do seu projeto. - Dentro da pasta
.cloudz
, crie arquivos JSON separados para cada serviço de nuvem que você pretende utilizar, seguindo o padrão de nomenclatura a seguir:ftp.json
aws-s3.json
Crie um arquivo ftp.json
dentro da pasta .cloudz
com as informações necessárias para fazer login na conta de servço FTP ou SFTP. Utilize o seguinte formato JSON:
{
"FTPAccount":
{
"code": 1,
"host": "192.168.0.0",
"port": 21/22,
"user": "admin",
"password": "123",
"isPassive": "S/N",
"dirWork": "/example",
"urlAcess": "http://example",
"useSSH": "S/N"
}
}
Crie um arquivo aws-s3.json
dentro da pasta .cloudz
com as informações necessárias para autenticar na conta do Amazon S3. Utilize o seguinte formato JSON:
{
"AWSS3Account":
{
"code": 1,
"AWSKey": "B54CAB3F16A6CB378AEE5E1132B225F2",
"AWSSecretKey": "5918933c23ef6c8ee8e3a96807654b3d",
"AWSRegion": "us-east-1",
"AWSType": "S3",
"bucketName": "imagens/vídeos"
}
}
Para suportar o upload de arquivos para várias contas, você pode criar uma lista de contas no arquivo JSON. Veja os exemplos abaixo:
Crie um arquivo ftp.json
na pasta .cloudz
e configure mútiplas contas usando uma matriz JSON:
{
"FTPAccount": [
{
"code": 1,
"host": "192.168.0.0",
...
},
{
"code": 2,
"host": "192.168.0.1",
...
}
]
}
Crie um arquivo aws-s3.json
na pasta .cloudz
e configure mútiplas contas usando uma matriz JSON:
{
"AWSS3Account": [
{
"code": 1,
"AWSKey": "B54CAB3F16A6CB378AEE5E1132B225F2",
...
},{
"code": 2,
"AWSKey": "B54CAB3F16A6CB378AEE5E1132B225F2",
...
}]
}
Após as configurações prévias, para iniciar a utilização da CloudZ, você precisará instanciar a classes: CloudService. Ela requer dois parâmetros.
- Tipo de serviço em nuvem que você está conectando;
- Código de referência da conta de serviço em nuvem que você deseja acessar (Esse código irá identificar uma conta configurada em um arquivo JSON dentro do diretório
.cloudz
).
$cloudServiceType = 'tipo_servico';
$cloudServiceAccountCode = 1;
$cloudService = new CloudService($cloudServiceType, $cloudServiceAccountCode);
Segue lista dos tipos de serviços disponíveis:
- 'FTP'
- 'AWS-S3'
Exemplo:
$cloudServiceType = 'FTP';
$cloudServiceAccountCode = 1;
$cloudService = new CloudService($cloudServiceType, $cloudServiceAccountCode);
Mas pode ser usado também, constantes dos tipos de serviços disponibilizado pela biblioteca. Segue lista de constantes dos tipos de serviços:
- FTP_ACCOUNT
- AWS_S3_ACCOUNT
Exemplo:
$cloudServiceType = CloudServiceTypes::FTP_ACCOUNT;
$cloudServiceAccountCode = 1;
$cloudService = new CloudService($cloudServiceType, $cloudServiceAccountCode);
Ao fornecer esses parâmetros, você poderá iniciar o uso da biblioteca e interagir com diferentes serviços em nuvem usando uma única estrutura.
Para adicionar uma configuração, basta usar o seguinte comando:
$cloudServiceType = 'tipo_servico';
$cloudServiceAccountCode = 1;
$cloudService = new CloudService($cloudServiceType, $cloudServiceAccountCode);
$cloudService->settings->add('key example', value example);
A classe CloudService permite algumas configurações opcionais:
- canEncryptName: Permite que o nome do arquivo seja criptografado durante o envio (valor booleano true/false);
- canDeleteAfterUpload: Permite que o arquivo salvo localmente seja excluído após o upload (valor booleano true/false);
- path: Permite criar ou acessar um diretório específico na nuvem (valor string).
Se você deseja manter a organização na nuvem seguindo um padrão, a biblioteca CloudZ fornece "utilitys" de diretório. Essa utilidade oferece um padrão focado em soluções de projeto, que pode ser utilizado passando como parâmetro três strings: a raiz, o nome da solução e o nome do módulo. Para integrações de projetos externos, a "utility" de diretório necessita apenas de duas strings como parâmetro: a raiz e o nome da integração. Essa "utility" pode ser acessada de forma estática, facilitando a sua utilização no seu projeto.
Exemplo:
$mountSolutionPath = CloudServicePathUtility::mountSolutionPath('root', 'solutionName', 'module');
//Resultado de CloudServicePathUtility::mountSolutionPath: 'root/solucoes/solutionName/module'
$mountIntegrationPath = CloudServicePathUtility::mountIntegrationPath('root', 'integrationName');
//Resultado de CloudServicePathUtility::mountIntegrationPath: 'root/integracoes/integrationName'
$cloudServiceType = 'tipo_servico';
$cloudServiceAccountCode = 1;
$cloudService = new CloudService($cloudServiceType, $cloudServiceAccountCode);
$cloudService->settings->add('path', $mountSolutionPath);
Com essa funcionalidade, você pode manter uma estrutura organizada em diferentes serviços em nuvem, tornando mais fácil a localização dos seus arquivos e projetos.
Antes de realizar operações como Upload ou Delete, é necessário preparar o arquivo a ser enviado. Para isso, é preciso instanciar a classe CloudServiceFile, passando como parâmetro o caminho local do arquivo desejado.
$filePath = 'C:\Documents\example.txt'
$file = new CloudServiceFile($filePath);
Para realizar a ação de upload, basta utilizar o método "upload" da instância da CloudService, passando como parâmetro o arquivo preparado previamente pela classe CloudServiceFile.
$cloudServiceType = 'tipo_servico';
$cloudServiceAccountCode = 1;
$cloudService = new CloudService($cloudServiceType, $cloudServiceAccountCode);
$filePath = 'C:\Documents\example.txt'
$file = new CloudServiceFile($filePath);
$cloudService->upload($file);
Ao utilizar o método upload, a biblioteca retorna um objeto de resposta que contém informações relevantes para o usuário. Em caso de sucesso, o código 200 é retornado junto com uma URL que permite acessar o arquivo enviado. Em caso de erro, o código 400 é retornado junto com uma mensagem que explica o motivo do erro ocorrido.
Para realizar a ação de delete, basta utilizar o método "delete" da instancia da CloudService, passando como parâmetro o arquivo preparado previamente pela classe CloudServiceFile.
$cloudServiceType = 'tipo_servico';
$cloudServiceAccountCode = 1;
$cloudService = new CloudService($cloudServiceType, $cloudServiceAccountCode);
$filePath = 'C:\Documents\example.txt'
$file = new CloudServiceFile($filePath);
$cloudService->delete($file);
Ao utilizar o método delete, a biblioteca retorna um objeto de resposta que contém informações relevantes para o usuário. Em caso de sucesso, o código 200 é retornado junto com uma mensagem de sucesso. Em caso de erro, o código 400 é retornado junto com uma mensagem que explica o motivo do erro ocorrido.