lib/marvel/api.rb
require 'marvel/api/api_methods'
require 'marvel/api/http_service'
require 'marvel/api/request'
require 'marvel/api/response'
require 'marvel/api/version'
module Marvel
class Api
include ApiMethods
class << self
attr_accessor :http_service
end
self.http_service = HTTPService
DEFAULT_SERVER = 'http://gateway.marvel.com'.freeze
attr_reader :public_key, :private_key, :options
def initialize(public_key, private_key, options = {})
@public_key = public_key
@private_key = private_key
@options = options
end
def api_call(path, args, options = {})
request = Request.new(
path: path,
args: args.merge(apikey: public_key, ts: ts, hash: request_hash),
options: options
)
self.class.http_service.make_request(request)
end
def comics(args = {})
api_call('comics', args)
end
private
def ts
Time.now.utc.to_i
end
def request_hash
Digest::MD5.hexdigest("#{ts}#{private_key}#{public_key}")
end
end
end