Class: XriResolver::SEPList

Inherits:
Array
  • Object
show all
Defined in:
lib/xri_resolver.rb

Instance Method Summary collapse

Constructor Details

#initialize(xrds, xrd) ⇒ SEPList

Returns a new instance of SEPList.



904
905
906
907
# File 'lib/xri_resolver.rb', line 904

def initialize(xrds, xrd)
  @xrds = xrds
  @xrd = xrd
end

Instance Method Details

#reds?Boolean

Returns:

  • (Boolean)


929
930
931
# File 'lib/xri_resolver.rb', line 929

def reds?
  not to_list('Redirect').empty?
end

#refs?Boolean

Returns:

  • (Boolean)


925
926
927
# File 'lib/xri_resolver.rb', line 925

def refs?
  not to_list('Ref').empty?
end

#to_redlistObject



917
918
919
# File 'lib/xri_resolver.rb', line 917

def to_redlist
  to_list('Redirect')
end

#to_reflistObject



913
914
915
# File 'lib/xri_resolver.rb', line 913

def to_reflist
  to_list('Ref')
end

#to_urilistObject



909
910
911
# File 'lib/xri_resolver.rb', line 909

def to_urilist
  to_list('URI')
end

#to_xrdObject



933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
# File 'lib/xri_resolver.rb', line 933

def to_xrd
  ## sort SEPs by value of "priority" attribute
  seplist = Array.new
  self.each do |sep, flag|
    sep_pri = sep.attribute('priority') ? sep.attribute('priority').value : 0xFFFF
    seplist << [sep_pri, sep]
  end
  seplist.sort! { |x, y| Common.prioritize x[0], y[0] }

  ## remove all existing xrd:Service elements
  newxrd = @xrd.clone
  REXML::XPath.match(@xrd, "*[not(local-name()='Service')]", XRDNS).each do |ele|
    newxrd << ele
  end

  ## re-add selected and sorted xrd:Service elements per 6.2.2
  priority = 0
  seplist.each do |sep_pri, sep|
    sep.delete_attribute('priority')
    sep.add_attribute('priority', priority.to_s)
    priority += 1
    newxrd << sep
  end
  REXML::Document.new(newxrd.to_s)
end

#uris?Boolean

Returns:

  • (Boolean)


921
922
923
# File 'lib/xri_resolver.rb', line 921

def uris?
  not to_list('URI').empty?
end