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

5.- Nueva traducción de un usuario

/soap/addTranslation

Meter id usuario

6.- Nuevo tts de un usuario

/soap/addTextToSpeech

Meter id usuario

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:

201 - 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

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

GET: /api/users

Query params:

  • Limit (int): Numero de resultados por consulta (default=10)
  • Offset (int): A partir de qué post se devuelve resultado (default=0)
  • MinAge (int): Edad mínima de los usuarios a buscar
  • MaxAge (int): Edad máxima de los usuarios a buscar
  • WantsToLearn (string[]): Lista de idiomas (ISO) que está aprendiendo los usuarios (or)
  • Speaks (string[]): Lista de idiomas (ISO) que hablan los usuario (or)

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,
	“users”: [
	{
		"id": 1,
                "name": "Pepito",
                "surname": "Sanchez Perez"
		"learning": [“en”, "ru"],
                "speaks": "es",
                "age": 32,
                "avatar": "<url_del_avatar>",
                "followers": ["<url_get_carmen>", "<url_get_paco>"],
                "following": ["<url_get_fulanito>", "<url_get_menganita>"]
	},
	…
	{
		"id": 10,
		…
	}
	]
}

200 OK

Resultados inválidos

N/A

2.- Obtener usuario específico

GET: /api/users/<id>

Resultado válido:

{
     "id": 1,
     "name": "Pepito",
     "surname": "Sanchez Perez"
     "learning": [“en”, "ru"],
     "speaks": "es",
     "age": 32,
     "avatar": "<url_del_avatar>",
     "followers": ["<url_get_carmen>", "<url_get_paco>"],
     "following": ["<url_get_fulanito>", "<url_get_menganita>"]
}

#### Resultados inválidos 404: Not found

3.- Crear un usuario

POST: /api/users/

Ejemplo de entrada

{
     "username": "pepiiii",
     "password": "admin123",
     "email": "pepi@gmail.com",
     "name": "Pepito",
     "surname": "Sanchez Perez"
     "learning": [“en”, "ru"],
     "speaks": "es",
     "age": 32,
     "avatar": b"imagenCodificadaEnBase64"
}

Resultado válido

201 - Created En la cabecera -> link al recurso { "name": "Pepito", "surname": "Sanchez Perez" "learning": [“en”, "ru"], "speaks": "es", "age": 32, "avatar": b"imagenCodificadaEnBase64", "followers": [], "following": [] }

Resultado inválido

409 - Conflict: Si el email o el username ya existen.

MessagesService


TranslationService

1.- Realizar una traducción

POST: /api/translations

Ejemplo de entrada (body)

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

Respuesta válida

{
	“translation”: “texto traducido”
}

Respuesta inválida

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

TextToSpeechService

1.- Convertir texto a audio

POST: /api/textsToSpeeches

Ejemplo de entrada (body)

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

Respuesta válida

{
	“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