Skip to content
This repository was archived by the owner on Jan 25, 2022. It is now read-only.

Comunicaciones internas

Alejandro González Hevia edited this page Feb 23, 2021 · 8 revisions

Kafka

Nombre Descripcion Topico Key Message Emisor Receptor(es)
topics Topicos detectados por el sistema de topic modeling topics <id_post> ["topic_a", "topic_b"] topicmodelingservice PostsService
offensive Respuesta del sistema de detección de texto ofensivo offensive_text <id_post> true|false offensivetextdetectionservice PostsService
lang_detection Respuesta del sistema de detección de idioma lang_detection <id_post> "idioma (ISO Code)" langdetectionservice PostsService
new_post Notificacion de que se ha creado un nuevo post post <id_post> "texto del post" PostsService lang/topics/offensive services
logging Envio de logs service_logs <nombre_servicio_emisor> "el log a enviar" Todos los Servicios logstash

Soap

StatisticsService

1.- Añadir un post

/soap/addPost

Ejemplo de entrada

idioma: "es"

2.- Añadir un 'registro' de usuario

/soap/addRegisteredUser

Ejemplo de entrada

TODO: ver después

3.- Añadir un chat creado

/soap/addCreatedChat

4.- Añadir un follow de usuario

/soap/addFollow

Ejemplo de entrada

follower: <id_usuario_follower>,  // el que sigue
followee: <id_usuario_followee>   // al que le siguen

REST

PostsService

1.- Listado de posts con paginación + filtros

GET: /api/posts

Query params:

  • Limit (int): Numero de resultados por consulta (default=10)
  • Offset (int): A partir de qué post se devuelve resultado (default=0)
  • User (long): ID del usuario del que queremos obtener los posts
  • Language (string): String del lenguaje de los posts a obtener

Resultado válido:

{
	“links”: {
		“self”: “url_actual”,
		“first”: “url_primeros_elementos”,
		“prev”: “url_pagina_anterior”,
		“next”: “url_pagina_siguiente”,
		“last”: “url_ultima_pagina”
	},
	“count”: 10,
	“total”: 500,
	“posts”: [
	{
		id: 1,
		content: “”,
		language: “en”,
		topics: [
			“topic_a”, “other topic”, “sample”
		],
		is_offensive: false,
		likes: 150,
		user: <id_usuario_autor>
	},
	…
	{
		id: 10,
		…
	}
	]
}

2.- Obtener datos de un post

GET: /api/posts/

Resultado válido:

{
	id: 1,
	content: “”,
	language: “en”,
	topics: [
		“topic_a”, “other topic”, “sample”
	],
	is_offensive: false,
	likes: 150,
	user: <id_usuario_autor>
}

3.- Crear un nuevo post

POST: /api/posts

Los campos de idioma, id, topics, is_offensive y likes los crea automáticamente el servicio, por lo que no hace falta introducir mucha info aquí.

Ejemplo de entrada (body):

{		
	content: “”,
	user: <id_usuario_autor>
}

Resultado válido:

202 - Created

4.- Eliminar un post existente

DELETE: /api/posts/

Resultado válido:

Código deleted


StatisticsService

1.- Obtener estadísticas del sistema

GET: /api/statistics

Resultado válido:

{
    "registeredUsers": {
       "total": 11,
       "learning": {
           "en": 6,
           "es": 7
       },
       "native": {
           "es": 10,
           "ru": 1
       }
    },
    "createdPosts": {
        "total": 100,
        "en": 5,
        "es": 6,
        ...
    },
    "createdChats": 7
}

2.- Obtener estadísticas de un usuario

GET: /api/users/<id>/statistics

Resultado válido

    "createdPosts": {
        "total": 100,
        "en": 5,
        "es": 6,
        ...
    },
    "numFollowing": 10,
    "numFollowers": 5
    "translationsMade": 20,
    "textToSpeechMade": 10

UsersService


MessagesService


TranslationService

1.- Realizar una traducción

POST: /api/translation

Ejemplo de entrada (body)

{
	“from”: “<codigo-idioma>”,
	“to”: “<codigo-idioma>”,
	“text”: “texto a traducir”
}

Respuesta válida

{
	“from”: “<codigo-idioma>”,
	“to”: “<codigo-idioma>”,
	“original”: “texto original”,
	“translation”: “texto traducido”
}

Respuesta inválida

429 - Too Many Requests: Se nos acabó la plata

TextToSpeechService

1.- Convertir texto a audio

POST: /api/tts

Ejemplo de entrada (body)

{
	“language”: “<codigo-idioma>”,
	“text”: “texto a ttsear”
}

Respuesta válida

{
	“language”: “”
	“text”: “”,
	“result” “<audio codificado de alguna manera. Depende de la api…>”
}

Respuesta inválida

429 - Too Many Requests Se nos acabó la plata

Clone this wiki locally