Module: Hyperfeed::ResourceBuilder
- Included in:
- Client
- Defined in:
- lib/hyperfeed/resource_builder.rb
Instance Method Summary collapse
- #build_results(feed) ⇒ Object
- #collect_fields(item) ⇒ Object
- #generate_id(item) ⇒ Object
- #get_media(item) ⇒ Object
- #get_resource(feed, id) ⇒ Object
- #retrieve_resources_list(feed, options = {}) ⇒ Object
Instance Method Details
#build_results(feed) ⇒ Object
62 63 64 65 66 67 68 69 |
# File 'lib/hyperfeed/resource_builder.rb', line 62 def build_results(feed) results = [] feed.content.xpath("//item").each do |item| id = generate_id(item) results << collect_fields(item) end results end |
#collect_fields(item) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/hyperfeed/resource_builder.rb', line 49 def collect_fields(item) resource = {:id => generate_id(item)} item.children.reject{ |x| x.name == "text" }.each do |node| if node.name == "enclosure" resource[:enclosure] ||= [] resource[:enclosure] << get_media(node) else resource[node.name.downcase.to_sym] = node.inner_text.strip end end resource end |
#generate_id(item) ⇒ Object
44 45 46 47 |
# File 'lib/hyperfeed/resource_builder.rb', line 44 def generate_id(item) link = (item.xpath("link") || item.xpath("guid")).inner_text Digest::MD5.hexdigest(link) end |
#get_media(item) ⇒ Object
14 15 16 17 18 19 20 21 22 23 |
# File 'lib/hyperfeed/resource_builder.rb', line 14 def get_media(item) media = { :url => item.attr("url").strip, :type => item.attr("type").strip, } item.children.reject{ |x| x.name == "text" }.each do |node| media[node.name.to_sym] = node.inner_text.strip end media end |
#get_resource(feed, id) ⇒ Object
6 7 8 9 10 11 12 |
# File 'lib/hyperfeed/resource_builder.rb', line 6 def get_resource(feed, id) item = feed.content.xpath("//item").find { |i| generate_id(i) == id } return nil unless item collect_fields(item).extend(Methodize) end |
#retrieve_resources_list(feed, options = {}) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/hyperfeed/resource_builder.rb', line 25 def retrieve_resources_list(feed, ={}) total = feed.content.xpath("//item").size per_page = ([:per_page] || 10).to_i page = ([:page] || 1).to_i results = build_results(feed).each_slice(per_page).to_a total_pages = results.size results = results[page-1] resource = {:per_page => per_page, :current_page => page, :total_pages => total_pages, :total_results => total, :result => results }.extend(Methodize) end |