Sha256: e2673e9504c0cc9d5ade8b0c8d14116b387b291616d00bfcc2cb878250165114

Contents?: true

Size: 1.5 KB

Versions: 3

Compression:

Stored size: 1.5 KB

Contents

# typed: strict
# frozen_string_literal: true

module Etwin
  module Client
    # Eternal-Twin client authentication data
    class Auth
      extend T::Helpers
      extend T::Sig

      final!

      sig(:final) { returns(T.nilable(String)) }
      attr_reader :authorization_header

      sig(:final) { params(authorization_header: T.nilable(String)).void }
      def initialize(authorization_header)
        @authorization_header = T.let(authorization_header, T.nilable(String))
        freeze
      end

      sig(:final) { params(other: BasicObject).returns(T::Boolean) }
      def ==(other)
        case other
        when Auth
          @authorization_header == other.authorization_header
        else
          false
        end
      end

      sig(:final) { returns(Integer) }
      def hash
        [@authorization_header].hash
      end

      sig(:final) { returns(String) }
      def inspect
        PP.singleline_pp(self, String.new)
      end

      sig(:final) { params(pp: T.untyped).returns(T.untyped) }
      def pretty_print(pp)
        pp.group(0, "#{self.class.name}(", ')') do
          pp.nest 1 do
            pp.breakable ''
            pp.text 'authorization_header='
            pp.pp @authorization_header
          end
          pp.breakable ''
        end
      end

      Guest = new(nil)

      class << self
        extend T::Sig

        sig(:final) { params(key: String).returns(T.attached_class) }
        def from_token(key)
          new("Bearer #{key}")
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
etwin-0.0.3 lib/etwin/client/auth.rb
etwin-0.0.2 lib/etwin/client/auth.rb
etwin-0.0.1 lib/etwin/client/auth.rb