Class: SealClub::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/sealclub.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api_key: nil, base_url: nil) ⇒ Client

Returns a new instance of Client.



28
29
30
31
32
# File 'lib/sealclub.rb', line 28

def initialize(api_key: nil, base_url: nil)
  key = api_key.to_s.strip
  @api_key = key.empty? ? nil : key
  @base_url = (base_url || DEFAULT_BASE_URL).to_s.sub(%r{/+\z}, "")
end

Instance Attribute Details

#api_keyObject (readonly)

Returns the value of attribute api_key.



26
27
28
# File 'lib/sealclub.rb', line 26

def api_key
  @api_key
end

#base_urlObject (readonly)

Returns the value of attribute base_url.



26
27
28
# File 'lib/sealclub.rb', line 26

def base_url
  @base_url
end

Class Method Details

.from_env(env = ENV) ⇒ Object

Raises:



34
35
36
37
38
39
# File 'lib/sealclub.rb', line 34

def self.from_env(env = ENV)
  api_key = first_env(env, API_KEY_ENV)
  raise Error.new("Missing SEAL_API_KEY", detail: "Missing SEAL_API_KEY") if api_key.nil?

  new(api_key: api_key, base_url: first_env(env, BASE_URL_ENV))
end

Instance Method Details

#seal(pdf) ⇒ Object

Raises:



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/sealclub.rb', line 41

def seal(pdf)
  pdf = pdf.b
  raise Error.new("PDF body is empty") if pdf.empty?

  uri = URI.join("#{@base_url}/", "seal")
  request = Net::HTTP::Post.new(uri)
  request["Content-Type"] = "application/pdf"
  request["Accept"] = "application/pdf"
  if @api_key
    request["Authorization"] = "Bearer #{@api_key}"
    request["X-API-Key"] = @api_key
  end
  request.body = pdf

  response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|
    http.request(request)
  end

  return response.body.b if response.is_a?(Net::HTTPSuccess)

  raise to_error(response)
end