conexion de lazarus con api de amazon s3 y google calendar
DESCRIPTION
Esta presentación resume el procedimiento para acceder a los buckets de Amazon S3 o crear y leer eventos en Google Calendar con Lazarus, el IDE de Free Pascal.TRANSCRIPT
![Page 1: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/1.jpg)
Conectando a Lazarus
con las API de Amazon S3
y Google Calendar
Josué Alvarado Cantillo
![Page 2: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/2.jpg)
Acoplando a Lazarus con
Amazon S3
Para empezar con nuestro proyecto en
Lazarus, necesitaremos agregar al mismo el
paquete "pl_synapsepkg".
![Page 3: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/3.jpg)
Empezar el proyecto
Empezaremos por crear una aplicación , a la
que seguidamente le agregaremos la unidad
"uS3Storage".
El código de esta unidad lo podemos
encontrar en la dirección :
http://pastebin.com/HMLR2a66
![Page 4: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/4.jpg)
Librería uS3Storage
La unidad "uS3Storage" será la unidad más
importante en nuestro proyecto, en la misma se
encuentran las funciones para administrar los
buckets de la nube de Amazon.
![Page 5: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/5.jpg)
Librería uS3Storage
En la unidad podemos encontrar las siguientes
funciones:
•Obtener la lista de Buckets.
•Crear un bucket.
•Descargar un archivo.
•Borrar un bucket.
Entre otras.
![Page 6: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/6.jpg)
Autorización
Para poder acceder a los archivos en la nube
de Amazon necesitamos identificarnos, para
esto empezaremos la conexión dando nuestra
clave privada y pública.
![Page 7: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/7.jpg)
Autorización
Como lo muestra la imagen escribimos la
clave privada de manera encriptada y luego la
desencriptamos con un simple algoritmo.
Hacemos lo mismo con la clave pública.
![Page 8: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/8.jpg)
Autorización
-Seguidamente pasamos a crear la unidad con
la clave pública y privada como parámetros.
![Page 9: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/9.jpg)
Lista de Buckets
Antes de llamar la función para obtener la lista
de buckets , añadiremos a la unidad unas
clases que nos serán útiles .
![Page 10: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/10.jpg)
Lista de buckets
Con las clases anteriores agregadas podemos
declarar las variables con las que trabajaremos
![Page 11: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/11.jpg)
Lista de Buckets bucket
Ya identificados y con las variables
declaradas podemos empezar a utilizar la
funciones del uS3Storage.
Obtendremos una lista de buckets,para esto
usaremos la función "ListBucketItems"
![Page 12: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/12.jpg)
Lista de buckets
La respuesta al request se guardará en el
Memory Stream que habíamos declarado y
enviado como parámetro, en este caso
'theStream'.
Seguidamente pasamos a transformar el
Stream a un formato más entendible para
nosotros.
![Page 13: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/13.jpg)
Lista de buckets
Crearemos un 'TXMLDocument' en el que
guardaremos en formato XML el contenido del
stream que previamente habíamos recibido
![Page 14: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/14.jpg)
Lista de buckets
Si todo sale bien , podremos ver que el
documento vendrá con el siguiente formato.
![Page 15: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/15.jpg)
Lista de buckets
Teniendo el xml , pasamos a recorrer cada
nodo para incluirlo a la lista
![Page 16: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/16.jpg)
Lista de buckets
El algoritmo anterior nos llenara una lista con
el valor "key" de cada nodo que obtuvimos de
la respuesta del request a Amazon.
![Page 17: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/17.jpg)
Otras Funciones
La librería nos ofrece otras funciones que son
son muy simples de entender y utilizar .
Estas funciones por lo general nos pedirán
como parametro el 'BucketName' y el
'ObjectName', que son equivalentes al nombre
de la carpeta y nombre del archivo
respectivamente.
![Page 18: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/18.jpg)
Descargar Objeto
Para descargar un objeto solo tenemos que
mandar como parámetros el nombre del bucket
y el nombre del objeto, y guardar la descarga
en un 'TFileStream'.
![Page 19: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/19.jpg)
Borrar
Borrar un Objeto:
-De igual manera que en 'Descargar', la función
'DeleteS3Object' recibirá como parámetros el
nombre del bucket y el del objeto al cual
eliminará.
Borrar un Bucket:
-El 'DeleteBucket' solo recibirá como parámetro
el nombre del bucket, y nos eliminará el bucket
(utilizar con mucho cuidado).
![Page 20: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/20.jpg)
Crear y subir
Crear Bucket:
Para crear un nuevo bucket solo es necesario
enviar un string el cual será el nombre del
mismo; la función nos devolverá 'true' si tuvo
éxito al agregarlo.
Subir archivo:
En este caso enviaremos: el nombre del bucket
donde se alojará , el nombre del nuevo
objeto,un 'stream' con el nombre del archivo y
un booleano indicando si es binario.
![Page 21: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/21.jpg)
Conectando a
Lazarus con el API
de Google Calendar
Josué Alvarado Cantillo
![Page 22: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/22.jpg)
Autorización
Primeramente necesitamos enviar algunos
valores como el correo y la contraseña
incluidos en el "header" para identificarnos.
![Page 23: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/23.jpg)
Una vez listo el "Header" con los valores
correctos necesitamos hacer un request, para
esto usaremos el componente 'TidHTTP'
![Page 24: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/24.jpg)
Preparar Request
Es necesario indicar al componente algunas
de sus propiedades , como el 'IoHandler' y el
protocolo.
![Page 25: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/25.jpg)
Enviar el Request
Ahora podemos hacer un 'Post' en el que
recibiremos un string con el id de autorización,
la que identificamos con el valor 'Auth'.
![Page 26: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/26.jpg)
Enviar Request
Si la autorización no es correcta no daría el
siguiente error, que indica que la cuenta no es
válida
![Page 27: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/27.jpg)
Agregar un evento
Si todo esta correcto obtendremos la clave de
autorización con la que podemos acceder a
nuestros calendarios.
![Page 28: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/28.jpg)
Agregar un evento
Crearemos otro TidHTTp para enviar los los
datos del evento que queremos agregar.
![Page 29: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/29.jpg)
Agregar un evento
Para poder agregar un evento en el calendario
necesitamos crear un stream con formato XML
con los valores que queremos agregar, las
variables y los valores que reciben se pueden
encontrar en la siguiente dirección: https://developers.google.com/google-apps/calendar/v3/reference/events/insert
![Page 30: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/30.jpg)
Agregar un evento
![Page 31: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/31.jpg)
Agregar un evento
Transformamos el XML en stream para poder
enviarlo,
![Page 32: Conexion de lazarus con api de amazon s3 y google calendar](https://reader033.vdocuments.site/reader033/viewer/2022052508/559848b21a28ab58168b475c/html5/thumbnails/32.jpg)
Agregar un evento
Si llegara a suceder algún problema nos
informaría de el con el siguiente error, que nos
indica que el XML tiene valores incorrectos