class SkullIsland::Resources::JWTCredential

The JWTCredential resource class

@see docs.konghq.com/hub/kong-inc/jwt/ JWT Authentication details

Public Class Methods

batch_import(data, verbose: false, test: false) click to toggle source
# File lib/skull_island/resources/jwt_credential.rb, line 20
def self.batch_import(data, verbose: false, test: false)
  raise(Exceptions::InvalidArguments) unless data.is_a?(Array)

  known_ids = []

  data.each_with_index do |resource_data, index|
    resource = new
    resource.algorithm = resource_data['algorithm']
    resource.delayed_set(:key, resource_data) if resource_data['key']
    resource.delayed_set(:secret, resource_data) if resource_data['secret']
    resource.delayed_set(:rsa_public_key, resource_data) if resource_data['rsa_public_key']
    resource.delayed_set(:consumer, resource_data, 'consumer')
    resource.import_update_or_skip(index: index, verbose: verbose, test: test)
    known_ids << resource.id
  end

  known_ids
end
relative_uri() click to toggle source
# File lib/skull_island/resources/jwt_credential.rb, line 39
def self.relative_uri
  'jwts'
end

Public Instance Methods

export(options = {}) click to toggle source

rubocop:disable Metrics/AbcSize

# File lib/skull_island/resources/jwt_credential.rb, line 52
def export(options = {})
  hash = { 'algorithm' => algorithm }
  hash['key'] = key if key
  hash['secret'] = secret if secret
  hash['rsa_public_key'] = rsa_public_key if rsa_public_key
  hash['consumer'] = "<%= lookup :consumer, '#{consumer.username}' %>" if consumer
  [*options[:exclude]].each do |exclude|
    hash.delete(exclude.to_s)
  end
  [*options[:include]].each do |inc|
    hash[inc.to_s] = send(inc.to_sym)
  end
  hash.reject { |_, value| value.nil? }
end
modified_existing?() click to toggle source

Keys can't be updated, only created or deleted

# File lib/skull_island/resources/jwt_credential.rb, line 69
def modified_existing?
  false
end
project() click to toggle source
# File lib/skull_island/resources/jwt_credential.rb, line 73
def project
  consumer ? consumer.project : nil
end
relative_uri() click to toggle source
# File lib/skull_island/resources/jwt_credential.rb, line 43
def relative_uri
  consumer ? "#{consumer.relative_uri}/jwt/#{id}" : nil
end
save_uri() click to toggle source
# File lib/skull_island/resources/jwt_credential.rb, line 47
def save_uri
  consumer ? "#{consumer.relative_uri}/jwt" : nil
end

Private Instance Methods

postprocess_consumer(value) click to toggle source
# File lib/skull_island/resources/jwt_credential.rb, line 79
def postprocess_consumer(value)
  if value.is_a?(Hash)
    Consumer.new(
      entity: value,
      lazy: true,
      tainted: false,
      api_client: api_client
    )
  else
    value
  end
end
preprocess_consumer(input) click to toggle source
# File lib/skull_island/resources/jwt_credential.rb, line 92
def preprocess_consumer(input)
  if input.is_a?(Hash)
    input
  else
    { 'id' => input.id }
  end
end
validate_algorithm(value) click to toggle source

Used to validate {#algorithm} on set @see github.com/Kong/kong/blob/master/kong/plugins/jwt/daos.lua#L29

# File lib/skull_island/resources/jwt_credential.rb, line 108
def validate_algorithm(value)
  # allow a String
  %w[HS256 HS384 HS512 RS256 RS512 ES256].include? value
end
validate_consumer(value) click to toggle source

Used to validate {#consumer} on set

# File lib/skull_island/resources/jwt_credential.rb, line 101
def validate_consumer(value)
  # allow either a Consumer object or a Hash
  value.is_a?(Consumer) || value.is_a?(Hash)
end
validate_key(value) click to toggle source

Used to validate {#key} on set

# File lib/skull_island/resources/jwt_credential.rb, line 114
def validate_key(value)
  # allow a String
  value.is_a?(String)
end
validate_rsa_public_key(value) click to toggle source

Used to validate {#rsa_public_key} on set

# File lib/skull_island/resources/jwt_credential.rb, line 126
def validate_rsa_public_key(value)
  # allow a String
  value.is_a?(String)
end
validate_secret(value) click to toggle source

Used to validate {#secret} on set

# File lib/skull_island/resources/jwt_credential.rb, line 120
def validate_secret(value)
  # allow a String
  value.is_a?(String)
end