directories_interface 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/directories_interface.rb +7 -0
 - data/lib/directories_interface/communication.rb +11 -0
 - data/lib/directories_interface/directories_interface_wrapper.rb +59 -0
 - data/lib/directories_interface/version.rb +3 -0
 - data/lib/directories_interface/xml_parser.rb +67 -0
 - data/spec/directories_interface/directories_interface_wrapper_spec.rb +37 -0
 - data/spec/directories_interface/xml_parser_spec.rb +12 -0
 - data/spec/spec_helper.rb +16 -0
 - metadata +121 -0
 
| 
         @@ -0,0 +1,59 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module DirectoriesInterface
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              class DirectoriesInterfaceWrapper
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                def initialize
         
     | 
| 
      
 6 
     | 
    
         
            +
                  # SETUP WEB SERVICES
         
     | 
| 
      
 7 
     | 
    
         
            +
                  @login = Savon::Client.new do
         
     | 
| 
      
 8 
     | 
    
         
            +
                    wsdl.document = "https://secure.directories.ch/administration/v4/security.asmx?WSDL"
         
     | 
| 
      
 9 
     | 
    
         
            +
                  end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                  @client = Savon::Client.new do
         
     | 
| 
      
 12 
     | 
    
         
            +
                    wsdl.document = "http://service.directories.ch/search/v4/searchaddress.asmx?WSDL"
         
     | 
| 
      
 13 
     | 
    
         
            +
                  end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                  @login.http.auth.ssl.verify_mode = :none
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                #returns a sessionID
         
     | 
| 
      
 19 
     | 
    
         
            +
                def login(username,password,service_id)
         
     | 
| 
      
 20 
     | 
    
         
            +
                  soap_login_response = @login.request "Login", :xmlns => "urn:directories/administration/v4/security" do
         
     | 
| 
      
 21 
     | 
    
         
            +
                    http.headers["SOAPAction"] = '"urn:directories/administration/v4/security/Login"'
         
     | 
| 
      
 22 
     | 
    
         
            +
                    soap.body = '<loginParam>' + XmlParser.generate_login_xml(:username=> username, :password=>password, :service_id=>service_id)+'</loginParam>'
         
     | 
| 
      
 23 
     | 
    
         
            +
                  end
         
     | 
| 
      
 24 
     | 
    
         
            +
                  login_response = XmlParser.extract_login_response(soap_login_response.to_hash[:login_response][:login_result])
         
     | 
| 
      
 25 
     | 
    
         
            +
                  XmlParser.extract_session_id(login_response) if result_available login_response
         
     | 
| 
      
 26 
     | 
    
         
            +
                end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                #returns a search result as XML. auth = [ServiceID,SessionID], person = [nachname,vorname,location]
         
     | 
| 
      
 29 
     | 
    
         
            +
                def search_address(service_id,session_id, person)
         
     | 
| 
      
 30 
     | 
    
         
            +
                  result = @client.request "SearchAddress", :xmlns =>"urn:directories/search/v4/searchaddress" do
         
     | 
| 
      
 31 
     | 
    
         
            +
                    http.headers["SOAPAction"] = '"urn:directories/search/v4/searchaddress/SearchAddress"'
         
     | 
| 
      
 32 
     | 
    
         
            +
                    soap.body = "<addressParam>" + XmlParser.generate_search_xml(service_id,session_id,person) + "</addressParam>"
         
     | 
| 
      
 33 
     | 
    
         
            +
                  end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                  numbers = nil
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                  if result.success?
         
     | 
| 
      
 38 
     | 
    
         
            +
                    result_xml = XmlParser.extract_search_result(result.to_hash[:search_address_response][:search_address_result])
         
     | 
| 
      
 39 
     | 
    
         
            +
                    if result_available result_xml
         
     | 
| 
      
 40 
     | 
    
         
            +
                      if XmlParser.count_matches(result_xml) == "1"
         
     | 
| 
      
 41 
     | 
    
         
            +
                        numbers = XmlParser.extract_services(result_xml)
         
     | 
| 
      
 42 
     | 
    
         
            +
                      end
         
     | 
| 
      
 43 
     | 
    
         
            +
                    end
         
     | 
| 
      
 44 
     | 
    
         
            +
                  end
         
     | 
| 
      
 45 
     | 
    
         
            +
                  numbers
         
     | 
| 
      
 46 
     | 
    
         
            +
                end
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                def result_available(result_xml)
         
     | 
| 
      
 49 
     | 
    
         
            +
                  error_code = XmlParser.extract_error_code(result_xml)
         
     | 
| 
      
 50 
     | 
    
         
            +
                  case error_code
         
     | 
| 
      
 51 
     | 
    
         
            +
                    when "200" then false
         
     | 
| 
      
 52 
     | 
    
         
            +
                    when "0" then true
         
     | 
| 
      
 53 
     | 
    
         
            +
                    else raise "Service has error: #{error_code}"
         
     | 
| 
      
 54 
     | 
    
         
            +
                  end
         
     | 
| 
      
 55 
     | 
    
         
            +
                end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
              end
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,67 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module DirectoriesInterface
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              class XmlParser
         
     | 
| 
      
 4 
     | 
    
         
            +
                def initialize
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                end
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                def self.generate_login_xml(attr)
         
     | 
| 
      
 9 
     | 
    
         
            +
                  res=Nokogiri::XML::Builder.new do  |xml|
         
     | 
| 
      
 10 
     | 
    
         
            +
                    xml.LoginParam(:ServiceId=>attr[:service_id], :UserName=>attr[:username], :Password=>attr[:password])
         
     | 
| 
      
 11 
     | 
    
         
            +
                  end
         
     | 
| 
      
 12 
     | 
    
         
            +
                  res.to_xml.to_s.gsub(/\n/,"").encode(:xml => :text)
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                def self.generate_search_xml(service_id,session_id,person)
         
     | 
| 
      
 17 
     | 
    
         
            +
                  res = Nokogiri::XML::Builder.new do |xml|
         
     | 
| 
      
 18 
     | 
    
         
            +
                    xml.AddressParam {
         
     | 
| 
      
 19 
     | 
    
         
            +
                      xml.Authentication(:ServiceId=>service_id, :SessionId=>session_id)
         
     | 
| 
      
 20 
     | 
    
         
            +
                      xml.Paging(:StartAtIndex=>"1", :FinishAtIndex=>"5")
         
     | 
| 
      
 21 
     | 
    
         
            +
                      xml.LastName(:Value=>person[:nachname], :Phonetic=>"1", :PrecisionCode=>"FIELDGROUP")
         
     | 
| 
      
 22 
     | 
    
         
            +
                      xml.FirstName(:Value=>person[:vorname], :Phonetic=>"1", :PrecisionCode=>"FIELDGROUP")
         
     | 
| 
      
 23 
     | 
    
         
            +
                      xml.StreetHouseNo(:Value=>person[:address], :Phonetic=>"1") if person.has_key?(:address)
         
     | 
| 
      
 24 
     | 
    
         
            +
                      xml.Location(:Value=>person[:location], :Phonetic=>"0")
         
     | 
| 
      
 25 
     | 
    
         
            +
                      xml.TypeCode "ALL"
         
     | 
| 
      
 26 
     | 
    
         
            +
                    }
         
     | 
| 
      
 27 
     | 
    
         
            +
                  end
         
     | 
| 
      
 28 
     | 
    
         
            +
                  res.to_xml.to_s.gsub(/\n/,"").encode(:xml => :text)
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                def self.extract_login_response(soap_login_response)
         
     | 
| 
      
 33 
     | 
    
         
            +
                  Nokogiri::XML(soap_login_response)
         
     | 
| 
      
 34 
     | 
    
         
            +
                end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                def self.extract_session_id(login_response)
         
     | 
| 
      
 37 
     | 
    
         
            +
                  login_response.xpath("//@SessionId").to_s
         
     | 
| 
      
 38 
     | 
    
         
            +
                end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                def self.extract_search_result(res)
         
     | 
| 
      
 41 
     | 
    
         
            +
                  Nokogiri::XML(res)
         
     | 
| 
      
 42 
     | 
    
         
            +
                end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                def self.extract_error_code(xml_res)
         
     | 
| 
      
 45 
     | 
    
         
            +
                  xml_res.xpath("//@ErrorCode").to_s
         
     | 
| 
      
 46 
     | 
    
         
            +
                end
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                def self.count_matches(xml_res)
         
     | 
| 
      
 49 
     | 
    
         
            +
                  xml_res.xpath("//@MatchedEntries").to_s
         
     | 
| 
      
 50 
     | 
    
         
            +
                end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                #take the (unique)search result and returns an array of communications
         
     | 
| 
      
 53 
     | 
    
         
            +
                def self.extract_services(xml_res)
         
     | 
| 
      
 54 
     | 
    
         
            +
                  services = xml_res.xpath("//Service[@TypeGrpCode='TEL' or @TypeGrpCode='NATEL' or @TypeGrpCode='FAX']")
         
     | 
| 
      
 55 
     | 
    
         
            +
                  result = Array.new
         
     | 
| 
      
 56 
     | 
    
         
            +
                  services.each do |node|
         
     | 
| 
      
 57 
     | 
    
         
            +
                    item = Communication.new
         
     | 
| 
      
 58 
     | 
    
         
            +
                    item.type = node.xpath("@TypeGrpCode").to_s
         
     | 
| 
      
 59 
     | 
    
         
            +
                    item.number = node.xpath("@Value").to_s
         
     | 
| 
      
 60 
     | 
    
         
            +
                    result << item
         
     | 
| 
      
 61 
     | 
    
         
            +
                  end
         
     | 
| 
      
 62 
     | 
    
         
            +
                  result
         
     | 
| 
      
 63 
     | 
    
         
            +
                end
         
     | 
| 
      
 64 
     | 
    
         
            +
              end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
            end
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,37 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
             
     | 
| 
      
 2 
     | 
    
         
            +
            require "spec_helper"
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            module DirectoriesInterface
         
     | 
| 
      
 5 
     | 
    
         
            +
              describe DirectoriesInterfaceWrapper do
         
     | 
| 
      
 6 
     | 
    
         
            +
                before(:each) do
         
     | 
| 
      
 7 
     | 
    
         
            +
                  @username = ""
         
     | 
| 
      
 8 
     | 
    
         
            +
                  @password = ""
         
     | 
| 
      
 9 
     | 
    
         
            +
                  @service_id = ""
         
     | 
| 
      
 10 
     | 
    
         
            +
                end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                describe "#login" do
         
     | 
| 
      
 13 
     | 
    
         
            +
                  it "returns a sessionID" do
         
     | 
| 
      
 14 
     | 
    
         
            +
                    dir1 = DirectoriesInterfaceWrapper.new
         
     | 
| 
      
 15 
     | 
    
         
            +
                    @session_id = dir1.login(@username, @password, @service_id)
         
     | 
| 
      
 16 
     | 
    
         
            +
                    puts @session_id
         
     | 
| 
      
 17 
     | 
    
         
            +
                    @session_id.should_not be_nil
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                describe "#search_address" do
         
     | 
| 
      
 22 
     | 
    
         
            +
                  before(:each) do
         
     | 
| 
      
 23 
     | 
    
         
            +
                    @dir1 = DirectoriesInterfaceWrapper.new
         
     | 
| 
      
 24 
     | 
    
         
            +
                    @session_id = @dir1.login(@username, @password, @service_id)
         
     | 
| 
      
 25 
     | 
    
         
            +
                  end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                  it "if exactly one match found, returns a list of numbers" do
         
     | 
| 
      
 28 
     | 
    
         
            +
                    person = {:vorname=>"Daniele", :nachname=>"Pestalozzi", :location=>"Novazzano", :address=>"via al Loi"}
         
     | 
| 
      
 29 
     | 
    
         
            +
                    result = @dir1.search_address(@service_id, @session_id,person)
         
     | 
| 
      
 30 
     | 
    
         
            +
                    puts result
         
     | 
| 
      
 31 
     | 
    
         
            +
                    result.should_not be_nil
         
     | 
| 
      
 32 
     | 
    
         
            +
                    result.length.should == 2
         
     | 
| 
      
 33 
     | 
    
         
            +
                  end
         
     | 
| 
      
 34 
     | 
    
         
            +
                end
         
     | 
| 
      
 35 
     | 
    
         
            +
              end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            end
         
     | 
    
        data/spec/spec_helper.rb
    ADDED
    
    | 
         @@ -0,0 +1,16 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # This file was generated by the `rspec --init` command. Conventionally, all
         
     | 
| 
      
 2 
     | 
    
         
            +
            # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Require this file using `require "spec_helper.rb"` to ensure that it is only
         
     | 
| 
      
 4 
     | 
    
         
            +
            # loaded once.
         
     | 
| 
      
 5 
     | 
    
         
            +
            #
         
     | 
| 
      
 6 
     | 
    
         
            +
            # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            require 'directories_interface'
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            RSpec.configure do |config|
         
     | 
| 
      
 11 
     | 
    
         
            +
              config.treat_symbols_as_metadata_keys_with_true_values = true
         
     | 
| 
      
 12 
     | 
    
         
            +
              config.run_all_when_everything_filtered = true
         
     | 
| 
      
 13 
     | 
    
         
            +
              config.filter_run :focus
         
     | 
| 
      
 14 
     | 
    
         
            +
            end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,121 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: directories_interface
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.1
         
     | 
| 
      
 5 
     | 
    
         
            +
              prerelease: 
         
     | 
| 
      
 6 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 7 
     | 
    
         
            +
            authors:
         
     | 
| 
      
 8 
     | 
    
         
            +
            - Nicola Pestalozzi
         
     | 
| 
      
 9 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 10 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 11 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2012-06-01 00:00:00.000000000 Z
         
     | 
| 
      
 13 
     | 
    
         
            +
            dependencies:
         
     | 
| 
      
 14 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 15 
     | 
    
         
            +
              name: rspec
         
     | 
| 
      
 16 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 17 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 18 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 19 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 20 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 21 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 22 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 23 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 24 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 25 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 26 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 27 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 28 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 29 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 30 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 31 
     | 
    
         
            +
              name: savon
         
     | 
| 
      
 32 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 33 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 34 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 35 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 36 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 37 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 38 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 39 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 40 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 41 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 42 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 43 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 44 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 45 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 46 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 47 
     | 
    
         
            +
              name: certified
         
     | 
| 
      
 48 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 49 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 50 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 51 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 52 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 53 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 54 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 55 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 56 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 57 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 58 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 59 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 60 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 61 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 62 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 63 
     | 
    
         
            +
              name: nokogiri
         
     | 
| 
      
 64 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 65 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 66 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 67 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 68 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 69 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 70 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 71 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 72 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 73 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 74 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 75 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 76 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 77 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 78 
     | 
    
         
            +
            description: First version of the interface. Searches for a person and returns an
         
     | 
| 
      
 79 
     | 
    
         
            +
              array of phone numbers
         
     | 
| 
      
 80 
     | 
    
         
            +
            email:
         
     | 
| 
      
 81 
     | 
    
         
            +
            - np@impac.ch
         
     | 
| 
      
 82 
     | 
    
         
            +
            executables: []
         
     | 
| 
      
 83 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 84 
     | 
    
         
            +
            extra_rdoc_files: []
         
     | 
| 
      
 85 
     | 
    
         
            +
            files:
         
     | 
| 
      
 86 
     | 
    
         
            +
            - lib/directories_interface/communication.rb
         
     | 
| 
      
 87 
     | 
    
         
            +
            - lib/directories_interface/directories_interface_wrapper.rb
         
     | 
| 
      
 88 
     | 
    
         
            +
            - lib/directories_interface/version.rb
         
     | 
| 
      
 89 
     | 
    
         
            +
            - lib/directories_interface/xml_parser.rb
         
     | 
| 
      
 90 
     | 
    
         
            +
            - lib/directories_interface.rb
         
     | 
| 
      
 91 
     | 
    
         
            +
            - spec/directories_interface/directories_interface_wrapper_spec.rb
         
     | 
| 
      
 92 
     | 
    
         
            +
            - spec/directories_interface/xml_parser_spec.rb
         
     | 
| 
      
 93 
     | 
    
         
            +
            - spec/spec_helper.rb
         
     | 
| 
      
 94 
     | 
    
         
            +
            homepage: ''
         
     | 
| 
      
 95 
     | 
    
         
            +
            licenses: []
         
     | 
| 
      
 96 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 97 
     | 
    
         
            +
            rdoc_options: []
         
     | 
| 
      
 98 
     | 
    
         
            +
            require_paths:
         
     | 
| 
      
 99 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 100 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 101 
     | 
    
         
            +
              none: false
         
     | 
| 
      
 102 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 103 
     | 
    
         
            +
              - - ! '>='
         
     | 
| 
      
 104 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 105 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 106 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 107 
     | 
    
         
            +
              none: false
         
     | 
| 
      
 108 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 109 
     | 
    
         
            +
              - - ! '>='
         
     | 
| 
      
 110 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 111 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 112 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 113 
     | 
    
         
            +
            rubyforge_project: directories_interface
         
     | 
| 
      
 114 
     | 
    
         
            +
            rubygems_version: 1.8.23
         
     | 
| 
      
 115 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 116 
     | 
    
         
            +
            specification_version: 3
         
     | 
| 
      
 117 
     | 
    
         
            +
            summary: Interface to Directories.ch
         
     | 
| 
      
 118 
     | 
    
         
            +
            test_files:
         
     | 
| 
      
 119 
     | 
    
         
            +
            - spec/directories_interface/directories_interface_wrapper_spec.rb
         
     | 
| 
      
 120 
     | 
    
         
            +
            - spec/directories_interface/xml_parser_spec.rb
         
     | 
| 
      
 121 
     | 
    
         
            +
            - spec/spec_helper.rb
         
     |