File

teal-src/net/http.d.tl @ 12696:27a72982e331

util.jwt: Add support/tests for ES256 via improved API and using util.crypto In many cases code will be either signing or verifying. With asymmetric algorithms it's clearer and more efficient to just state that once, instead of passing keys (and possibly other parameters) with every sign/verify call. This also allows earlier validation of the key used. The previous (HS256-only) sign/verify methods continue to be exposed for backwards-compatibility.
author Matthew Wild <mwild1@gmail.com>
date Fri, 01 Jul 2022 18:51:15 +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