GstRTSPToken *token;
gchar *basic;
GstStructure *s;
- GstRTSPPermissions *permissions;
gst_init (&argc, &argv);
gst_rtsp_mount_points_add_factory (mounts, "/test", factory);
/* allow user and admin to access this resource */
- permissions = gst_rtsp_permissions_new ();
- gst_rtsp_permissions_add_role (permissions, "user",
+ gst_rtsp_media_factory_add_role (factory, "user",
"media.factory.access", G_TYPE_BOOLEAN, TRUE,
"media.factory.construct", G_TYPE_BOOLEAN, TRUE, NULL);
- gst_rtsp_permissions_add_role (permissions, "admin",
+ gst_rtsp_media_factory_add_role (factory, "admin",
"media.factory.access", G_TYPE_BOOLEAN, TRUE,
"media.factory.construct", G_TYPE_BOOLEAN, TRUE, NULL);
/* admin2 can look at the media but not construct so he gets a
* 401 Unauthorized */
- gst_rtsp_permissions_add_role (permissions, "admin2",
+ gst_rtsp_media_factory_add_role (factory, "admin2",
"media.factory.access", G_TYPE_BOOLEAN, TRUE,
"media.factory.construct", G_TYPE_BOOLEAN, FALSE, NULL);
- gst_rtsp_media_factory_set_permissions (factory, permissions);
- gst_rtsp_permissions_unref (permissions);
/* make another factory */
factory = gst_rtsp_media_factory_new ();
gst_rtsp_mount_points_add_factory (mounts, "/test2", factory);
/* allow admin2 to access this resource */
- permissions = gst_rtsp_permissions_new ();
/* user and admin have no permissions so they can't even see the
* media and get a 404 Not Found */
- gst_rtsp_permissions_add_role (permissions, "admin2",
+ gst_rtsp_media_factory_add_role (factory, "admin2",
"media.factory.access", G_TYPE_BOOLEAN, TRUE,
"media.factory.construct", G_TYPE_BOOLEAN, TRUE, NULL);
- gst_rtsp_media_factory_set_permissions (factory, permissions);
- gst_rtsp_permissions_unref (permissions);
/* don't need the ref to the mapper anymore */
g_object_unref (mounts);
GstRTSPToken *token;
gchar *basic;
GstStructure *s;
- GstRTSPPermissions *permissions;
GstRTSPThreadPool *thread_pool;
gst_init (&argc, &argv);
gst_rtsp_mount_points_add_factory (mounts, "/test", factory);
/* allow user and admin to access this resource */
- permissions = gst_rtsp_permissions_new ();
- gst_rtsp_permissions_add_role (permissions, "user",
+ gst_rtsp_media_factory_add_role (factory, "user",
"media.factory.access", G_TYPE_BOOLEAN, TRUE,
"media.factory.construct", G_TYPE_BOOLEAN, TRUE, NULL);
- gst_rtsp_permissions_add_role (permissions, "admin",
+ gst_rtsp_media_factory_add_role (factory, "admin",
"media.factory.access", G_TYPE_BOOLEAN, TRUE,
"media.factory.construct", G_TYPE_BOOLEAN, TRUE, NULL);
- gst_rtsp_media_factory_set_permissions (factory, permissions);
- gst_rtsp_permissions_unref (permissions);
/* don't need the ref to the mapper anymore */
g_object_unref (mounts);
}
/**
+ * gst_rtsp_media_factory_add_role:
+ * @factory: a #GstRTSPMediaFactory
+ * @role: a role
+ * @fieldname: the first field name
+ * @...: additional arguments
+ *
+ * A convenience method to add @role with @fieldname and additional arguments to
+ * the permissions of @factory. If @factory had no permissions, new permissions
+ * will be created and the role will be added to it.
+ */
+void
+gst_rtsp_media_factory_add_role (GstRTSPMediaFactory * factory,
+ const gchar * role, const gchar * fieldname, ...)
+{
+ GstRTSPMediaFactoryPrivate *priv;
+ va_list var_args;
+
+ g_return_if_fail (GST_IS_RTSP_MEDIA_FACTORY (factory));
+ g_return_if_fail (role != NULL);
+ g_return_if_fail (fieldname != NULL);
+
+ priv = factory->priv;
+
+ GST_RTSP_MEDIA_FACTORY_LOCK (factory);
+ if (priv->permissions == NULL)
+ priv->permissions = gst_rtsp_permissions_new ();
+
+ va_start (var_args, fieldname);
+ gst_rtsp_permissions_add_role_valist (priv->permissions, role, fieldname,
+ var_args);
+ va_end (var_args);
+ GST_RTSP_MEDIA_FACTORY_UNLOCK (factory);
+}
+
+/**
* gst_rtsp_media_factory_set_launch:
* @factory: a #GstRTSPMediaFactory
* @launch: the launch description
void gst_rtsp_media_factory_set_permissions (GstRTSPMediaFactory *factory,
GstRTSPPermissions *permissions);
GstRTSPPermissions * gst_rtsp_media_factory_get_permissions (GstRTSPMediaFactory *factory);
+void gst_rtsp_media_factory_add_role (GstRTSPMediaFactory *factory,
+ const gchar *role,
+ const gchar *fieldname, ...);
void gst_rtsp_media_factory_set_shared (GstRTSPMediaFactory *factory,
gboolean shared);