Sha256: ec30359dbc3abf8747e3d04ef3087dba21529763816cc2c75f7efe3030cbfc0d

Contents?: true

Size: 1.01 KB

Versions: 2

Compression:

Stored size: 1.01 KB

Contents

require 'dynamo/client/version'
require 'dynamo/error'
require 'digest'
require 'json'
require 'httparty'

module Dynamo

  class Client

    attr_reader :secret, :endpoint

    def initialize(secret:, endpoint: nil)
      @secret = secret
      @endpoint = endpoint || 'http://dynamo-server-api.eu-central-1.elasticbeanstalk.com'
    end

    def pdf(url, options: nil, stub: false)
      request = {}
      request[:url] = url
      request[:checksum] = ::Digest::SHA256.hexdigest("#{@secret}#{url}")

      if options.instance_of? Hash
        request[:options] = {}
        options.each do |key, value|
          request[:options][key.to_s.gsub(/_/, '-')] = value
        end
      end

      if stub
        return request
      else
        result = ::HTTParty.post(@endpoint, body: request.to_json, headers:  { 'Content-Type' => 'application/json' })

        if result.code != 200
          raise ::Dynamo::Error, "remote server returned code #{result.code}"
        end

        return result.body
      end
    end

  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
dynamo-client-0.1.1 lib/dynamo/client.rb
dynamo-client-0.1.0 lib/dynamo/client.rb