class Soap4juddi::Connector

Attributes

auth_token[RW]
soap_xml[R]
uri[R]

Public Class Methods

new() click to toggle source
# File lib/soap4juddi/connector.rb, line 12
def initialize
  @soap_xml = Soap4juddi::XML.new
end

Public Instance Methods

authenticate(auth_user, auth_password) click to toggle source
# File lib/soap4juddi/connector.rb, line 21
def authenticate(auth_user, auth_password)
   @auth_user = auth_user
   @auth_password =auth_password
end
authorize(base_uri) click to toggle source
# File lib/soap4juddi/connector.rb, line 26
def authorize(base_uri)
  validate_base_uri(base_uri)
  @auth_token = '' #clear existing auth token
  @auth_token = request_auth_token(base_uri)
end
connection(base_uri, service, action) click to toggle source
# File lib/soap4juddi/connector.rb, line 48
def connection(base_uri, service, action)
  validate_connection_parameters(base_uri, service, action)
  build_post_request(base_uri, service, action)
end
execute(req, &block) click to toggle source
# File lib/soap4juddi/connector.rb, line 40
def execute(req, &block)
  validate_destination(req)
  res = Net::HTTP.start(@uri.hostname, @uri.port) do |http|
    http.request(req)
  end
  jsend_result(res, block)
end
extract_auth_token(body) click to toggle source
# File lib/soap4juddi/connector.rb, line 53
def extract_auth_token(body)
  (body.split('authtoken:')[1]).split('<')[0]
end
has_credentials?() click to toggle source
# File lib/soap4juddi/connector.rb, line 16
def has_credentials?
  return true if @auth_user or @auth_password
  false
end
request_soap(base_uri, version, service, request, attr = nil, &block) click to toggle source
# File lib/soap4juddi/connector.rb, line 32
def request_soap(base_uri, version, service, request, attr = nil, &block)
  req = connection(base_uri, version, service)
  req.body = @soap_xml.soap_envelope(request, service, attr)
  execute(req) do |res|
    block.call(res)
  end
end

Private Instance Methods

build_authorization_request(base_uri) click to toggle source
# File lib/soap4juddi/connector.rb, line 66
def build_authorization_request(base_uri)
  req = connection(base_uri, 'security', 'get_authToken')
  auth = @soap_xml.element_with_value('get_authToken', '', {'userID' => @auth_user, 'cred' => @auth_password})
  req.body = @soap_xml.envelope_header_body(auth)
  req
end
build_post_request(base_uri, service, action) click to toggle source
# File lib/soap4juddi/connector.rb, line 100
def build_post_request(base_uri, service, action)
  req = Net::HTTP::Post.new(build_uri(base_uri, service))
  req.content_type = @soap_xml.content_type
  req['SOAPAction'] = action
  req
end
build_uri(base_uri, service) click to toggle source
# File lib/soap4juddi/connector.rb, line 88
def build_uri(base_uri, service)
  @uri = URI("#{base_uri}/juddiv3/services/#{service}")
  @uri.request_uri
end
jsend_result(res, block) click to toggle source
# File lib/soap4juddi/connector.rb, line 73
def jsend_result(res, block)
  case res
    when Net::HTTPSuccess
      return soap_success(res, block)
    else
      return fail(res.body)
    end       
end
request_auth_token(base_uri) click to toggle source
# File lib/soap4juddi/connector.rb, line 59
def request_auth_token(base_uri)
  result = execute(build_authorization_request(base_uri)) do |res|
     @auth_token = extract_auth_token(res.body)
   end
   @auth_token
end
soap_success(res, block) click to toggle source
# File lib/soap4juddi/connector.rb, line 82
def soap_success(res, block)
  result = block.call(res) if block
  return success_data(result) if result
  return success
end
validate_base_uri(base_uri) click to toggle source
# File lib/soap4juddi/connector.rb, line 112
def validate_base_uri(base_uri)
  raise Soap4juddi::InvalidDestinationError.new('no base URI provided') if base_uri.nil?
  true
end
validate_connection_parameters(base_uri, service, action) click to toggle source
# File lib/soap4juddi/connector.rb, line 93
def validate_connection_parameters(base_uri, service, action)
  validate_base_uri(base_uri)
  raise Soap4juddi::InvalidDestinationError.new('no service provided') if service.nil?
  raise Soap4juddi::InvalidDestinationError.new('no action provided') if action.nil?
  true
end
validate_destination(req) click to toggle source
# File lib/soap4juddi/connector.rb, line 107
def validate_destination(req)
  raise Soap4juddi::InvalidRequestError.new('no request provided') if req.nil?
  true
end