module DomainReport
IRC reply cards for domain availability and registrar pricing.
Constants
- STYLE_BANNER
- TAG
Public Instance Methods
Source
# File lib/domain_report.rb, line 66 def body_rows(rdap, quotes) rows = [] rows << status_line(rdap) rows.concat(detail_lines(rdap)) rows.concat(provider_lines(quotes, rdap)) rows.compact.reject { |line| line.to_s.strip.empty? } end
Source
# File lib/domain_report.rb, line 86 def detail_lines(rdap) lines = [] lines << "Registrar: #{rdap[:registrar]}" if rdap[:registrar] && !rdap[:registrar].to_s.strip.empty? lines << "Expires: #{rdap[:expires_on]}" if rdap[:expires_on] lines << "Flags: #{rdap[:status]}" if rdap[:status] && !rdap[:status].to_s.strip.empty? lines end
Source
# File lib/domain_report.rb, line 32 def format(domain:, rdap:, quotes:, source_query: nil, tried_domains: nil, variation_rows: nil) title = heading_title(domain, rdap) body_lines = body_rows(rdap, quotes) body_lines.concat(variation_lines(variation_rows)) if variation_rows && !variation_rows.empty? footer_parts = footer_meta( rdap, quotes, source_query: source_query, tried_domains: tried_domains, variation_rows: variation_rows ) IrcReply.card( tag: TAG, title: title, body_lines: body_lines, footer_parts: footer_parts, heading_style: STYLE_BANNER ) end
Source
# File lib/domain_report.rb, line 53 def heading_title(domain, rdap) status = if rdap[:error] "lookup failed" elsif rdap[:available] "available" elsif rdap[:available] == false "taken" else "unknown" end "#{domain} 路 #{status}" end
Source
# File lib/domain_report.rb, line 24 def invalid IrcReply.error( tag: TAG, message: "That does not look like a valid domain name.", heading_style: STYLE_BANNER ) end
Source
# File lib/domain_report.rb, line 94 def provider_lines(quotes, rdap) return ["Pricing: unavailable right now"] if quotes.empty? available = rdap[:available] != false rows = quotes.map do |quote| { label: quote[:provider], value: provider_value(quote, available: available) } end ReplyLayout.align_colon_body(rows) end
Source
# File lib/domain_report.rb, line 107 def provider_value(quote, available:) return quote[:detail] if quote[:supported] == false parts = [] parts << (quote[:available] ? "available" : "taken") if quote.key?(:available) if available parts << "register #{quote[:register]}" if quote[:register] parts << "renew #{quote[:renew]}" if quote[:renew] elsif quote[:renew] parts << "renew #{quote[:renew]}" end parts << quote[:detail] if quote[:detail] parts.reject { |part| part.to_s.strip.empty? }.join(" 路 ") end
Source
# File lib/domain_report.rb, line 74 def status_line(rdap) if rdap[:error] "RDAP: #{rdap[:error]}" elsif rdap[:available] "Status: available to register" elsif rdap[:available] == false "Status: already registered" else "Status: availability unknown" end end
Source
# File lib/domain_report.rb, line 16 def usage IrcReply.error( tag: TAG, message: "Give me a domain name, e.g. !domain example.com or !domain 100.ideas", heading_style: STYLE_BANNER ) end
Source
# File lib/domain_report.rb, line 122 def variation_lines(rows) return [] if rows.nil? || rows.empty? body_rows = rows.map do |row| { label: row[:domain], value: variation_value(row[:quotes], row[:rdap]) } end ["Variations:"] + ReplyLayout.align_colon_body(body_rows) end
Source
# File lib/domain_report.rb, line 134 def variation_value(quotes, rdap) return "taken" if rdap[:available] == false porkbun = quotes.find { |quote| quote[:provider] == "Porkbun" } return "not supported" if porkbun.nil? || porkbun[:supported] == false parts = [] parts << "register #{porkbun[:register]}" if porkbun[:register] parts << "renew #{porkbun[:renew]}" if porkbun[:renew] summary = parts.join(" 路 ") summary.empty? ? "unavailable" : summary end