Sha256: 1b7692a906ef2d1fad33acaa2ee95ffe4ff0d3a1a701b946e0e23bd430d5aa86

Contents?: true

Size: 1.06 KB

Versions: 1

Compression:

Stored size: 1.06 KB

Contents

require 'rest-client'
require 'sendcloud/mail'
require 'sendcloud/mail_list'
require 'sendcloud/stats'
require 'sendcloud/unsubscribes'
require 'sendcloud/bounces'
require 'sendcloud/version'

module Sendcloud

  API_BASE = 'https://sendcloud.sohu.com/webapi'

  class Error < StandardError; end

  def self.setup
    yield self
  end

  class << self
    attr_accessor :api_user, :api_key, :format
  end

  def self.get(path, params)

    request(path, params) do |url, options|
      RestClient.get(url, {:params => options})
    end
  end

  def self.post(path, params)

    request(path, params) do |url, options|
      RestClient.post(url, options)
    end

  end

  def self.request(path, params, &block)
    params = {
        :api_user => Sendcloud.api_user,
        :api_key => Sendcloud.api_key,
    }.merge(params)

    format = params.delete(:format) || 'json'
    url = "#{API_BASE}/#{path}.#{format}"
    begin
      return JSON.parse(yield(url, params))
    rescue JSON::ParserError
      raise Sendcloud::Error.new('sendcloud response invalid')
    end

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sendcloud-0.1.0 lib/sendcloud.rb