Class: Falcon::Endpoint

Inherits:
Async::HTTP::Endpoint
  • Object
show all
Defined in:
lib/falcon/endpoint.rb

Overview

An HTTP-specific endpoint which adds localhost TLS.

Instance Method Summary collapse

Instance Method Details

#build_ssl_context(hostname = self.hostname) ⇒ Object

Build an appropriate SSL context for the given hostname.

Uses Localhost::Authority to generate self-signed certficates.



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/falcon/endpoint.rb', line 40

def build_ssl_context(hostname = self.hostname)
	authority = Localhost::Authority.fetch(hostname)
	
	authority.server_context.tap do |context|
		context.alpn_select_cb = lambda do |protocols|
			if protocols.include? "h2"
				return "h2"
			elsif protocols.include? "http/1.1"
				return "http/1.1"
			elsif protocols.include? "http/1.0"
				return "http/1.0"
			else
				return nil
			end
		end
		
		context.session_id_context = "falcon"
	end
end

#ssl_contextObject

The SSL context to use, which invokes #build_ssl_context if not otherwise specified.



31
32
33
# File 'lib/falcon/endpoint.rb', line 31

def ssl_context
	@options[:ssl_context] || build_ssl_context
end