class Shaf::ApiDoc::LinkRelations

Constants

IANA_URL

Public Class Methods

[](key) click to toggle source
# File lib/shaf/api_doc/link_relations.rb, line 29
def [](key)
  relations[key]
end
[]=(key, value) click to toggle source
# File lib/shaf/api_doc/link_relations.rb, line 33
def []=(key, value)
  relations[key] = value
end
add(link_relation) click to toggle source
# File lib/shaf/api_doc/link_relations.rb, line 37
def add(link_relation)
  relations[link_relation.name] = link_relation
end
all() click to toggle source
# File lib/shaf/api_doc/link_relations.rb, line 25
def all
  relations.values
end
load_iana() click to toggle source
# File lib/shaf/api_doc/link_relations.rb, line 41
def load_iana
  csv.each do |name, desc, ref, notes|
    next if name == 'Relation Name'
    add LinkRelation.new(name, desc, ref, notes)
  end
end

Private Class Methods

csv() click to toggle source
# File lib/shaf/api_doc/link_relations.rb, line 58
def csv
  if File.readable? tmp_file_name
    content = File.read(tmp_file_name)
    return CSV.new(content)
  end

  response = Net::HTTP.get_response(IANA_URL)

  if response.code.to_i == 200
    content = response.body
    File.open(tmp_file_name, 'w') { |file| file.write(content) }
    CSV.new(content)
  else
    Utils.iana_link_relations_csv
  end
end
relations() click to toggle source
# File lib/shaf/api_doc/link_relations.rb, line 50
def relations
  @relations ||= {}
end
tmp_file_name() click to toggle source
# File lib/shaf/api_doc/link_relations.rb, line 54
def tmp_file_name
  File.join(Dir.tmpdir, 'shaf_iana_link_relations')
end