res_ari_events: Fix shutdown ref leak.
[asterisk/asterisk.git] / res / ari / resource_events.h
index 96ee5b3..aa1e3df 100644 (file)
 
 #include "asterisk/ari.h"
 
-/*! \brief Argument struct for ast_ari_events_event_websocket() */
+/*! Argument struct for ast_ari_events_event_websocket() */
 struct ast_ari_events_event_websocket_args {
-       /*! \brief Array of Applications to subscribe to. */
+       /*! Array of Applications to subscribe to. */
        const char **app;
-       /*! \brief Length of app array. */
+       /*! Length of app array. */
        size_t app_count;
-       /*! \brief Parsing context for app. */
+       /*! Parsing context for app. */
        char *app_parse;
 };
+
+/*!
+ * \brief WebSocket connection for events.
+ *
+ * \retval  0 success
+ * \retval -1 error
+ */
+int ast_ari_websocket_events_event_websocket_init(void);
+
+/*!
+ * \brief WebSocket connection for events.
+ *
+ * \return Nothing
+ */
+void ast_ari_websocket_events_event_websocket_dtor(void);
+
+/*!
+ * \brief WebSocket connection for events.
+ *
+ * \param ser HTTP TCP/TLS Server Session
+ * \param headers HTTP headers
+ * \param args Swagger parameters
+ * \param session_id The id of the current session.
+ *
+ * \retval 0 success
+ * \retval non-zero error
+ */
+int ast_ari_websocket_events_event_websocket_attempted(struct ast_tcptls_session_instance *ser,
+       struct ast_variable *headers, struct ast_ari_events_event_websocket_args *args, const char *session_id);
+
 /*!
  * \brief WebSocket connection for events.
  *
  * \param session ARI WebSocket.
  * \param headers HTTP headers.
  * \param args Swagger parameters.
+ * \param session_id The id of the current session.
+ */
+void ast_ari_websocket_events_event_websocket_established(struct ast_ari_websocket_session *session,
+       struct ast_variable *headers, struct ast_ari_events_event_websocket_args *args);
+/*! Argument struct for ast_ari_events_user_event() */
+struct ast_ari_events_user_event_args {
+       /*! Event name */
+       const char *event_name;
+       /*! The name of the application that will receive this event */
+       const char *application;
+       /*! Array of URI for event source (channel:{channelId}, bridge:{bridgeId}, endpoint:{tech}/{resource}, deviceState:{deviceName} */
+       const char **source;
+       /*! Length of source array. */
+       size_t source_count;
+       /*! Parsing context for source. */
+       char *source_parse;
+       /*! The "variables" key in the body object holds custom key/value pairs to add to the user event. Ex. { "variables": { "key": "value" } } */
+       struct ast_json *variables;
+};
+/*!
+ * \brief Body parsing function for /events/user/{eventName}.
+ * \param body The JSON body from which to parse parameters.
+ * \param[out] args The args structure to parse into.
+ * \retval zero on success
+ * \retval non-zero on failure
+ */
+int ast_ari_events_user_event_parse_body(
+       struct ast_json *body,
+       struct ast_ari_events_user_event_args *args);
+
+/*!
+ * \brief Generate a user event.
+ *
+ * \param headers HTTP headers
+ * \param args Swagger parameters
+ * \param[out] response HTTP response
  */
-void ast_ari_websocket_events_event_websocket(struct ast_ari_websocket_session *session, struct ast_variable *headers, struct ast_ari_events_event_websocket_args *args);
+void ast_ari_events_user_event(struct ast_variable *headers, struct ast_ari_events_user_event_args *args, struct ast_ari_response *response);
 
 #endif /* _ASTERISK_RESOURCE_EVENTS_H */