rest-gen-0.9.0.2: files/Ruby/base.rb
require 'net/http'
require 'uri'
require 'rubygems'
require 'cgi'
require 'json'
require 'rexml/document'
print "Fix url encoding when this is going to be used"
def internalSilkRequest (api, method, url, params = {}, contentType = 'text/plain', dataType = :data, data = nil, headers = {})
uri = URI(url + '?' + params.collect { |k,v| "#{k}=#{CGI::escape(v.to_s)}" }.join('&'))
request = case method
when :get then Net::HTTP::Get.new(uri.request_uri)
when :post then Net::HTTP::Post.new(uri.request_uri)
when :put then Net::HTTP::Put.new(uri.request_uri)
when :delete then Net::HTTP::Delete.new(uri.request_uri)
end
request.initialize_http_header(headers)
request.body = data
request['Content-Type'] = contentType
request['Cookie'] = api.cookies.to_a.map { |kv| kv.join('=') } .join(';')
case dataType
when :data then request['Accept'] = 'text/plain'
when :json then request['Accept'] = 'application/json'
when :xml then request['Accept'] = 'application/xml'
end
response = Net::HTTP.new(uri.host, uri.port).request request
pdat = response.body
if response.code == '200'
pdat = case dataType
when :json then JSON.parse response.body
when :xml then REXML::Document.new response.body
end
end
return pdat, response
end
def mkJson (x)
if x.class == Hash
return JSON.generate x
else
return x.to_s
end
end
module SilkApi
class Api < BaseApi
attr_accessor :cookies
def initialize (apiURL)
super(apiURL)
@cookies = {}
end
def login (email, password)
pdat, res = self.User.signin({'email' => email, 'password' => password})
cookie = res['Set-Cookie']
@cookies['silk_sid'] = cookie.sub /.*silk_sid=([^;]+).*/, '\1'
@cookies['silk_tid'] = cookie.sub /.*silk_tid=([^;]+).*/, '\1'
return pdat, res
end
end
end