- promodvd order form
[opensuse:software-o-o.git] / app / controllers / main_controller.rb
1 require 'net/http'
2
3 class MainController < ApplicationController
4   verify :only => :ymp, :params => [:project, :repository, :arch, :binary],
5     :redirect_to => :index
6
7   def index
8   end
9
10   def developer
11   end
12
13   def promodvd
14   end
15
16   def promo_submit
17     #TODO: reject when not all mandatory fields are filled
18     #
19     Promomailer.deliver_promo_order params[:order]
20   end
21
22   def old_dist
23     dist = params[:dist]
24     begin
25       render :template => "main/old_#{dist}.rhtml"
26     rescue Object
27       @message = "No old page found for dist #{10.2}"
28       render :template => "error", :status => 404
29     end
30   end
31
32   def ymp_with_arch_and_version
33     path = "/published/#{params[:project]}/#{params[:repository]}/#{params[:arch]}/#{params[:binary]}?view=ymp"
34     res = get_from_api(path)
35     render :text => res.body, :content_type => res.content_type
36   end
37
38   def ymp_without_arch_and_version
39     path = "/published/#{params[:project]}/#{params[:repository]}/#{params[:package]}?view=ymp"
40     res = get_from_api(path)
41     render :text => res.body, :content_type => res.content_type
42   end
43
44   private
45   def get_from_api(path)
46     req = Net::HTTP::Get.new(path)
47     req['x-username'] = "obs_read_only"
48
49     host, port = API_HOST.split(/:/)
50     port ||= 80
51     res = Net::HTTP.new(host, port).start do |http|
52       http.request(req)
53     end
54   end
55 end