Created
May 21, 2010 00:24
-
-
Save jasonm23/408318 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/ruby | |
# convert a legacy config.xml | |
require 'rubygems' | |
require 'active_support' | |
require 'rexml/document' | |
include REXML | |
stdin = ARGF.read | |
if stdin != "" | |
begin | |
x = Document.new stdin | |
locale = x.root.attributes["locale"] | |
menuUrl = x.elements["//setting[@key='menuUrl']"].attributes['value'] | |
minimumMenuRefreshTime = x.elements["//setting[@key='minimumMenuRefreshTime']"].attributes['value'] | |
eventFeedPrefix = x.elements["//setting[@key='eventFeedPrefix']"].attributes['value'] | |
minimumEventRefreshTime = x.elements["//setting[@key='minimumEventRefreshTime']"].attributes['value'] | |
domain = menuUrl.match('http:\/\/(.*)\/')[1] | |
bookingMarketNames = x.elements["//setting[@key='bookingMarketNames']"].attributes['value'] | |
cornerMarketNames = x.elements["//setting[@key='cornerMarketNames']"].attributes['value'] | |
scoreMarketNames = x.elements["//setting[@key='scoreMarketNames']"].attributes['value'] | |
betSlipFunctionName = x.elements["//setting[@key='betSlipFunctionName']"].attributes['value'] | |
dict = x.elements.to_a("//setting[@key='language']//dict") | |
menuAllEvents = x.elements["//setting[@key='menuAllEvents']"].attributes['value'] | |
menu = x.elements.to_a("//setting[@key='menuTopLevel']//menu") | |
imageType = x.elements["//setting[@key='imageType']"].attributes['value'] | |
imageBasePath = x.elements["//setting[@key='imageBasePath']"].attributes['value'] | |
defaultEventImage = x.elements["//setting[@key='defaultEventImage']"].attributes['value'] | |
eventTypeImage = x.elements.to_a("//setting[@key='eventTypeImages']//eventTypeImage") | |
eventImage = x.elements.to_a("//setting[@key='eventImageKeys']//eventImage") | |
# Create the builder... | |
xm = Builder::XmlMarkup.new(:target => $stdout, :indent => 1) | |
xm.instruct! | |
xm.comment! "WARNING: AUTO GENERATED CONFIG (converted) DO NOT EDIT" | |
xm.comment! "orbis feed domain : #{domain}" | |
xm.config( :locale => locale, :name => "config_#{locale}" ) { | |
xm.comment! "service" | |
xm.setting( :key => 'eventService', :value => eventFeedPrefix ) | |
xm.setting( :key => 'minimumEventRefreshTime', :value => minimumEventRefreshTime ) | |
xm.setting( :key => 'menuService', :value => menuUrl ) | |
xm.setting( :key => 'minimumMenuRefreshTime', :value => minimumMenuRefreshTime ) | |
xm.setting( :key => 'serviceDomain', :value => domain ) | |
xm.comment! "javascript interface - betslip function name" | |
xm.setting( :key => 'betSlipFunctionName', :value => betSlipFunctionName ) | |
xm.comment! "market names" | |
xm.setting( :key => 'bookingMarketNames', :value => bookingMarketNames ) | |
xm.setting( :key => 'cornerMarketNames', :value => cornerMarketNames ) | |
xm.setting( :key => 'scoreMarketNames', :value => scoreMarketNames ) | |
xm.comment! "language" | |
xm.setting( :key => 'language' ) { | |
dict.each { |mx| | |
xm.dict( :key => mx.attributes['key'], :value => mx.attributes['value'] ) | |
} | |
xm.dict( :key => 'menuAllEvents', :value => menuAllEvents ) | |
} | |
xm.comment! "menu" | |
xm.setting( :key => 'menuTopLevel' ) { | |
menu.each { |mx| | |
xm.menu( :name => mx.attributes['name'], :key => mx.attributes['key'], :filter => mx.attributes['filter'], :order => mx.attributes['order'] ) | |
} | |
} | |
xm.comment! "runtime images" | |
xm.setting( :key => 'defaultEventImage', :value => defaultEventImage ) | |
xm.setting( :key => 'imageBasePath', :value => imageBasePath ) | |
xm.setting( :key => 'imageType', :value => imageType ) | |
xm.comment! "image - event id" | |
xm.setting( :key => 'eventTypeImages' ) { | |
eventImage.each { |ex| | |
xm.eventImage( :key => ex.attributes['key'], :value => ex.attributes['value'].match(/(.*)(\.png)/)[1] ) | |
} | |
} | |
xm.comment! "event type images" | |
xm.setting( :key => 'eventTypeImages' ) { | |
eventTypeImage.each { |ex| | |
xm.eventTypeImage( :filename => ex.attributes['filename'].match(/(.*)(\.png)/)[1] ) | |
} | |
} | |
} | |
rescue | |
puts "incoming config format not recognised" | |
end | |
else | |
puts "Usage: source | ./convert.rb > dest" | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/ruby | |
=begin | |
This is a simple config importer, needs to be integrated into a controller (eg.) | |
controllers/ConfigurationsController::import | |
And a view(s) for getting the import file and showing error / successs | |
views/configuration/import.dryml | |
Or better still, add import functionality to the configurations/index view | |
=end | |
require 'rubygems' | |
require 'active_support' | |
require 'rexml/document' | |
include REXML | |
## input comes from uploaded file... http://google.com/search?q=upload+file+ruby+rails | |
infileText = "" | |
if infileText != "" | |
begin | |
x = Document.new infileText | |
locale = x.root.attributes["locale"] | |
menuUrl = x.elements["//setting[@key='menuUrl']"].attributes['value'] | |
minimumMenuRefreshTime = x.elements["//setting[@key='minimumMenuRefreshTime']"].attributes['value'] | |
eventFeedPrefix = x.elements["//setting[@key='eventFeedPrefix']"].attributes['value'] | |
minimumEventRefreshTime = x.elements["//setting[@key='minimumEventRefreshTime']"].attributes['value'] | |
domain = menuUrl.match('http:\/\/(.*)\/')[1] | |
bookingMarketNames = x.elements["//setting[@key='bookingMarketNames']"].attributes['value'].split(';') | |
cornerMarketNames = x.elements["//setting[@key='cornerMarketNames']"].attributes['value'].split(';') | |
scoreMarketNames = x.elements["//setting[@key='scoreMarketNames']"].attributes['value'].split(';') | |
betSlipFunctionName = x.elements["//setting[@key='betSlipFunctionName']"].attributes['value'] | |
dict = x.elements.to_a("//setting[@key='language']//dict") | |
menu = x.elements.to_a("//setting[@key='menuTopLevel']//menu") | |
imageType = x.elements["//setting[@key='imageType']"].attributes['value'] | |
imageBasePath = x.elements["//setting[@key='imageBasePath']"].attributes['value'] | |
defaultEventImage = x.elements["//setting[@key='defaultEventImage']"].attributes['value'] | |
eventTypeImage = x.elements.to_a("//setting[@key='eventTypeImages']//eventTypeImage") | |
eventImage = x.elements.to_a("//setting[@key='eventImageKeys']//eventImage") | |
# Create the config... | |
conf = Configuration.new | |
conf.name = "config_#{locale}" | |
conf.locale = locale | |
conf.minimumMenuRefreshTime = minimumMenuRefreshTime | |
conf.minimumEventRefreshTime = minimumEventRefreshTime | |
conf.betSlipFunctionName = betSlipFunctionName | |
conf.imageType = imageType | |
conf.imageBasePath = imageBasePath | |
conf.defaultEventImage = defaultEventImage | |
conf.create | |
cfgId = conf.id | |
# menu | |
menu.each { |mx| | |
mn = Menu.new | |
mn.translate = mx.attributes['name'] | |
mn.name = mx.attributes['key'] | |
mn.filterClass = mx.attributes['filter'] | |
mn.order = mx.attributes['order'] | |
mn.configuration_id = cfgId | |
mn.create | |
} | |
# language | |
dict.each { |d| | |
t = Translation.new | |
t.name = d.attributes['key'] | |
t.translate = d.attributes['value'] | |
t.configuration_id = cfgId | |
t.create | |
} | |
# Markets... | |
scoreMarketNames.each { |name| | |
m = ScoreMarketName.new | |
m.name = name | |
m.configuration_id = cfgId | |
m.create | |
} | |
cornerMarketNames.each { |name| | |
m = CornerMarketName.new | |
m.name = name | |
m.configuration_id = cfgId | |
m.create | |
} | |
bookingMarketNames.each { |name| | |
m = BookingMarketName.new | |
m.name = name | |
m.configuration_id = cfgId | |
m.create | |
} | |
# Services - probably better to make this straight yaml - but what-the-hey! | |
defaultServices = [ | |
{ | |
:name => "Live", | |
:menuService => "bir_xml_feed?action=category%26ev_category=1", | |
:eventService => "bir_xml_feed?action=event%26ev_id=", | |
:domain => "centrebet.com" | |
}, | |
{ | |
:name => "UAT", | |
:menuService => "bir_xml_feed?action=category%26ev_category=1", | |
:eventService => "bir_xml_feed?action=event%26ev_id=", | |
:domain => "puntuat1.com" | |
}, | |
{ | |
:name => "Test1", | |
:menuService => "bir_xml_feed?action=category%26ev_category=1", | |
:eventService => "bir_xml_feed?action=event%26ev_id=", | |
:domain => "punttest1.com" | |
}, | |
{ | |
:name => "Test", | |
:menuService => "bir_xml_feed?action=category%26ev_category=5", | |
:eventService => "bir_xml_feed?action=event%26ev_id=", | |
:domain => "203.42.122.7" | |
} | |
] | |
defaultServices.each { |serv| | |
se = Service.new | |
se.name = serv[:name] | |
se.menuService = serv[:domain] + serv[:menuService] | |
se.eventService = serv[:domain] + serv[:eventService] | |
se.domain = serv[:domain] | |
se.configuration_id = cfgId | |
se.create | |
} | |
rescue | |
# redirect to error page #1 | |
end | |
else | |
# redirect to error page #2 | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment