Skip to content

Instantly share code, notes, and snippets.

@sandro
Created January 16, 2009 00:02
Show Gist options
  • Save sandro/47715 to your computer and use it in GitHub Desktop.
Save sandro/47715 to your computer and use it in GitHub Desktop.
require 'rubygems'
require 'httparty'
module HttpConfig
def self.included(base)
base.send :include, HTTParty
base.base_uri 'http://192.168.3.218:8888/bridge/JSONControllerServlet.do'
base.format :json
end
end
class Refinement
include HttpConfig
attr_accessor :dim_id, :name, :querystring, :dimensions
def initialize(dim_id, name, querystring=nil)
@dim_id = dim_id
@name = name
@querystring = querystring
end
def get_dimensions
assign_dimensions(@querystring)
more = @dimensions.detect {|r| r.name == "More..."}
if more
assign_dimensions(more.querystring)
puts "Go DEEPER"
end
end
def assign_dimensions(url)
results = self.class.get('/', :query => url)['Refinements']
thing = results.detect{|thing| thing['Dimensions'].first.has_key?('DimensionValues')}
things = thing['Dimensions'].first['DimensionValues']
@dimensions = things.map do |f|
# puts f.inspect
Refinement.new f['DimValueID'], f['DimValueName'], f['SelectionLink']
end
end
end
class Dimension
include HttpConfig
attr_accessor :refinements
def root
@refinements = []
results = self.class.get('/')
results['Refinements'].each do |res|
meta = res['Dimensions'].first
@refinements << Refinement.new(meta['DimensionID'], meta['DimensionName'], meta['ExpansionLink'])
end
end
end
d = Dimension.new
d.root
# d.refinements[10].get_dimensions
# puts y(d.refinements[10].dimensions)
d.refinements.each do |r|
r.get_dimensions
r.dimensions.each do |d|
puts d.name
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment