File

teal-src/net/http.d.tl @ 12729:73a45ba6e3f1

muc: Re-allow non-admins to configure persistence (thanks Meaz) Non-admins don't have a role on MUC services by default. Not even prosody:user. This meant they had no :create-persistent-room permission, even if muc_room_allow_persistent was true (the default). Now we only check the role permissions if persistent room creation is restricted, otherwise we skip any permission checks, just like previous versions.
author Matthew Wild <mwild1@gmail.com>
date Wed, 28 Sep 2022 17:47:00 +0100
parent 12612:588b1d175838
line wrap: on
line source

local Promise = require "util.promise".Promise;

local record sslctx -- from LuaSec
end

local record lib

	enum http_method
		"GET"
		"HEAD"
		"POST"
		"PUT"
		"OPTIONS"
		"DELETE"
		-- etc?
	end

	record http_client_options
		sslctx : sslctx
	end

	record http_options
		id : string
		onlystatus : boolean
		body : string
		method : http_method
		headers : { string : string }
		insecure : boolean
		suppress_errors : boolean
		streaming_handler : function
		suppress_url : boolean
		sslctx : sslctx
	end

	record http_request
		host : string
		port : string
		enum scheme
			"http"
			"https"
		end
		scheme : scheme
		url : string
		userinfo : string
		path : string

		method : http_method
		headers : { string : string }

		insecure : boolean
		suppress_errors : boolean
		streaming_handler : function
		http : http_client
		time : integer
		id : string
		callback : http_callback
	end

	record http_response
	end

	type http_callback = function (string, number, http_response, http_request)

	record http_client
		options : http_client_options
		request : function (http_client, string, http_options, http_callback)
	end

	request : function (string, http_options, http_callback) : Promise, string
	default : http_client
	new : function (http_client_options) : http_client
	events : table
	-- COMPAT
	urlencode : function (string) : string
	urldecode : function (string) : string
	formencode : function ({ string : string }) : string
	formdecode : function (string) : { string : string }
	destroy_request : function (http_request)

	enum available_features
		"sni"
	end
	features : { available_features : boolean }
end

return lib