File

teal-src/net/http.d.tl @ 12630:781772c8b6d9

mod_mam: Store archives with sub-second precision timestamps Changes sub-second part of example timestamp to .5 in order to avoid floating point issues. Some clients use timestamps when ordering messages which can lead to messages having the same timestamp ending up in the wrong order. It would be better to preserve the order messages are sent in, which is the order they were stored in.
author Kim Alvefur <zash@zash.se>
date Sun, 14 Aug 2022 17:28:31 +0200
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