rename the template and remove partials no longer needed
[opensuse:software-o-o.git] / app / controllers / main_controller.rb
1 require 'net/http'
2 require 'gettext_rails'
3
4 class MainController < ApplicationController
5
6   verify :only => :ymp, :params => [:project, :repository, :arch, :binary],
7     :redirect_to => :index
8
9   # these pages are completely static:
10   caches_page :index, :developer, "111", "1112"
11
12   def ymp_with_arch_and_version
13     path = "/published/#{params[:project]}/#{params[:repository]}/#{params[:arch]}/#{params[:binary]}?view=ymp"
14     res = get_from_api(path)
15     render :text => res.body, :content_type => res.content_type
16   end
17
18   def ymp_without_arch_and_version
19     path = "/published/#{params[:project]}/#{params[:repository]}/#{params[:package]}?view=ymp"
20     res = get_from_api(path)
21     render :text => res.body, :content_type => res.content_type
22   end
23
24   def index
25     GetText.locale = "en"
26     render :template => "main/index"
27   end
28
29   def set_release(release)
30     if release == "111"
31        @isos = {}
32        @directory = "http://download.opensuse.org/distribution/11.1"
33        @isos["lang-32"] = "11.1-Addon-Lang-i586"
34        @isos["lang-64"] = "11.1-Addon-Lang-x86_64"
35        @isos["nonoss"] = "11.1-Addon-NonOss-BiArch-i586-x86_64"
36        @isos["kde-64"] = "11.1-KDE4-LiveCD-x86_64"
37        @isos["kde-32"] = "11.1-KDE4-LiveCD-i686"
38        @isos["gnome-64"] = "11.1-GNOME-LiveCD-x86_64"
39        @isos["gnome-32"] = "11.1-GNOME-LiveCD-i686"
40        @isos["dvd-64"] = "11.1-DVD-x86_64"
41        @isos["dvd-32"] = "11.1-DVD-i586"
42        @isos["net-32"] = "11.1-NET-i586"
43        @isos["net-64"] = "11.1-NET-x86_64"
44
45        @releasenotes = "http://www.suse.de/relnotes/i386/openSUSE/11.1/RELEASE-NOTES.en.html"
46        @releasename = "openSUSE 11.1"
47        @repourl = "http://download.opensuse.org/distribution/11.1"
48        @medium = "dvd"
49     elsif release == "112"
50        @isos = {}
51        @directory = "http://download.opensuse.org/distribution/11.2"
52        @isos["lang-32"] = "11.2-Addon-Lang-i586"
53        @isos["lang-64"] = "11.2-Addon-Lang-x86_64"
54        @isos["nonoss"] = "11.2-Addon-NonOss-BiArch-i586-x86_64"
55        @isos["kde-64"] = "11.2-KDE4-LiveCD-x86_64"
56        @isos["kde-32"] = "11.2-KDE4-LiveCD-i686"
57        @isos["gnome-64"] = "11.2-GNOME-LiveCD-x86_64"
58        @isos["gnome-32"] = "11.2-GNOME-LiveCD-i686"
59        @isos["dvd-64"] = "11.2-DVD-x86_64"
60        @isos["dvd-32"] = "11.2-DVD-i586"
61        @isos["net-32"] = "11.2-NET-i586"
62        @isos["net-64"] = "11.2-NET-x86_64"
63
64        @releasenotes = "http://www.suse.de/relnotes/i386/openSUSE/11.2/RELEASE-NOTES.en.html"
65        @releasename = "openSUSE 11.2"
66        @repourl = "http://download.opensuse.org/distribution/11.2"
67        @medium = "dvd"
68     elsif release == "developer"
69        @isos = {}
70        @directory = "http://download.opensuse.org/distribution/11.2-RC2"
71        @isos["lang-32"] = "Addon-Lang-Build0339-i586"
72        @isos["lang-64"] = "Addon-Lang-Build0339-x86_64"
73        @isos["nonoss"] = "Addon-NonOss-BiArch-Build0339-i586-x86_64"
74        @isos["kde-64"] = "KDE4-LiveCD-Build0339-x86_64"
75        @isos["kde-32"] = "KDE4-LiveCD-Build0339-i686"
76        @isos["gnome-64"] = "GNOME-LiveCD-Build0339-x86_64"
77        @isos["gnome-32"] = "GNOME-LiveCD-Build0339-i686"
78        @isos["dvd-64"] = "DVD-Build0339-x86_64"
79        @isos["dvd-32"] = "DVD-Build0339-i586"
80        @isos["net-32"] = "NET-Build0339-i586"
81        @isos["net-64"] = "NET-Build0339-x86_64"
82
83        @releasenotes = "http://www.suse.de/relnotes/i386/openSUSE/11.2/RELEASE-NOTES.en.html"
84        @releasename = "openSUSE 11.2-RC2"
85        @repourl = "http://download.opensuse.org/distribution/11.2"
86        @medium = "dvd"
87     end
88     @release = release
89   end
90
91   def developer
92     if params[:lang].nil?
93       lang = request.compatible_language_from(LANGUAGES) || "en"
94     else
95       lang = params[:lang][0]
96     end
97     redirect_to "/developer/" + lang
98   end
99    
100   def release
101     @lang = params[:lang][0]
102     GetText.locale = @lang
103
104     set_release(params[:release])
105     render :template => "main/release"
106   end
107
108   def change_install
109     set_release(params[:release])
110     @medium = params[:medium]
111     render :template => "main/release"
112   end
113
114   def download_js
115     set_release(params[:release])
116     render :template => "main/download", :content_type => 'text/javascript', :layout => false
117   end
118
119   def download
120     set_release(params[:release])
121     medium = params[:medium]
122
123     if params[:arch] == "i686"
124       medium += "-32"
125     else
126       medium += "-64"
127     end
128
129     suffix = ".iso"
130     
131     case
132     when params[:protocol] == "torrent"
133       if params[:medium] != "net"
134           suffix = ".iso.torrent"
135       end
136     when params[:protocol] == "mirror"
137       suffix = ".iso?mirrorlist"
138     when params[:protocol] == "metalink"
139       suffix = ".iso.metalink"
140     end
141     redirect_to @directory + "/iso/openSUSE-" + @isos[medium] + suffix
142
143   end
144
145   private
146   
147   def get_from_api(path)
148     req = Net::HTTP::Get.new(path)
149     req['x-username'] = "obs_read_only"
150
151     host, port = API_HOST.split(/:/)
152     port ||= 80
153     res = Net::HTTP.new(host, port).start do |http|
154       http.request(req)
155     end
156   end
157 end