Sha256: baceff092927822eb57b89d4141ded7b203991378fc0498ba7cd9faad0f5c0ee

Contents?: true

Size: 1.63 KB

Versions: 21

Compression:

Stored size: 1.63 KB

Contents

# frozen_string_literal: true

require 'grpc_kit/grpc_time'

module GrpcKit
  module Session
    class Headers
      RESERVED_HEADERS = [
        ':path', ':status', ':scheme',
        'content-type', 'grpc-message-type', 'grpc-timeout',
        'grpc-encoding', 'grpc-message', 'grpc-status',
        'grpc-status-details-bin', 'grpc-accept-encoding', 'te',
        ':method'
      ].freeze

      METADATA_ACCEPTABLE_HEADER = %w[:authority user-agent].freeze

      def initialize
        @opts = {}
        @metadata = {}
      end

      # @return [Hash<String,String>]
      def metadata
        @metadata =
          if @metadata.empty?
            @opts.select do |key|
              !key.start_with?(':', 'grpc-') && !RESERVED_HEADERS.include?(key)
            end
          else
            @metadata
          end
      end

      # @return [String,nil]
      def path
        @opts[':path']
      end

      # @return [String,nil]
      def grpc_status
        @opts['grpc-status']
      end

      # @return [String,nil]
      def grpc_encoding
        @opts['grpc-encoding']
      end

      # @return [String,nil]
      def content_type
        @opts['content-type']
      end

      # @return [String,nil]
      def status_message
        @opts['grpc-message']
      end

      # @return [Time,nil]
      def timeout
        @timeout ||= @opts['grpc-timeout'] && GrpcTime.new(@opts['grpc-timeout'])
      end

      # @return [String,nil]
      def http_status
        @opts[':status']
      end

      # @param key [String]
      # @param val [String]
      # @return [void]
      def add(key, val)
        @opts[key] = val
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
grpc_kit-0.5.1 lib/grpc_kit/session/headers.rb
grpc_kit-0.5.0 lib/grpc_kit/session/headers.rb
grpc_kit-0.4.0 lib/grpc_kit/session/headers.rb
grpc_kit-0.3.9 lib/grpc_kit/session/headers.rb
grpc_kit-0.3.8 lib/grpc_kit/session/headers.rb
grpc_kit-0.3.7 lib/grpc_kit/session/headers.rb
grpc_kit-0.3.6 lib/grpc_kit/session/headers.rb
grpc_kit-0.3.5 lib/grpc_kit/session/headers.rb
grpc_kit-0.3.4 lib/grpc_kit/session/headers.rb
grpc_kit-0.3.3 lib/grpc_kit/session/headers.rb
grpc_kit-0.3.2 lib/grpc_kit/session/headers.rb
grpc_kit-0.3.1 lib/grpc_kit/session/headers.rb
grpc_kit-0.3.0 lib/grpc_kit/session/headers.rb
grpc_kit-0.2.1 lib/grpc_kit/session/headers.rb
grpc_kit-0.2.0 lib/grpc_kit/session/headers.rb
grpc_kit-0.1.14 lib/grpc_kit/session/headers.rb
grpc_kit-0.1.13 lib/grpc_kit/session/headers.rb
grpc_kit-0.1.12 lib/grpc_kit/session/headers.rb
grpc_kit-0.1.11 lib/grpc_kit/session/headers.rb
grpc_kit-0.1.10 lib/grpc_kit/session/headers.rb