roHttpServer
Este objeto permite el procesamiento de solicitudes RESTful HTTP/HTTPS desde URL remotas al servidor web integrado del reproductor BrightSign. Muchas de las solicitudes se proporcionan al script como objetos roHttpEvent para su manejo. El equivalente en JavaScript es Node.js.
Creación del objeto: El objeto roHttpServer se crea con un roAssociativeArray.
CreateObject("roHttpServer", parameters As roAssociativeArray)El array asociativo puede contener los siguientes parámetros:
- puerto int: El número de puerto del servidor web integrado
- https roAssociativeArray: Un conjunto de parámetros de configuración HTTPS:
- key_file string: El nombre de un archivo que contiene la clave privada en formato PEM. Si no se pasan ni frase de contraseña ni obfuscated_passphrase , entonces el archivo de clave debe estar sin cifrar.
- certificate_file string: El nombre de un archivo que contiene el certificado en formato PEM
- frase de contraseña string: La frase de contraseña para descifrar el archivo de clave
- obfuscated_passphrase string: La frase de contraseña ofuscada para descifrar el archivo de clave. Contacte con [email protected] para obtener más información sobre cómo generar una clave para la ofuscación y almacenarla en el reproductor.
- bind_to_interface string o int: Acepte conexiones únicamente en la interfaz de red especificada. Se prefiere usar un nombre de interfaz de tipo string (p. ej., “eth0” para Ethernet, “wlan0” para WiFi, “lo” para loopback). Se admite un entero para compatibilidad con versiones anteriores con 0 para Ethernet, 1 para WiFi y 32767 para loopback. Esto está disponible a partir de BOS 9.1.92.
Si la clave y el certificado están contenidos en un solo archivo, puede pasarse como certificate_file (y key_file puede omitirse).
Ejemplo
server = CreateObject("roHttpServer", { port: 443, https: { certificate_file: "cert.pem", passphrase: "sekrit" } })ifHttpServer
Cada método controlador “Add” descrito a continuación toma un array asociativo como parámetro. Los valores en el array asociativo especifican cómo se comporta el controlador. Consulte la tabla al final de esta sección para ver los pares comunes de clave:valor .
GetFailureReason() As String
Proporciona información útil adicional si falla un método roHttpServer.
AddGetFromString(parameters As roAssociativeArray) As Boolean
Hace que cualquier solicitud HTTP GET para la ruta URL especificada se responda directamente con el contenido del miembro "body" del array asociativo de parámetros. El tipo MIME (y potencialmente el conjunto de caracteres completo) debe especificarse si se espera que la solicitud provenga de un navegador web. La solicitud se maneja completamente dentro del método roHttpServer; no se envían eventos al puerto de mensajes.
AddGetFromFile(parameters As roAssociativeArray) As Boolean
Hace que cualquier solicitud HTTP GET para la ruta URL especificada se responda directamente desde el archivo especificado. Siempre debe especificar el tipo MIME (y posiblemente el conjunto de caracteres) si espera que la solicitud provenga de un navegador web. La solicitud se maneja completamente dentro del método roHttpServer; no se envían eventos al puerto de mensajes.
AddGetFromFolder(parameters As roAssociativeArray) As Boolean
Construye un controlador dinámico que sirve archivos estáticos, los cuales aparecerán como elementos secundarios de la carpeta de almacenamiento definida. Este método acepta un array asociativo con los siguientes parámetros:
- carpeta: La ruta de archivo de la carpeta que actuará como el directorio raíz del servidor. Si este parámetro no está presente, se servirá todo el contenido del dispositivo de almacenamiento.
- url_prefix: El prefijo de URL bajo el cual se servirán los archivos. Si este parámetro está ausente, la URL coincidirá desde la raíz.
- filtros: Un arreglo de filtros. Cada filtro es un arreglo asociativo con los siguientes parámetros. Tenga en cuenta que si los parámetros "re" y "ext" están ausentes, el filtro coincidirá con todo:
- re: La expresión regular para hacer coincidir con la URL de la solicitud.
- ext: La extensión para hacer coincidir con el archivo hoja de la URL de la solicitud.
- encabezados : Un arreglo asociativo que contiene encabezados arbitrarios para incluirse con la respuesta automática.
- content_type : El contenido del encabezado "Content-Type" incluido con la respuesta automática. Esto no puede establecerse en el mismo filtro que los encabezados. El tipo MIME y el conjunto de caracteres pueden especificarse juntos (p. ej., "text/plain; charset=utf-8") .
Debe definir todos los tipos de contenido de la carpeta para que la carpeta se cargue correctamente en el servidor. Por ejemplo:
mimeTypes = [{ext: ".html", content_type:"text/html;charset=utf-8"},{ext: ".js", content_type:"text/javascript;charset=utf-8"},{ext: ".css", content_type:"text/css;charset=utf-8"},{ext: ".png", content_type:"image/png"},{ext: ".otf", content_type:"font/otf"}]
server.AddGetFromFolder({ url_prefix: "/GetFolder", folder: "Example", filters: mimeTypes})AddGetFromEvent(parameters As roAssociativeArray) As Boolean
Solicita que se envíe un evento de tipo roHttpEvent al puerto de mensajes configurado. Esto ocurre cuando se realiza una solicitud HTTP GET para la ruta URL especificada.
AddPostToString(parameters As roAssociativeArray) As Boolean
Solicita que se envíe un evento de tipo roHttpEvent al puerto de mensajes configurado. Esto ocurre cuando se realiza una solicitud HTTP POST para la ruta URL especificada. Use el método roHttpEvent.GetRequestBodyString() para recuperar el cuerpo publicado.
AddPostToFile(parameters As roAssociativeArray) As Boolean
Solicita que, cuando se realice una solicitud HTTP POST a la ruta URL especificada, el cuerpo de la solicitud se almacene en un archivo temporal de acuerdo con el valor parameters["destination_directory"] en el arreglo asociativo. Cuando esta solicitud se completa, se envía un evento roHttpEvent al puerto de mensajes configurado. Use el método roHttpEvent.GetRequestBodyFile() para recuperar el nombre del archivo temporal. Si el archivo todavía existe en el momento en que se envía la respuesta, se eliminará automáticamente. Sin embargo, si el reproductor se reinicia o pierde energía durante el proceso POST, el archivo no se eliminará. Por esta razón, recomendamos usar un subdirectorio dedicado como "destination_directory" y limpiar este subdirectorio durante el inicio (usando DeleteDirectory()) antes de agregar controladores que hagan referencia a él.
AddPostToFormData(parameters As roAssociativeArray) As Boolean
Solicita que, cuando se realice una solicitud HTTP POST a la ruta URL especificada, se intente almacenar los datos del formulario (pasados como application/x-www-form-urlencoded o multipart/form-data) en un arreglo asociativo que puede recuperarse llamando al método roHttpEvent.GetFormData() .
AddMethodFromEvent(parameters As roAssociativeArray) As Boolean
Solicita que se envíe un evento de tipo roHttpEvent al puerto de mensajes configurado. A diferencia de AddGetFromEvent(), este método puede admitir métodos HTTP arbitrarios. El método HTTP se especifica usando el miembro method en el arreglo asociativo.
AddMethodToFile(parameters As roAssociativeArray) As Boolean
Solicita que, cuando se realice una solicitud HTTP arbitraria a la ruta URL especificada, el cuerpo de la solicitud se almacene en un archivo temporal de acuerdo con el valor parameters["destination_directory"] en el arreglo asociativo. El método HTTP se especifica usando el miembro método en el arreglo asociativo. Cuando la solicitud se completa, se envía un evento roHttpEvent al puerto de mensajes configurado. Use el método roHttpEvent.GetRequestBodyFile() para recuperar el nombre del archivo temporal. Si el archivo todavía existe en el momento en que se envía la respuesta, se eliminará automáticamente.
AddMethodToString(parameters As roAssociativeArray) As Boolean
Intenta admitir un método HTTP arbitrario. El cuerpo de la solicitud se coloca en una cadena y se genera un evento. Esto hace que el cuerpo de la solicitud esté disponible mediante el método roHttpEvent.GetRequestBodyString() . Se puede enviar una respuesta de la misma manera que el método AddGetToEvent() .
SetupDWSLink(title As String) As Boolean
Genera una pestaña en el Servidor web de diagnóstico (DWS) que enlaza directamente a la base <ip_address:port> de la instancia roHttpServer . La cadena pasada especifica el título de la pestaña.
Ejemplo
server1.SetupDWSLink("My AWS Link")
server2.SetupDWSLink("My Other AWS Link")Parámetros para los métodos del controlador "Add"
La siguiente tabla describe pares clave:valor comunes para los métodos del controlador "Add":
Nombre | Se aplica a | Valor |
|---|---|---|
url_path | Todos | La ruta para la que se utilizará el método del controlador |
user_data | AddGetFromEvent() AddPostToString() AddPostToFile() AddMethodToString() | Un valor definido por el usuario que puede recuperarse llamando a roHttpEvent.GetUserData() |
method | AddMethodFromEvent() AddMethodToFile() | El método HTTP asociado con el roHttpEvent generado. El tipo de método puede recuperarse luego usando roHttpEvent.GetMethod(). |
passwords | Todos | Un arreglo asociativo que contiene una asignación entre nombres de usuario y contraseñas |
auth | Todos | El tipo de autenticación que se utilizará cuando se establezcan contraseñas. Este valor puede ser "basic" o "digest". El valor predeterminado es “digest” si no se especifica. |
realm | Todos | El dominio de autenticación, que los navegadores web mostrarán al solicitar un nombre de usuario y una contraseña |
headers | AddGetFromFile() | Un arreglo asociativo que contiene encabezados arbitrarios que se incluirán con la respuesta automatizada |
content_type | AddGetFromFile() | El contenido del encabezado "Content-Type" que se incluye con la respuesta automatizada. Esto no puede establecerse al mismo tiempo que el miembro headers. Puede establecer tanto el tipo MIME como el juego de caracteres juntos (por ejemplo, "text/plain; charset=utf-8") |
body | AddGetFromString() | El cuerpo de la respuesta |
nombre de archivo | AddGetFromFile() | La ruta al archivo utilizado para el cuerpo de la respuesta. |
directorio_de_destino | AddPostToFile() | La ruta al directorio utilizado para el archivo temporal que contiene el cuerpo de la solicitud. Se generará automáticamente un nombre de archivo aleatorio. |
ifMessagePort
SetPort(port As roMessagePort)
Publica mensajes de tipo roHttpEvent en el puerto de mensajes adjunto.