Sha256: 8f3dbd8ecbfc2b7cc3b60500129084a461f6bc43c26b2eb7cff73d458fab7287
Contents?: true
Size: 1.34 KB
Versions: 2
Compression:
Stored size: 1.34 KB
Contents
# frozen_string_literal: true module MarketplaceOpportunityScraper module Utils private def build_url(type, status) check_type(type) check_status(status) url = BASE_URL + '/digital-outcomes-and-specialists/opportunities' h = { lot: type, statusOpenClosed: status }.reject { |_k, v| v.nil? } params = URI.encode_www_form(h) "#{url}?#{params}" end def check_params(param, type) return if param.nil? valid_array = send("valid_#{type}") raise(ArgumentError, "#{param} is not a valid #{type}. Must be one of #{valid_array.join(' ')}") unless valid_array.include?(param) end def check_type(type) check_params(type, 'types') end def check_status(status) check_params(status, 'statuses') end def valid_types %w[digital-outcomes digital-specialists user-research-participants] end def valid_statuses %w[open closed] end def text_from_label(page, label) find_by_label(page, label).text.strip end def date_from_label(page, label) Date.parse(text_from_label(page, label)) rescue ArgumentError nil end def find_by_label(page, label) selector = "//td[@class='summary-item-field-first']/span[text()='#{label}']/../../td[@class='summary-item-field']" page.search(selector) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
marketplace_opportunity_scraper-0.1.2 | lib/marketplace_opportunity_scraper/utils.rb |
marketplace_opportunity_scraper-0.1.1 | lib/marketplace_opportunity_scraper/utils.rb |