Sha256: 2426550256b559e947ed40176e9805d955cf569197daca8f57723568a797a652

Contents?: true

Size: 1.01 KB

Versions: 2

Compression:

Stored size: 1.01 KB

Contents

# frozen_string_literal: true

require 'json'
require "net/http"
require "uri"
require "cgi"

module ScreenshotOne
  class Client

    BASE_URL = "https://api.screenshotone.com"

    def initialize(access_key, secret_key = nil)
      @access_key = access_key
      @secret_key = secret_key
    end

    def generate_take_url(options)
      raise Error.new('Argument is not a ScreenshotOne::TakeOptions instance') unless options.is_a?(TakeOptions)
      raise Error.new('TakeOptions is not valid') unless options.valid?

      query = options.to_hash
      query[:access_key] = @access_key
      query_string = URI.encode_www_form(query)
      if @secret_key
        query_string << "&signature=#{OpenSSL::HMAC.hexdigest("sha256", @secret_key, query_string)}"
      end

      "#{BASE_URL}/take?#{query_string}"
    end

    def take(options)
      uri = URI.parse(generate_take_url(options))
      res = Net::HTTP.get_response(uri)
      return res.body if res.is_a?(Net::HTTPSuccess)
      raise Error.new(res.body)
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
screenshotone-0.0.2 lib/screenshotone/client.rb
screenshotone-0.0.1 lib/screenshotone/client.rb