Class: XriResolver::ParseInputParameters

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params = {}, accept_headers = "") ⇒ ParseInputParameters

Returns a new instance of ParseInputParameters.



968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
# File 'lib/xri_resolver.rb', line 968

def initialize(params={}, accept_headers="")
  if params.instance_of?(Hash)
    symparams = Hash.new
    params.each { |k,v| symparams[k.to_sym] = v }
    params = symparams
  end
  param_inputs = parse_query_params(params)
  header_inputs = parse_accept_headers(accept_headers)
  
  unless is_blank?(param_inputs[:res_media_type])
    @resolution_media_type = param_inputs[:res_media_type]
    @uric = has_true_value?(param_inputs[:uric]) ? true : false
    @sep = has_true_value?(param_inputs[:sep]) ? true : false
    @cid = has_false_value?(param_inputs[:cid]) ? false : true
    @nodefault_p = has_true_value?(param_inputs[:nodefault_p]) ? true : false
    @nodefault_t = has_true_value?(param_inputs[:nodefault_t]) ? true : false
    @nodefault_m = has_true_value?(param_inputs[:nodefault_m]) ? true : false
    @refs = has_false_value?(param_inputs[:refs]) ? 'false' : 'true'
    @https = has_true_value?(param_inputs[:https]) ? true : false
    @saml = has_true_value?(param_inputs[:saml]) ? true : false
  else
    @resolution_media_type = header_inputs[:res_media_type]
    @uric = has_true_value?(header_inputs[:uric]) ? true : false
    @sep = has_true_value?(header_inputs[:sep]) ? true : false
    @cid = has_false_value?(header_inputs[:cid]) ? false : true
    @nodefault_p = has_true_value?(header_inputs[:nodefault_p]) ? true : false
    @nodefault_t = has_true_value?(header_inputs[:nodefault_t]) ? true : false
    @nodefault_m = has_true_value?(header_inputs[:nodefault_m]) ? true : false
    @refs = has_false_value?(header_inputs[:refs]) ? 'false' : 'true'
    @https = has_true_value?(header_inputs[:https]) ? true : false
    @saml = has_true_value?(header_inputs[:saml]) ? true : false
  end
  
  @service_media_type = param_inputs[:service_media_type]
  @service_type = param_inputs[:service_type]
  
  ## force sep=true if RMT is text/uri-list or unspecified
  @sep = true if @resolution_media_type == 'text/uri-list' or is_blank?(@resolution_media_type)
end

Instance Attribute Details

#cidObject

Returns the value of attribute cid.



956
957
958
# File 'lib/xri_resolver.rb', line 956

def cid
  @cid
end

#httpsObject

Returns the value of attribute https.



956
957
958
# File 'lib/xri_resolver.rb', line 956

def https
  @https
end

#nodefault_mObject

Returns the value of attribute nodefault_m.



956
957
958
# File 'lib/xri_resolver.rb', line 956

def nodefault_m
  @nodefault_m
end

#nodefault_pObject

Returns the value of attribute nodefault_p.



956
957
958
# File 'lib/xri_resolver.rb', line 956

def nodefault_p
  @nodefault_p
end

#nodefault_tObject

Returns the value of attribute nodefault_t.



956
957
958
# File 'lib/xri_resolver.rb', line 956

def nodefault_t
  @nodefault_t
end

#refsObject

Returns the value of attribute refs.



956
957
958
# File 'lib/xri_resolver.rb', line 956

def refs
  @refs
end

#resolution_media_typeObject

Returns the value of attribute resolution_media_type.



956
957
958
# File 'lib/xri_resolver.rb', line 956

def resolution_media_type
  @resolution_media_type
end

#samlObject

Returns the value of attribute saml.



956
957
958
# File 'lib/xri_resolver.rb', line 956

def saml
  @saml
end

#sepObject

Returns the value of attribute sep.



956
957
958
# File 'lib/xri_resolver.rb', line 956

def sep
  @sep
end

#service_media_typeObject

Returns the value of attribute service_media_type.



956
957
958
# File 'lib/xri_resolver.rb', line 956

def service_media_type
  @service_media_type
end

#service_typeObject

Returns the value of attribute service_type.



956
957
958
# File 'lib/xri_resolver.rb', line 956

def service_type
  @service_type
end

#uricObject

Returns the value of attribute uric.



956
957
958
# File 'lib/xri_resolver.rb', line 956

def uric
  @uric
end

Instance Method Details

#has_false_value?(test) ⇒ Boolean

Returns:

  • (Boolean)


1049
1050
1051
# File 'lib/xri_resolver.rb', line 1049

def has_false_value?(test)
  test == 'false' or test == '0'
end

#has_true_value?(test) ⇒ Boolean

Returns:

  • (Boolean)


1045
1046
1047
# File 'lib/xri_resolver.rb', line 1045

def has_true_value?(test)
  test == 'true' or test == '1'
end

#is_blank?(test) ⇒ Boolean

Returns:

  • (Boolean)


1053
1054
1055
# File 'lib/xri_resolver.rb', line 1053

def is_blank?(test)
  test.empty? or test =~ /\A\s*\z/
end

#parse_accept_headers(accept_headers) ⇒ Object



1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
# File 'lib/xri_resolver.rb', line 1027

def parse_accept_headers(accept_headers)
  valid_headers = ['application/xrds+xml', 'application/xrd+xml', 'text/uri-list']
  res_inputs = {:res_media_type => ""}
  headers = accept_headers.split(',').map {|h| h.strip}
  headers.each do |hdr|
    hdr_parts = hdr.split(';')
    if valid_headers.include?(hdr_parts.first)
      res_inputs[:res_media_type] = hdr_parts.shift
      hdr_parts.each do |part|
        k,v = part.downcase.split('=')
        res_inputs["#{k}".to_sym] = v unless is_blank?(k)
      end
      break
    end
  end
  res_inputs
end

#parse_query_params(params) ⇒ Object



1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
# File 'lib/xri_resolver.rb', line 1008

def parse_query_params(params)
  inputs = {:res_media_type => ""}
  ## get Resolution Media type
  if params.has_key?(:_xrd_r)
    parsedrof = params[:_xrd_r].split(';') rescue []
    inputs[:res_media_type] = parsedrof.shift.tr(' ', '+') rescue ''
    parsedrof.each do |part|
      k,v = part.downcase.split('=')
      inputs["#{k}".to_sym] = v unless is_blank?(k)
    end
  end
  ## get Service Type selection element
  inputs[:service_type] = (params.has_key?(:_xrd_t)) ? params[:_xrd_t].tr(' ', '+') : nil
  ## get Service Media Type selection element
  inputs[:service_media_type] = (params.has_key?(:_xrd_m)) ? params[:_xrd_m].tr(' ', '+') : nil
  
  inputs
end