introduce flavors (distro groups)
[opensuse:software-o-o.git] / app / controllers / download_controller.rb
1 class DownloadController < ApplicationController
2
3   verify :params => [:prj, :pkg]
4   before_filter :prepare
5
6   # generates fake data
7   def fake_data(data, prj, pkg, flavor, distro, format)
8     data[distro] = { :flavor => flavor,
9       :repo => "http://download.opensuse.org/repositories/#{prj}/#{distro}/",
10       :ymp => "http://software.opensuse.org/ymp/#{prj}/#{distro}/#{pkg}.ymp",
11       :pkg => {
12         :i586 => "http://download.opensuse.org/repositories/#{prj}/#{distro}/i586/#{pkg}-2011.04-1.1.i586.#{format}",
13         :src => "http://download.opensuse.org/repositories/#{prj}/#{distro}/src/#{pkg}-2011.04-1.1.src.#{format}",
14         :x86_64 => "http://download.opensuse.org/repositories/#{prj}/#{distro}/x86_64/#{pkg}-2011.04-1.1.x86_64.#{format}"
15       }
16     }
17   end
18
19   def prepare
20     @prj = params[:prj]
21     @pkg = params[:pkg]
22     @data = Hash.new
23
24     # add fake data for debug purposes
25     fake_data(@data, @prj, @pkg, 'openSUSE', 'openSUSE_11.4', 'rpm')
26     fake_data(@data, @prj, @pkg, 'openSUSE', 'openSUSE_11.3', 'rpm')
27     fake_data(@data, @prj, @pkg, 'openSUSE', 'KDE_Distro_Stable_openSUSE_11.3', 'rpm')
28     fake_data(@data, @prj, @pkg, 'openSUSE', 'KR46_11.4', 'rpm')
29     fake_data(@data, @prj, @pkg, 'Fedora', 'Fedora_15', 'rpm')
30     fake_data(@data, @prj, @pkg, 'Fedora', 'Fedora_14', 'rpm')
31     fake_data(@data, @prj, @pkg, 'Mageia', 'Mageia_1', 'rpm')
32     fake_data(@data, @prj, @pkg, 'Mandriva', 'Mandriva_2011', 'rpm')
33     fake_data(@data, @prj, @pkg, 'Debian', 'Debian_6.0', 'deb')
34     fake_data(@data, @prj, @pkg, 'Ubuntu', 'Ubuntu_11.04', 'deb')
35     fake_data(@data, @prj, @pkg, 'CentOS', 'CentOS_5', 'rpm')
36     fake_data(@data, @prj, @pkg, 'RHEL', 'RHEL_5', 'rpm')
37     fake_data(@data, @prj, @pkg, 'SLE', 'SLE_11', 'rpm')
38
39     # collect distro types from data
40     @flavors = @data.values.collect { |i| i[:flavor] }.uniq.sort{|x,y| x.downcase <=> y.downcase }
41
42   end
43
44   # /download.html?prj=name&pkg=name
45   def html
46     render :html, :layout => false
47   end
48
49   # /download.js?prj=name&pkg=name
50   def js
51     render :js, :layout => false
52   end
53
54   # /download.json?prj=name&pkg=name
55   def json
56     # needed for rails < 3.0 to support JSONP
57     render_json @data.to_json
58   end
59
60 end