API del Calendarizador¶
Las entradas de video de cada televisión en el sistema Arena son administradas por el sistema Gohner, el cual cuenta con funciones invocadas por puerto serial. A continuación se describe el API del servicio que tendrá por tarea la comunicación con Gohner para el manejo de señal de video en las estaciones del local.
Transmitir señal¶
Descripción general¶
- Onsite solicita al calendarizador un cambio en la señal de salida de la estación proporcionada. Si no se proporciona una fecha para hacer el cambio, este se realiza de manera instantánea. Si la solicitud va acompañada de fecha, el cambio en la señal de salida se agenda para el tiempo indicado.
- El calendarizador responde con el resultado de agendar la petición.
Flujo¶
Scheduler: POST /schedules¶
Autorización: Onsite
Mediante esta ruta se solicita un cambio en la salida de video de la estación. Se proporcionan el nombre de la estación y la señal a la cual se hará la transición como sigue:
{
"stationName" : "TV003",
"outputName" : "PS4"
}
Desencadenado por esta petición, el calendarizador se comunicará con el
servicio de Gohner y solicitará el cambio en la señal de video. Es posible
que la petición del cambio no se lleve a cabo en el momento, sino en una
fecha en el futuro especificada en el campo switchAt como sigue:
{
"stationName" : "TV003",
"outputName" : "PS4"
"switchAt" : 1480971441
}
Mediante la cual se cambiará la señal cuando la fecha actual del calendarizador sea la especificada en la petición.
Si la solicitud pudo ser procesada se responde con el estado 200 OK.
Si la estación o la salida de video solicitadas no existen, se responde
con el estado 404 Not Found. Si la fecha para agendar el cambio no
está en el futuro, la respuesta será 409 Conflict.
Como observación, una solicitud de transmisión de señal stand by invalida todas las solicitudes previas sobre una estación, es decir, una estación puede tener a lo más una solicitud de cambio a señal de apagado. Una solicitud de cambio de señal distinta a stand by es procesada inmediatamente y no invalida cualquier cambio agendado a stand by en caso de existir. Esto para respetar el horario de apagado de una estación a pesar de haber efectuado un cambio en la señal de video.
Nota
El cambio temporizado en la señal de video de una estación
únicamente se lleva a cabo si esta tiene un valor no nulo
en el campo screen. Si no existe el campo screen
para una estación, esta es tratada como una PC.
Scheduler: POST /schedules/match_group¶
Autorización: Onsite
Mediante esta ruta se solicita un cambio en la salida de video de un grupo de estaciones. Para cada estación, se proporciona la señal a la cual se hará el cambio en la pantalla. Un ejemplo de esquema de petición aceptada es el siguiente:
{
"matchGroupId": 4576,
stations: [
{
"stationName" : "TV003",
"outputName" : "PS4"
},
{
"stationName" : "TV008",
"outputName" : "XBOX"
}
]
}
Desencadenado por esta petición, el calendarizador se comunicará con el
servicio de Gohner y solicitará el cambio en la señal de video para
cada una de las estaciones inicadas. Es posible que la petición del
cambio no se lleve a cabo en el momento, sino en una
fecha en el futuro especificada en el campo switchAt como sigue:
{
"matchGroupId": 4576,
"switchAt" : 1480971441,
"stations": [
{
"stationName" : "TV003",
"outputName" : "PS4"
},
{
"stationName" : "TV008",
"outputName" : "PS4"
}
]
}
Mediante la cual se cambiarán las señales cuando la fecha actual del calendarizador sea la especificada en la petición.
Si la solicitud pudo ser procesada se responde con el estado 200 OK.
Si alguna estación o salida de video solicitadas no existen, se responde
con el estado 404 Not Found. Si la fecha para agendar el cambio no
está en el futuro, la respuesta será 409 Conflict.
Como observación, una solicitud de transmisión de señal stand by invalida todas las solicitudes previas sobre una estación, es decir, una estación puede tener a lo más una solicitud de cambio a señal de apagado. Una solicitud de cambio de señal distinta a stand by es procesada inmediatamente y no invalida cualquier cambio agendado a stand by en caso de existir. Esto para respetar el horario de apagado de una estación a pesar de haber efectuado un cambio en la señal de video.
Nota
El cambio temporizado en la señal de video de una estación
únicamente se lleva a cabo si ésta tiene un valor no nulo
en el campo screen. Si no existe el campo screen
para una estación, ésta es tratada como una PC.
Creación de estación¶
Al crear una estación por parte de un usuario del local, dicha estación debe crearse en la base del manejador de estaciones con el fin de permitir el envío de señales de video. El comportamiento de la creación se describe a continuación.
Flujo¶
Scheduler: POST /stations¶
Autorización: Onsite
Mediante esta ruta se solicita la creación de una estación en el registro del calendarizador. El cuerpo de la petición es el siguiente
name: Estación 2
screen: 3
Como consecuencia, se generará en el calendarizador un nuevo
registro con los valores de la estación descritos. Para
peticiones de cambio de señal futuras, el calendarizador
hará uso del campo screen para la comunicación con el
servicio de switch de señal.
La ruta responde con el estado 201 Created acompañado de
la estación recién creada. Si ya existe otra estación
con el nombre o la pantalla registrados, se reemplaza el
registro existente en el calendarizador con el recién
proporcionado.
Actualización de una estación¶
La actualización en nombre o identificador de pantalla en el servidor Onsite se notifica a su respectivo calendarizador como se describe en el siguiente flujo.
Flujo¶
Scheduler: PUT /stations/name¶
Autorización: Onsite
Mediante esta ruta se solicita la actualización de los campos en una estación. El cuerpo de la petición es el siguiente
name: Estación 2
screen: 3
Como consecuencia a la recepción de la petición, se actualiza
la información de la estación con los campos que se proporcionan.
Esta ruta responde con el estado 200 OK si la actualización
de los campos fue exitosa. Si la estación no pudo ser encontrada
se responde con el estado 404 Not Found. Si ya existe otra estación
con el nombre o la pantalla proporcionados, se responde con
el estado 409 Conflict.
Borrado de una estación¶
Al eliminar una estación de la sucursal, es necesario que se reporte el borrado al calendarizador con el objetivo de mantener los registros consistentes. A continuación se describe el flujo empleado.
Flujo¶
Scheduler: DELETE /stations/name¶
Autorización: Onsite
Mediante esta ruta se solicita el borrado de una estación
en el registro del calendarizador. La ruta responde con el
estado 200 OK acompañado de la estación eliminada.
Si la estación a eliminar no se encuentra, se responde
con el estado 404 Not Found. El borrado de la estación
es hard delete.
Notificación de señal cambiada¶
Descripción general¶
- Cuando ocurre un cambio en la salida de video se notifica a Onsite para que este realice los ajustes de tiempo pertinentes a los jugadores en la estación. En caso de que el cambio en la salida no corresponda a una petición de cambio agendada para el futuro, no se envía la notificación.
- El servidor Onsite responde con el resultado de la recepción de la notificación.
Flujo¶
En caso de que se lleve a cabo un cambio temporizado en la señal de
video de una estación, se debe notificar a Onsite con el fin de que
este tome medidas pertinentes sobre el tiempo de los jugadores. Esto
se logra mediante la invocación a la ruta
POST /stations/standby_status.