1.1.0 • Published 6 years ago

@zerointermittency/sns v1.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
6 years ago

Bienvenido

Este modulo es el encargado de proporcionar las funcionalidades para utilizar las características del servicio SNS de Amazon Web Services.

Instalación

yarn add @zerointermittency/sns
# npm i --save @zerointermittency/sns

Errores

códigonivelnombremensaje
100fatalinternalInternal error
101warningalreadyExistAlready exist
102warningnotFoundNot found

Api

El modulo utiliza aws-sdk, para poder utilizar todas las funcionalidades de sns que están descritas en su documentación.

Iniciar

Se instancia un objeto como se hace a continuación:

const ZISns = require('@zerointermittency/sns'),
    sns = new ZISns(sns, platforms);

Argumentos:

arn Amazon Resource Name: es un nombre utilizado por amazon para identificar sus recursos.

Retorna:

  • (ZISns): Retorna la instancia de la clase ZISns.

endpoint

Así es como llama amazon a el punto donde enviá la notificación, en este caso es para el dispositivo registrado

Método endpoint.create
sns.endpoint.create(opts)
    .then((arn) => {})
    .catch((error) => {});

Argumentos:

  • opts (Object) required:
    • platform (String) required: identifica a que plataforma pertenece el endpoint
    • token (String) required: token con el cual se enviá la notificación al endpoint (token de android (GCM) o ios (APNS))
    • data (Object): es para guardar información que permita identificar el endpoint

Retorna:

  • (Promise):
    • then(arn [String]):
      • arn (String): identificador para el endpoint
Método endpoint.read
sns.endpoint.read(arn)
    .then((data) => {})
    .catch((error) => {});

Argumentos:

  • arn (String) required: identifica el endpoint a obtener

Retorna:

  • (Promise):
    • then(data [Object]):
      • enabled (Boolean): identifica si esta activo o no el endpoint
      • token (String): token con el cual se enviá la notificación al endpoint (token de android (GCM) o ios (APNS))
      • data (Object): información que permite identificar el endpoint
Método endpoint.update
sns.endpoint.update(arn, opts)
    .then(() => {})
    .catch((error) => {});

Argumentos:

  • arn (String) required: identifica el endpoint a actualizar
  • opts (Boolean) required:
    • enabled (Boolean): identifica si esta activo o no el endpoint
    • token (String): token con el cual se enviá la notificación al endpoint (token de android (GCM) o ios (APNS))
    • data (Object): información que permite identificar el endpoint

Retorna:

  • (Promise):
    • then(): cuando se termina de actualizar correctamente
Método endpoint.delete
sns.endpoint.delete(arn)
    .then(() => {})
    .catch((error) => {});

Argumentos:

  • arn (String) required: identifica el endpoint a eliminar

Retorna:

  • (Promise):
    • then(): cuando se termina de eliminar correctamente

topic

Este es un termino para agrupar los endpoint, es utilizado para enviar notificaciones a todos los endpoint registrados en el

Método topic.create
sns.topic.create(name)
    .then((arn) => {})
    .catch((error) => {});

Argumentos:

  • name (String) required: identifica el topic (tener presente que de ser único)

Retorna:

  • (Promise):
    • then(arn [String]):
      • arn (String): identificador para el topic
Método topic.read
sns.topic.read(arn)
    .then((data) => {})
    .catch((error) => {});

Argumentos:

  • arn (String) required: identifica el topic a obtener

Retorna:

  • (Promise):
    • then(data [Object]):
      • displayName (String): nombre que es enviado en la notificación para identificar el topic desde que se envió
      • pending (Number): numero de suscripciones pendientes
      • confirmed (Number): numero de suscripciones confirmadas
      • deleted (Number): numero de suscripciones eliminadas
Método topic.update
sns.topic.update(arn, displayName)
    .then((data) => {})
    .catch((error) => {});

Argumentos:

  • arn (String) required: identifica el topic a obtener
  • displayName (String) required: nombre que es enviado en la notificación para identificar el topic desde que se envió

displayName: solo se permite modificar este atributo

Retorna:

  • (Promise):
    • then(): cuando se ha actualizado correctamente
Método topic.delete
sns.topic.delete(arn)
    .then(() => {})
    .catch((error) => {});

Argumentos:

  • arn (String) required: identifica el topic a eliminar

Retorna:

  • (Promise):
    • then(): cuando se termina de eliminar correctamente
Método topic.subscribe

suscribe un endpoint a un topic

sns.topic.subscribe(topic, endpoint)
    .then((subscriptionArn) => {})
    .catch((error) => {});

Argumentos:

  • topic (String) required: identifica el topic donde se suscribirá el endpoint
  • endpoint (String) required: identifica el endpoint a suscribir

Retorna:

  • (Promise):
    • then(subscriptionArn [String]):
      • subscriptionArn (String): identificador para la suscripción del endpoint en el topic
Método topic.unsubscribe

de-suscribe un endpoint de un topic

sns.topic.unsubscribe(subscriptionArn)
    .then(() => {})
    .catch((error) => {});

Argumentos:

  • subscriptionArn (String) required: identifica la suscripción a eliminar

Retorna:

  • (Promise):
    • then(): cuando de-suscribe correctamente el endpoint del topic

Método send

Es el método que enviá la notificación a un endpoint o topic especifico

ejemplo:

const ZISns = require('npm-sns'),
    sns = new ZISns(opts),
sns.send(opts)
    .then(() => {})
    .catch((error) => {});

Argumentos:

  • opts (String) required:
    • topic (String) required/endpoint: identifica el topic que se utilizara para el envió de notificaciones a todos sus endpoint registrados, si no define endpoint es requerido
    • endpoint (String) required/topic: identifica el endpoint al que se le enviara la notificación, si no define topic es requerido
    • alert (Objet) required:
      • title (String) required: titulo que tendrá la notificación
      • body (String) required: cuerpo de la notificación
    • deepLink (String) required: enlace al elemento que esta relacionado a la notificación dentro de la aplicación
    • ttl (Number): tiempo maximo antes de cancelar una notificación enviada a un endpoint, si es que este no la recibe, por defecto 60
    • sound (String): nombre que identifica el sonido de la notificación, por defecto default

Retorna:

  • (Promise):
    • then(): cuando la notificación se envió exitosamente

Pruebas funcionales (Unit Testing)

Se llevaron a cabo las pruebas funcionales para validar el funcionamiento de sus método y opciones por defecto:

IMPORTANTE: para hacer la prueba de envió de notificación es necesario tener arns activos a los cuales poder enviar notificaciones y se debe agregar el archivo las credenciales /test/config.js basándose en /test/config-sample.js

yarn test

Changelog

Todos los cambios importantes son escritos aquí. El Formato esta basado en Keep a Changelog

Unreleased

1.0.0 - 2018-01-08

Added

  • Se agregan pruebas funcionales con el objetivo de tener probado todo el código, usando istanbul js para saber cuanto
  • CRUD para manipulación de endpoint (token de dispositivo)
  • CRUD para manipulación de topic
  • (de)subscribir un endpoint a un topic
  • metodo send para enviar una notificación a todos los endpoint de un topic o a un endpoint específico