Class: Nonnative::Header

Inherits:
Object
  • Object
show all
Defined in:
lib/nonnative/header.rb

Overview

Helper utilities for building request headers for HTTP and gRPC clients.

This class returns Ruby hashes suitable for passing into client libraries (for example RestClient for HTTP or gRPC call metadata).

Examples:

HTTP user-agent (RestClient style)

headers = Nonnative::Header.http_user_agent('my-client/1.0')
# => { user_agent: "my-client/1.0" }

gRPC user-agent (metadata)

 = Nonnative::Header.grpc_user_agent('my-client/1.0')
# => { "grpc.primary_user_agent" => "my-client/1.0" }

Basic auth header

headers = Nonnative::Header.auth_basic('user:pass')
# => { authorization: "Basic dXNlcjpwYXNz" }

Bearer auth header

headers = Nonnative::Header.auth_bearer('token')
# => { authorization: "Bearer token" }

See Also:

Class Method Summary collapse

Class Method Details

.auth_basic(credentials) ⇒ Hash{Symbol=>String}

Builds an HTTP Basic Authorization header.

The credentials are base64-encoded using strict encoding. The credentials string should typically be in the form ‘“username:password”`.

Parameters:

  • credentials (String)

    basic auth credentials in ‘“user:pass”` form

Returns:

  • (Hash{Symbol=>String})

    header hash containing the Authorization header



54
55
56
# File 'lib/nonnative/header.rb', line 54

def auth_basic(credentials)
  { authorization: "Basic #{Base64.strict_encode64(credentials)}" }
end

.auth_bearer(token) ⇒ Hash{Symbol=>String}

Builds an HTTP Bearer Authorization header.

Parameters:

  • token (String)

    bearer token

Returns:

  • (Hash{Symbol=>String})

    header hash containing the Authorization header



62
63
64
# File 'lib/nonnative/header.rb', line 62

def auth_bearer(token)
  { authorization: "Bearer #{token}" }
end

.grpc_user_agent(user_agent) ⇒ Hash{String=>String}

Builds gRPC metadata for setting the primary user agent.

Parameters:

  • user_agent (String)

    user agent value

Returns:

  • (Hash{String=>String})

    gRPC metadata hash



43
44
45
# File 'lib/nonnative/header.rb', line 43

def grpc_user_agent(user_agent)
  { 'grpc.primary_user_agent' => user_agent }
end

.http_user_agent(user_agent) ⇒ Hash{Symbol=>String}

Builds an HTTP User-Agent header hash.

This uses the key style commonly used by RestClient (user_agent:).

Parameters:

  • user_agent (String)

    user agent value

Returns:

  • (Hash{Symbol=>String})

    header hash containing the user agent



35
36
37
# File 'lib/nonnative/header.rb', line 35

def http_user_agent(user_agent)
  { user_agent: }
end