module SpreadshirtClient

Constants

VERSION

Attributes

api_key[RW]
api_secret[RW]

Public Class Methods

authorize(method, path, session = nil) click to toggle source
# File lib/spreadshirt_client.rb, line 27
def authorize(method, path, session = nil)
  time = Time.now.to_i

  authorization = [
    "apiKey=\"#{api_key}\"",
    "data=\"#{method} #{url_for path} #{time}\"",
    "sig=\"#{Digest::SHA1.hexdigest "#{method} #{url_for path} #{time} #{api_secret}"}\""
  ]

  res = []
  res.push "SprdAuth #{authorization.join ", "}"
  res.push "sessionId=\"#{session}\"" if session

  res.join ", "
end
base_url() click to toggle source
# File lib/spreadshirt_client.rb, line 23
def base_url
  @base_url ||= "https://api.spreadshirt.net/api/v1"
end
base_url=(base_url) click to toggle source
# File lib/spreadshirt_client.rb, line 19
def base_url=(base_url)
  @base_url = base_url
end
delete(path, options = {}) click to toggle source
# File lib/spreadshirt_client.rb, line 78
def delete(path, options = {})
  Timeout::timeout(timeout) { RestClient.delete url_for(path), headers_for(:delete, path, options) }
end
get(path, options = {}) click to toggle source
# File lib/spreadshirt_client.rb, line 74
def get(path, options = {})
  Timeout::timeout(timeout) { RestClient.get url_for(path), headers_for(:get, path, options) }
end
headers_for(method_symbol, path, options) click to toggle source
# File lib/spreadshirt_client.rb, line 49
def headers_for(method_symbol, path, options)
  headers = {}

  headers[:authorization] = authorize(method_for(method_symbol), path, options[:session]) if options[:authorization]

  opts = options.dup
  opts.delete :session

  opts[:content_type] ||= "application/xml"

  opts.merge headers
end
method_for(method_symbol) click to toggle source
# File lib/spreadshirt_client.rb, line 62
def method_for(method_symbol)
  method_symbol.to_s.upcase
end
post(path, payload, options = {}) click to toggle source
# File lib/spreadshirt_client.rb, line 70
def post(path, payload, options = {})
  Timeout::timeout(timeout) { RestClient.post url_for(path), payload, headers_for(:post, path, options) }
end
put(path, payload, options = {}) click to toggle source
# File lib/spreadshirt_client.rb, line 66
def put(path, payload, options = {})
  Timeout::timeout(timeout) { RestClient.put url_for(path), payload, headers_for(:put, path, options) }
end
timeout() click to toggle source
# File lib/spreadshirt_client.rb, line 15
def timeout
  @timeout ||= 30
end
timeout=(timeout) click to toggle source
# File lib/spreadshirt_client.rb, line 11
def timeout=(timeout)
  @timeout = timeout
end
url_for(path) click to toggle source
# File lib/spreadshirt_client.rb, line 43
def url_for(path)
  return path if path =~ /\Ahttps?:\/\//

  "#{base_url}#{path}"
end