All pastes #243413 Raw Edit

Untitled

public ruby v1 · immutable
·published 2006-11-08 13:01 UTC
rendered paste body
class XMLFetcher        include Net        include REXML        def initialize(host,ssl = true)                @http = HTTP.new(host, 443)                @http.use_ssl = ssl        end        def fetch_groups(cid)                @http.start do |http|                        req = HTTP::Get.new("/XML/partner/xml.x?partner=31af78b22fdsfsdfd90128f392bab6ca405eba817&type=group&cid=#{cid}")                        response = http.request(req)                        doc = Document.new(response.body)                        return doc                end        end        def fetch_subcategories(cid,gid)                @http.start do |http|                        req = HTTP::Get.new("/XML/partner/xml.x?partner=31af7228fdsfdsbd90128ffdsf392bab6ca405eba817&type=subcategory&cid=#{cid}&gid=#{gid}")                        response = http.request(req)                        doc = Document.new(response.body)                        return doc                end        endendclass StatusDisplay        def initialize(name)                @counter = 0                @counter2 = 0                @name = name                @lastup = Time.now        end        def add_node                @counter2 += 1                show        end        def add_tick                @counter += 1                show        end        def show                if (Time.now - @lastup) > 1                        @lastup = Time.now                        puts "#{@name} - node: #{@counter2}, task: #{@counter}"                end        endend# load all database classes in app/models :-)class_dir = Pathname.new("prisguideweb/app/models")class_dir.children.each do |child|        require childend# connect to dbActiveRecord::Base.establish_connection({  :adapter => 'postgresql',  :database => 'prispartner',  :username => 'pgsql',  :password => '',  :host => 'localhost',})dsp = StatusDisplay.new("categories")                dsp.showremote_xml = XMLFetcher.new('www.dinpris.no')categories = Category.find(:all)categories.each do |cat|        dsp.add_node        xml_doc = remote_xml.fetch_groups(cat.category_id)        xml_doc.root.each_element('//group') do |node|                dsp.add_tick                group = Group.find(:first, :conditions => ['group_id = ? AND category_id = ? and language_id = 1', node.text('id'), cat.category_id])                unless group.nil?                        group.name = node.text('name') unless group.name == node.text('name')                else                        group = Group.create(:group_id => node.text('id'), :category_id => cat.category_id, :language_id => 1, :name => node.text('name'))                end        endenddsp = StatusDisplay.new("groups")groups = Group.find(:all)groups.each do |grp|        dsp.add_node        xml_doc = remote_xml.fetch_subcategories(grp.category_id, grp.group_id)        xml_doc.root.each_element('//subcategory') do |node|                dsp.add_tick                subcategory = Subcategory.find(:first, :conditions => ['subcategory_id = ? AND group_id = ? and language_id = 1', node.text('id'), grp.group_id])                unless subcategory.nil?                        subcategory.name = node.text('name') unless subcategory.name == node.text('name')                else                        subcategory = Subcategory.create(:subcategory_id => node.text('id'), :group_id => grp.group_id, :language_id => 1, :name => node.text('name'))                end        endend