A tool for measuring the coverage of Bluesky/ATProto relays
9
fork

Configure Feed

Select the types of activity you want to include in your feed.

added links to relay operators

+16 -2
+15 -1
server.rb
··· 9 9 require_relative 'report' 10 10 11 11 $config = YAML.load(File.read(SOURCES)) 12 - $owners = ($config['relays'] + $config['jetstreams']).map { |x| x.is_a?(Hash) ? [x['host'], x['owner']] : [x, nil] }.then { Hash[it] } 12 + $owners = ($config['relays'] + $config['jetstreams']).map { |x| x.is_a?(Hash) ? [x['host'], x] : [x, nil] }.then { Hash[it] } 13 13 14 14 helpers do 15 15 def format_num(n) 16 16 n.to_s.reverse.gsub(/(\d\d\d(?!$))/, "\\1,").reverse 17 + end 18 + 19 + def owner_link(report) 20 + if data = $owners[report.host] 21 + if data['owner'] && data['owner_link'] 22 + %(<a href="#{data['owner_link']}" target="_blank">#{data['owner']}</a>) 23 + elsif data['owner'].to_s.start_with?('@') 24 + %(<a href="https://bsky.app/profile/#{data['owner']}" target="_blank">#{data['owner']}</a>) 25 + elsif data['owner'] 26 + data['owner'] 27 + else 28 + nil 29 + end 30 + end 17 31 end 18 32 end 19 33
+1 -1
views/index.erb
··· 21 21 <tr> 22 22 <td><a href="https://<%= report.host %>" target="_blank"><%= report.host %><a></td> 23 23 <td><%= report.source_type %></td> 24 - <td><%= $owners[report.host] %></td> 24 + <td><%= owner_link(report) %></td> 25 25 <td class="number"><%= format_num(report.users) %></td> 26 26 <td class="number"><%= format_num(report.events) %></td> 27 27 <td class="number"><%= format('%.2f%%', percent) %></td>