Sha256: d977699f118097508ec1d06dc5598e61ac6390eb777daeff0245418a51bfacaa

Contents?: true

Size: 1.21 KB

Versions: 3

Compression:

Stored size: 1.21 KB

Contents

require_relative "http/request"
require_relative "crypto/client"
require_relative "models/cage_list"

module Evervault
  class Client

    attr_accessor :api_key, :base_url, :cage_run_url, :request_timeout
    def initialize(
      api_key:,
      base_url: "https://api.evervault.com/",
      cage_run_url: "https://cage.run/",
      request_timeout: 30
    )
      @api_key = api_key
      @base_url = base_url
      @cage_run_url = cage_run_url
      @request =
        Evervault::Http::Request.new(
          api_key: api_key,
          timeout: request_timeout,
          base_url: base_url,
          cage_run_url: cage_run_url
        )
      @crypto_client = Evervault::Crypto::Client.new(request: @request)
    end

    def encrypt(data)
      @crypto_client.encrypt(data)
    end

    def run(cage_name, encrypted_data)
      @request.post(cage_name, encrypted_data, cage_run: true)
    end

    def encrypt_and_run(cage_name, data)
      encrypted_data = encrypt(data)
      run(cage_name, encrypted_data)
    end

    def cages
      cage_list.to_hash
    end

    def cage_list
      cages = @request.get("cages")
      @cage_list ||= Evervault::Models::CageList.new(cages: cages["cages"], request: @request)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
evervault-0.1.2 lib/evervault/client.rb
evervault-0.1.1 lib/evervault/client.rb
evervault-0.1.0 lib/evervault/client.rb