Skip to content

Commit

Permalink
replace fake data with the real API calls
Browse files Browse the repository at this point in the history
  • Loading branch information
prusnak committed Jul 14, 2011
1 parent ccae53b commit 832a46f
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 32 deletions.
92 changes: 60 additions & 32 deletions app/controllers/download_controller.rb
Expand Up @@ -3,42 +3,53 @@ class DownloadController < ApplicationController
verify :params => [:prj, :pkg]
before_filter :prepare

# generates fake data
def fake_data(data, prj, pkg, flavor, distro, format)
data[distro] = { :flavor => flavor,
:repo => "http://download.opensuse.org/repositories/#{prj}/#{distro}/",
:ymp => "http://software.opensuse.org/ymp/#{prj}/#{distro}/#{pkg}.ymp",
:pkg => {
:i586 => "http://download.opensuse.org/repositories/#{prj}/#{distro}/i586/#{pkg}-2011.04-1.1.i586.#{format}",
:src => "http://download.opensuse.org/repositories/#{prj}/#{distro}/src/#{pkg}-2011.04-1.1.src.#{format}",
:x86_64 => "http://download.opensuse.org/repositories/#{prj}/#{distro}/x86_64/#{pkg}-2011.04-1.1.x86_64.#{format}"
}
}
end

def prepare
@prj = params[:prj]
@pkg = params[:pkg]
@data = Hash.new

# add fake data for debug purposes
fake_data(@data, @prj, @pkg, 'openSUSE', 'openSUSE_11.4', 'rpm')
fake_data(@data, @prj, @pkg, 'openSUSE', 'openSUSE_11.3', 'rpm')
fake_data(@data, @prj, @pkg, 'openSUSE', 'KDE_Distro_Stable_openSUSE_11.3', 'rpm')
fake_data(@data, @prj, @pkg, 'openSUSE', 'KR46_11.4', 'rpm')
fake_data(@data, @prj, @pkg, 'Fedora', 'Fedora_15', 'rpm')
fake_data(@data, @prj, @pkg, 'Fedora', 'Fedora_14', 'rpm')
fake_data(@data, @prj, @pkg, 'Mageia', 'Mageia_1', 'rpm')
fake_data(@data, @prj, @pkg, 'Mandriva', 'Mandriva_2011', 'rpm')
fake_data(@data, @prj, @pkg, 'Debian', 'Debian_6.0', 'deb')
fake_data(@data, @prj, @pkg, 'Ubuntu', 'Ubuntu_11.04', 'deb')
fake_data(@data, @prj, @pkg, 'CentOS', 'CentOS_5', 'rpm')
fake_data(@data, @prj, @pkg, 'RHEL', 'RHEL_5', 'rpm')
fake_data(@data, @prj, @pkg, 'SLE', 'SLE_11', 'rpm')

# collect distro types from data
@flavors = @data.values.collect { |i| i[:flavor] }.uniq.sort{|x,y| x.downcase <=> y.downcase }

api_result = get_from_api("/search/published/binary/id?match=project='#{@prj}'+and+package='#{@pkg}'")
if api_result
@data = Hash.new
api_result.elements.each("/collection/binary") { |e|
distro = e.attributes[:repository]
if not data.has_key?(distro)
data[distro] = {
:repo => "http://download.opensuse.org/repositories/#{@prj}/#{distro}/",
:pkg => Hash.new
}
case e.attributes[:baseproject]
when /^openSUSE:/
data[distro][:flavor] = 'openSUSE'
data[distro][:ymp] = "http://software.opensuse.org/ymp/#{@prj}/#{distro}/#{@pkg}.ymp"
when /^SUSE:SLE-/
data[distro][:flavor] = 'SLE'
when /^Fedora:/
data[distro][:flavor] = 'Fedora'
when /^RedHat:RHEL-/
data[distro][:flavor] = 'RHEL'
when /^CentOS:CentOS-/
data[distro][:flavor] = 'CentOS'
when /^Mandriva:/
data[distro][:flavor] = 'Mandriva'
when /^Mageia:/
data[distro][:flavor] = 'Mageia'
when /^Debian:/
data[distro][:flavor] = 'Debian'
when /^Ubuntu:/
data[distro][:flavor] = 'Ubuntu'
else
data[distro][:flavor] = 'Unknown'
end
end
filename = e.attributes[:filename]
filepath = e.attributes[:filepath]
data[distro][:pkg][filename] = 'http://download.opensuse.org/repositories/' + filepath
}
# collect distro types from data
@flavors = @data.values.collect { |i| i[:flavor] }.uniq.sort{|x,y| x.downcase <=> y.downcase }
else
head :forbidden
end
end

# /download.html?prj=name&pkg=name
Expand All @@ -57,4 +68,21 @@ def json
render_json @data.to_json
end

private

def get_from_api(path)
begin
req = Net::HTTP::Get.new(path)
req['x-username'] = ICHAIN_USER
host, port = API_HOST.split(/:/)
port ||= 80
res = Net::HTTP.new(host, port).start do |http|
http.request(req)
end
doc = REXML::Document.new res.body
rescue
nil
end
end

end
1 change: 1 addition & 0 deletions app/views/download/html.erb
Expand Up @@ -26,6 +26,7 @@ body {
}
.soo_line span {
float: right;
cursor: pointer;
}
.soo_line_visible {
display: block;
Expand Down
Binary file added public/images/download/unknown.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 832a46f

Please sign in to comment.