Sha256: c04d47b8e19680b4b106b6ae9bb63ad5bd82fbeb73486a4361480c548069eb8f

Contents?: true

Size: 946 Bytes

Versions: 28

Compression:

Stored size: 946 Bytes

Contents

# frozen_string_literal: true

module SdrClient
  # The stored credentials
  class Credentials
    class NoCredentialsError < StandardError; end

    # @param [String] a json string that contains a field 'token'
    def self.write(body)
      json = JSON.parse(body)
      Dir.mkdir(credentials_path, 0o700) unless Dir.exist?(credentials_path)
      File.atomic_write(credentials_file) do |file|
        file.write(json.fetch('token'))
      end
      File.chmod(0o600, credentials_file)
    end

    def self.read
      raise NoCredentialsError unless ::File.exist?(credentials_file)

      creds = File.readlines(credentials_file, chomp: true).first if ::File.exist?(credentials_file)
      raise NoCredentialsError if creds.nil?

      creds
    end

    def self.credentials_path
      @credentials_path ||= File.join(Dir.home, '.sdr')
    end

    def self.credentials_file
      File.join(credentials_path, 'credentials')
    end
  end
end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
sdr-client-0.88.0 lib/sdr_client/credentials.rb
sdr-client-0.87.0 lib/sdr_client/credentials.rb
sdr-client-0.86.0 lib/sdr_client/credentials.rb
sdr-client-0.85.0 lib/sdr_client/credentials.rb
sdr-client-0.84.0 lib/sdr_client/credentials.rb
sdr-client-0.83.0 lib/sdr_client/credentials.rb
sdr-client-0.82.0 lib/sdr_client/credentials.rb
sdr-client-0.81.0 lib/sdr_client/credentials.rb
sdr-client-0.80.0 lib/sdr_client/credentials.rb
sdr-client-0.79.0 lib/sdr_client/credentials.rb
sdr-client-0.78.0 lib/sdr_client/credentials.rb
sdr-client-0.77.1 lib/sdr_client/credentials.rb
sdr-client-0.77.0 lib/sdr_client/credentials.rb
sdr-client-0.76.0 lib/sdr_client/credentials.rb
sdr-client-0.75.0 lib/sdr_client/credentials.rb
sdr-client-0.74.0 lib/sdr_client/credentials.rb
sdr-client-0.73.0 lib/sdr_client/credentials.rb
sdr-client-0.72.0 lib/sdr_client/credentials.rb
sdr-client-0.71.0 lib/sdr_client/credentials.rb
sdr-client-0.69.1 lib/sdr_client/credentials.rb