summaryrefslogtreecommitdiff
path: root/db-import-pick-mirror
blob: 4d01b953e38e810ecb00904c9b7bc4a9628896ce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/usr/bin/env ruby

require 'json'
require 'net/http'

protocol = ARGV[0]
jsonurl = ARGV[1]

data = JSON::parse(Net::HTTP.get(URI(jsonurl)))

if data["version"] != 3
	print "Data format version != 3"
	exit 1
end

# Filter out URLs with incomplete information
urls = data["urls"].select{|a| a.none?{|k,v|v.nil?}}
rsync_urls = urls.select{|a| a["protocol"]==protocol}

# By score ( (delay+speed)/completion )
#best = rsync_urls.sort{|a,b| (a["score"] || Float::INFINITY) <=> (b["score"] || Float::INFINITY) }.first
# By delay/completion
best = rsync_urls.sort{|a,b| a["delay"]/a["completion_pct"] <=> b["delay"]/b["completion_pct"] }.first

puts best["url"]