class Openfire::Service::Base

Public Class Methods

new(options={}) click to toggle source
# File lib/openfire/service/base.rb, line 9
def initialize(options={})
  @options = { path: config.path }.merge(options)
end

Private Instance Methods

build_query(params) click to toggle source
# File lib/openfire/service/base.rb, line 15
def build_query(params)
  "#{build_query_uri.to_s}?#{build_query_params(params)}"
end
build_query_params(params) click to toggle source
# File lib/openfire/service/base.rb, line 25
def build_query_params(params)
  params.merge!(:secret => @options[:secret])
  params.to_a.map{ |p| "#{p[0]}=#{p[1]}" }.join('&')
end
build_query_uri() click to toggle source
# File lib/openfire/service/base.rb, line 19
def build_query_uri
  uri = URI.parse(@options[:url])
  uri.path = File.join(uri.path,config.path)
  uri
end
parse_response(data) click to toggle source
# File lib/openfire/service/base.rb, line 44
def parse_response(data)
  error = data.match(/<error>(.*)<\/error>/)
  if error && config.exceptions.include?(error[1])
    exception_klass = "#{self.class}::#{error[1].gsub('Exception', '')}Exception"
    raise exception_klass.constantize
  end
  raise InvalidResponseException unless data.match(/<result>ok<\/result>/)
  return true
end
submit_http_request(uri, params_as_string) click to toggle source
# File lib/openfire/service/base.rb, line 35
def submit_http_request(uri, params_as_string)
  uri.query = URI.encode(params_as_string)
  res = Net::HTTP.get_response(uri)

  return res.body
rescue Exception => e
  raise HTTPException, e.to_s
end
submit_request(params) click to toggle source
# File lib/openfire/service/base.rb, line 30
def submit_request(params)
  data = submit_http_request(build_query_uri, build_query_params(params))
  parse_response(data)
end