Class: Uddi4r::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/uddi4r/client.rb

Overview

Uddi4r::Client

This is the main class for UDDI inquiry services. It supports all the UDDI inquiry operations specified in UDDI Programmers API V2. For details about the UDDI V2 Specification, visit:

uddi.org/pubs/ProgrammersAPI-V2.04-Published-20020719.htm

Using the client

You can construct the client with a URL string to the UDDI server or a Uddi4r::Connection object. You can then invoke all UDDI inquiry operations by calling the appropriate API methods and passing a hash of arguments.

For example, the following code queires the Microsoft Test UDDI for businesses that have “Microsoft” as part of their names:

client = Uddi4r::Client.new("http://test.uddi.microsoft.com/inquire")
businesses = client.find_business(:name=>"Microsoft")

Simple and advanced arguments

There are two type of arguments that you can pass, simple and advanced. Simple arguments are either String or Array of String, as in the example above. These types of arguments will give you the commonly used inquiry capabilities.

Advanced arguments are Uddi4r::Model objects that provide advanced capabilities such as findQualifiers, tModelBags, categoryBags, etc. See the specficiation for details.

Following example uses a findQualifer to add case-sensitivity to the previous example:

businesses = client.find_business(:name=>"Microsoft",
                find_qualifers=>Uddi4r::FindQualifers("caseSensitiveMatch")

Return types

All client API methods return Uddi4r::Model objects.

Not supported

The get_businessDetailExt operation is not supported in this release.

Instance Method Summary collapse

Constructor Details

#initialize(connection, debug = false) ⇒ Client

Create a UDDI inquiry object for invoking inquiry operations.

connection

String with endpoint or Uddi4r::Connection

debug

Boolean for showing low-level wire communication.



49
50
51
52
# File 'lib/uddi4r/client.rb', line 49

def initialize(connection, debug=false)
  @conn = (connection.is_a? Connection) ? connection :
    Connection.new(connection, "2.0", debug)
end

Instance Method Details

#delete_binding(args) ⇒ Object

Delete a binding

Returns

Uddi4r::DispositionReport

Simple arguments

auth_info

String, from get_authToken

binding_keys

Array of binding key String, or

binding_key

String, a binding key

Examples



164
165
166
167
168
169
170
171
# File 'lib/uddi4r/client.rb', line 164

def delete_binding(args)
  authInfo =  required(args, :auth_info, String)
  binding_keys = args[:binding_key] ? [ args[:binding_key] ] : args[:binding_keys]
  operation = @conn.create_operation("delete_binding", {},
    {'authInfo'=>authInfo},
    @conn.create_elements("bindingKey", *binding_keys))
  DispositionReport.create_from(@conn.invoke_operation(operation))
end

#delete_business(args) ⇒ Object

Delete a business

Returns

Uddi4r::DispositionReport

Simple arguments

auth_info

String, from get_authToken

business_keys

Array of binding key String, or

business_key

String, a business key

Examples



130
131
132
133
134
135
136
137
# File 'lib/uddi4r/client.rb', line 130

def delete_business(args)
  authInfo =  required(args, :auth_info, String)
  business_keys = args[:business_key] ? [ args[:business_key] ] : args[:business_keys]
  operation = @conn.create_operation("delete_business", {},
    {'authInfo'=>authInfo},
    @conn.create_elements("businessKey", *business_keys))
  DispositionReport.create_from(@conn.invoke_operation(operation))
end

#delete_service(args) ⇒ Object

Delete a service

Returns

Uddi4r::DispositionReport

Simple arguments

auth_info

String, from get_authToken

service_keys

Array of binding key String, or

service_key

String, a service key

Examples



96
97
98
99
100
101
102
103
# File 'lib/uddi4r/client.rb', line 96

def delete_service(args)
  authInfo =  required(args, :auth_info, String)
  service_keys = args[:service_key] ? [ args[:service_key] ] : args[:service_keys]
  operation = @conn.create_operation("delete_service", {},
    {'authInfo'=>authInfo},
    @conn.create_elements("serviceKey", *service_keys))
  DispositionReport.create_from(@conn.invoke_operation(operation))
end

#find_binding(args) ⇒ Object

Find binding detail for a given service and tModels.

Returns

Uddi4r::BindingDetail

Simple arguments

service_key

String for service. (required)

Advanced arguments

find_qualifiers

Uddi4r::FindQualifiers

t_model_bag

Uddi4r::TModelBag (required)

Example

binding_detil = client.find_binding(:service_key=>"7CEAB5C2-D40E-1E0C-7942-99C64EF3C1ED",
                  :t_model_bag=>Uddi4r::TModelBag.new("uuid:928A64AB-E277-32FA-0ABA-A28CE9E5E6A5"))


184
185
186
187
188
189
190
191
192
# File 'lib/uddi4r/client.rb', line 184

def find_binding(args)
  service_key = required(args, :service_key, String)
  args[:t_model_bag] = TModelBag.new(args[:t_model_keys]) if args[:t_model_keys]
  operation = @conn.create_operation("find_binding",
    {"serviceKey"=>required(args, :service_key, String)},
    args[:find_qualifier], "tModelBag"=>required(args, :t_model_bag, TModelBag)
  );
  BindingDetail.create_from(@conn.invoke_operation(operation))
end

#find_business(args = {}) ⇒ Object

Find businesses matching a given name.

Returns

Uddi4r::BusinessList

Simple arguments

name

String for full or partial name

Advanced arguments

find_qualifiers

Uddi4r::FindQualifiers

identifier_bag

Uddi4r::IdentifierBag

category_bag

Uddi4r::CategoryBag

t_model_bag

Uddi4r::TModelBag

discovery_urls

Uddi4r::DiscoveryURLs

Examples

businesses = client.find_business(:name=>"Microsoft")

businesses = client.find_business(:name=>"Microsoft",
  FindQualifiers.new("exactMatch"))


209
210
211
212
213
214
215
# File 'lib/uddi4r/client.rb', line 209

def find_business(args={})
  operation = @conn.create_operation("find_business", {}, 
    args[:find_qualifiers], {"name"=>args[:name]},
    args[:identifier_bag], args[:category_bag],
    args[:t_model_bag],args[:discovery_urls])
  BusinessList.create_from(@conn.invoke_operation(operation))
end

Find businesses related to a given business.

Returns

Uddi4r::RelatedBusinessesList.

Simple arguments

business_key

String for business key (required)

Advanced arguments

find_qualifiers

Uddi4r::FindQualifiers

Example

related_bizs = client.find_related_business(:business_key=>"7CEAB5C2-D40E-1E0C-7942-99C64EF3C1ED")


225
226
227
228
229
230
# File 'lib/uddi4r/client.rb', line 225

def find_related_businesses(args={})
  operation = @conn.create_operation("find_relatedBusinesses", {}, 
    args[:find_qualifiers],
    {"businessKey"=>required(args, :business_key, String)})
  RelatedBusinessesList.create_from(@conn.invoke_operation(operation))
end

#find_service(args = {}) ⇒ Object

Find services for given business key or name.

Returns

Uddi4r::ServiceList

Simple arguments

business_key

String for business key

names

Array of service name String, or

name

String for service name

Advanced arguments

find_qualifiers

Uddi4r::FindQualifiers

t_model_bag

Uddi4r::TModelBag

Example

services = client.find_service(:name=>"Currency Conversion")


243
244
245
246
247
248
249
250
251
# File 'lib/uddi4r/client.rb', line 243

def find_service(args={})
  # create array if only one given    
  names = args[:name] ? [ args[:name] ] : args[:names]
  operation = @conn.create_operation("find_service", 
    {:business_key=>args[:business_key]},
    @conn.create_elements("name", *names),
    args[:t_model_bag])
  ServiceList.create_from(@conn.invoke_operation(operation))
end

#find_t_model(args = {}) ⇒ Object

Find tModels by name and other qualifiers. Returns all tModels published on server if no arguments passed.

Returns

Uddi4r::TModelList

Simple arguments

name

String for service name

Advanced arguments

find_qualifiers

Uddi4r::FindQualifiers

identifier_bag

Uddi4r::IdentifierBag

category_bag

Uddi4r::CategoryBag

Example

t_models = client.find_t_model(:name=>"Currency Conversion")


264
265
266
267
268
269
270
# File 'lib/uddi4r/client.rb', line 264

def find_t_model(args={})
  operation = @conn.create_operation("find_tModel", {}, 
    args[:find_qualifiers], {"name"=>args[:name]},
    args[:identifier_bag], args[:category_bag],
    args[:t_model_bag], args[:discovery_urls])
  TModelList.create_from(@conn.invoke_operation(operation))        
end

#get_authToken(args) ⇒ Object

Get an authorization token for use with the publishing API.

Returns

Uddi4r::AuthToken

Simple arguments

user_id

String, user id

credentials

String, most likely a password

Examples

token = client.get_authToken(:user_id=>"russ", :credentials=>"xyzzy")


63
64
65
66
67
68
69
# File 'lib/uddi4r/client.rb', line 63

def get_authToken(args)
  user_id = required(args, :user_id, String)
  cred = required(args, :credentials, String)
  operation = @conn.create_operation('get_authToken',
    {'userID'=>user_id, 'cred'=>cred})
  AuthToken.create_from(@conn.invoke_operation(operation))
end

#get_binding_detail(args) ⇒ Object

Get binding detail for given binding key.

Returns

Uddi4r::BindingDetail

Simple arguments

binding_keys

Array of binding key String, or

binding_key

String for binding key

Example

bd = client.get_binding(:binding_key=>"C7CEAB5C2-D40E-1E0C-7942-99C64EF3C1ED")
url = bd.binding_template.first.access_point()


280
281
282
283
284
285
286
287
# File 'lib/uddi4r/client.rb', line 280

def get_binding_detail(args)
  # create array if only one given
  args[:binding_keys] = [args[:binding_key]] if args[:binding_key]
  operation = @conn.create_operation("get_bindingDetail", {},
    @conn.create_elements("bindingKey", *required(args, :binding_keys, Array) )
  )
  BindingDetail.create_from(@conn.invoke_operation(operation))
end

#get_business_detail(args) ⇒ Object

Get business detail for given business key.

Returns

Uddi4r::BusinessDetail

Simple arguments

business_keys

Array of business key String, or

business_key

String for business key

Example

biz = client.get_business_detail(:business_keys=>["C7CEAB5C2-D40E-1E0C-7942-99C64EF3C1ED", "..."])


296
297
298
299
300
301
# File 'lib/uddi4r/client.rb', line 296

def get_business_detail(args)
  args[:business_keys] = [args[:business_key]] if args[:business_key]
  operation = @conn.create_operation("get_businessDetail", {},
    @conn.create_elements("businessKey", *required(args, :business_keys, Array)))
  BusinessDetail.create_from(@conn.invoke_operation(operation))           
end

#get_service_detail(args) ⇒ Object

Get service detail for given service key or keys.

Returns

Uddi4r::ServiceDetail

Simple arguments

service_keys

Array of service key String, or

service_key

String for service key

Example

service_details = client.get_service_detail(:service_keys=>["C7CEAB5C2-D40E-1E0C-7942-99C64EF3C1ED", "..."])


324
325
326
327
328
329
# File 'lib/uddi4r/client.rb', line 324

def get_service_detail(args)
  args[:service_keys] = [args[:service_key]] if args[:service_key]
  operation = @conn.create_operation("get_serviceDetail", {},
    @conn.create_elements("serviceKey", *required(args, :service_keys, Array)))
  ServiceDetail.create_from(@conn.invoke_operation(operation))
end

#get_t_model_detail(args) ⇒ Object

Get tModel detail for given tModel key or keys.

Returns

Uddi4r::TModelDetail

Simple arguments

t_model_keys

Array of tModel key String, or

t_model_key

String for tModel key

Example

t_models = client.get_t_model_detail(:t_model_keys=>["C7CEAB5C2-D40E-1E0C-7942-99C64EF3C1ED", "..."])


310
311
312
313
314
315
# File 'lib/uddi4r/client.rb', line 310

def get_t_model_detail(args)
  args[:t_model_keys] = [args[:t_model_key]] if args[:t_model_key]
  operation = @conn.create_operation("get_tModelDetail", {},
    @conn.create_elements("tModelKey", *required(args, :t_model_keys, Array)))
  TModelDetail.create_from(@conn.invoke_operation(operation))
end

#save_binding(args) ⇒ Object

Save or modify a binding

Returns

Uddi4r::BindingDetail

Simple arguments

auth_info

String, from get_authToken

binding_entity

the new binding

Examples



147
148
149
150
151
152
153
154
# File 'lib/uddi4r/client.rb', line 147

def save_binding(args)
  authInfo =  required(args, :auth_info, String)
  binding = args[:binding]
  operation = @conn.create_operation('save_binding', {},
    {'authInfo'=>authInfo},
    binding.to_xml)
  BindingDetail.create_from(@conn.invoke_operation(operation))
end

#save_business(args) ⇒ Object

Save or modify a business

Returns

Uddi4r::BusinessDetail

Simple arguments

auth_info

String, from get_authToken

business_entity

BusinessEntity, the new business service

Examples



113
114
115
116
117
118
119
120
# File 'lib/uddi4r/client.rb', line 113

def save_business(args)
  authInfo =  required(args, :auth_info, String)
  business = required(args, :business, BusinessEntity)
  operation = @conn.create_operation('save_business', {},
    {'authInfo'=>authInfo},
    business.to_xml)
  BusinessDetail.create_from(@conn.invoke_operation(operation))
end

#save_service(args) ⇒ Object

Save or modify a service

Returns

Uddi4r::ServiceDetail

Simple arguments

auth_info

String, from get_authToken

business_service

BusinessService, the new business service

Examples



79
80
81
82
83
84
85
86
# File 'lib/uddi4r/client.rb', line 79

def save_service(args)
  authInfo =  required(args, :auth_info, String)
  service = required(args, :business_service, BusinessService)
  operation = @conn.create_operation('save_service', {},
    {'authInfo'=>authInfo},
    service.to_xml)
  ServiceDetail.create_from(@conn.invoke_operation(operation))
end