Sha256: 3dbb84d6acf006c289ee5dcf6e2bc5328bd8c1d339a27eb5ee69beb273805053
Contents?: true
Size: 1.67 KB
Versions: 2
Compression:
Stored size: 1.67 KB
Contents
# frozen_string_literal: true require "relaton_cen/hit" module RelatonCen # Page of hit collection. class HitCollection < RelatonBib::HitCollection DOMAIN = "https://standards.cen.eu/dyn/www/" # @return [Mechanize] attr_reader :agent # @param ref [String] # @param year [String] def initialize(ref, year = nil) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/MethodLength,Metrics/PerceivedComplexity super ref, year @agent = Mechanize.new agent.user_agent_alias = "Mac Safari" if !ref || ref.empty? @array = [] return end search_page = agent.get "#{DOMAIN}f?p=204:105:0:::::" form = search_page.at "//form" req_body = form.xpath("//input").map do |f| next if f[:name].empty? || f[:name] == "f11" val = case f[:value] when "LANGUAGE_LIST" then 0 when "STAND_REF" then ref else case f[:name] when "p_request" then "S1-S2-S3-S4-S5-S6" when "f10" then "" else f[:value] end end if f[:name] == "f10" then "f10=#{f[:value]}&f11=#{val}" else "#{f[:name]}=#{val}" end end.compact.join("&") resp = agent.post form[:action], req_body @array = hits resp end private # @param resp [Mechanize::Page] # @return [Array<RelatonCen::Hit>] def hits(resp) resp.xpath("//table[@class='dashlist']/tbody/tr/td[2]").map do |h| ref = h.at("strong/a") code = ref.text.strip url = ref[:href] Hit.new({ code: code, url: url }, self) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
relaton-cen-1.9.0 | lib/relaton_cen/hit_collection.rb |
relaton-cen-1.8.pre1 | lib/relaton_cen/hit_collection.rb |