Sha256: a701d8211e1ef8aabdbfe13f99bed045664baccf264b319454056cf0dc652f41

Contents?: true

Size: 821 Bytes

Versions: 17

Compression:

Stored size: 821 Bytes

Contents

# frozen_string_literal: true

require 'base64'
require 'json'
require 'openssl'

module Typesense
  class Keys
    RESOURCE_PATH = '/keys'

    def initialize(api_call)
      @api_call = api_call
      @keys = {}
    end

    def create(parameters)
      @api_call.post(RESOURCE_PATH, parameters)
    end

    def retrieve
      @api_call.get(RESOURCE_PATH)
    end

    def generate_scoped_search_key(search_key, parameters)
      parameters_json = JSON.dump(parameters)
      digest = Base64.encode64(OpenSSL::HMAC.digest('sha256', search_key, parameters_json)).gsub("\n", '')
      key_prefix = search_key[0...4]
      raw_scoped_key = "#{digest}#{key_prefix}#{parameters_json}"
      Base64.encode64(raw_scoped_key).gsub("\n", '')
    end

    def [](id)
      @keys[id] ||= Key.new(id, @api_call)
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
typesense-3.0.1 lib/typesense/keys.rb
typesense-3.0.0 lib/typesense/keys.rb
typesense-3.0.0.rc1 lib/typesense/keys.rb
typesense-2.1.0 lib/typesense/keys.rb
typesense-2.1.0.rc2 lib/typesense/keys.rb
typesense-2.1.0.rc1 lib/typesense/keys.rb
typesense-2.0.0 lib/typesense/keys.rb
typesense-1.1.0 lib/typesense/keys.rb
typesense-1.0.0 lib/typesense/keys.rb
typesense-0.15.0 lib/typesense/keys.rb
typesense-0.14.1 lib/typesense/keys.rb
typesense-0.14.0 lib/typesense/keys.rb
typesense-0.13.0 lib/typesense/keys.rb
typesense-0.12.0 lib/typesense/keys.rb
typesense-0.11.1 lib/typesense/keys.rb
typesense-0.11.0 lib/typesense/keys.rb
typesense-0.10.0 lib/typesense/keys.rb