#!/usr/bin/env ruby
#encoding: utf-8
require 'savon'
require 'pry'
RefDataPartnerService = 'http://refdatabase.refdata.ch/Service/Partner.asmx?WSDL'
puts RefDataPartnerService
client = Savon.client(wsdl: RefDataPartnerService)
body = %(
ALL
ALL
)
if false
response = client.call(:download, xml: body)
puts "found #{response.body[:partner][:item].size} partners"
File.open("partner.txt", 'w+') do |f| response.body[:partner][:item].each{ | item| f.puts item } end
end
RefDataArticleService = 'http://refdatabase.refdata.ch/Service/Article.asmx?WSDL'
x = %(
Für die Integration in Softwarelösungen von Dritten ist die refdatabase auch via Webservices verfügbar.
Diese Services sind mit dem Standard WSDL dokumentiert (via untenstehende Links, dort jeweils „Service Description“ anwählen).
Beim Datenbezug sind die Auswahlkriterien mitzugeben (TYPE: Suchfeld, TERM: Suchbegriff, ATYPE bzw. PTYPE: Typ der Suchresultate).
Zudem ist mit TYPE = ALL ein vollständiger Datendownload möglich und mit TYPE = DATE können später alle Mutationen seit dem letzten Downloaddatum gesucht werden.
Diese Services sind via folgende URLs öffentlich verfügbar:
)
puts Time.now
client = Savon.client(wsdl: RefDataArticleService)
body = %(
ALL
)
response = client.call(:download, xml: body)
puts "found #{response.body[:article][:item].size} articles"
puts Time.now
File.open("article.txt", 'w+') do |f| response.body[:article][:item].each{ | item| f.puts item } end
puts Time.now
exit
binding.pry
# Not working
class ServiceRequest
def to_s
builder = Builder::XmlMarkup.new
builder.instruct!(:xml, encoding: "UTF-8")
builder.Body { |body|
body.DownloadArticleInput { |b|
b.ATYPE("PHARMA")
}
}
builder
end
end
ServiceRequest.new
client.call(:download, message: ServiceRequest.new)
# http://refdatabase.refdata.ch/Article_in
response = client.call(:download_article_input, message(:ATYPE => 'PHARMA'))
# client.call(:download, message: { TYPE: 'ALL', ATYPE: 'PHARMA' }) -> Invalid Parameter
pp response.body