Edurep:Implementaties/Ruby

Uit Kennisnet Developers Documentatie
< Edurep:Implementaties
Versie door Muskee01 (overleg | bijdragen) op 7 nov 2013 om 13:46 (new)
(wijz) ← Oudere versie | Huidige versie (wijz) | Nieuwere versie → (wijz)
Ga naar: navigatie, zoeken

Edurep-symbol.png Edurep: Implementaties/Ruby

Info.gif Vanwege de aankomende release zijn we bezig het voorbereiden van de wiki. Met name de informatie rondom schema.org en de jsonsearch is nog niet bruikbaar op productie.


Deze pagina laat zien hoe een ruby-client kan worden gebruikt om met de SRU-interface te communiceren. De support vanuit ruby voor SOAP is nog niet heel erg goed. Het implementeren van de SRW-interface lukt in ieder geval niet met de standaard soap4r library. Daarom is het aan te bevelen de SRU-interface te gebruiken voor Ruby.

SRU-client

Voor de voorbeeld-SRU-client worden de volgende libraries gebruikt:

  • net/http: voor het communiceren over HTTP.
  • rexml: voor het parsen van XML documenten.
  • htmlentities: voor het decoden van de brondocumenten.

Het voorbeeld sru.rb client ziet er dan als volgt uit:

require 'htmlentities/string'
require 'rexml/document'
require 'net/http'
@url = '<nowiki>http://wszoeken.edurep.kennisnet.nl:8000/edurep/srwns</nowiki>'
@content = Net::HTTP.get(URI.parse(@url))
doc = REXML::Document.new(@content)
  
## Use xpath to get the number of records and put them in an array.
data = doc.elements.to_a("//srw:numberOfRecords")[0]
puts "Aantal gevonden resultaten: #{data[0]}"
  
## Use xpath to get all titles inside the recordData elements and parse the XML doc.
data = doc.elements.to_a("//srw:recordData")
data.each do |c|
#  Use the html entities decode to get an XML document.
lom = REXML::Document.new(c[0].to_s.decode_entities)
title = lom.elements.to_a("//oai_czp:title/oai_czp:langstring")[0]
puts "titel: #{title[0]}"
end

Het uitvoeren van deze code kan eenvoudig met "ruby sru.rb".