Class: URI::SIP

Inherits:
Generic
  • Object
show all
Defined in:
lib/uri/sip.rb

Overview

URI::SIP クラスは SIP URI を実装しています.

Direct Known Subclasses

Net::Sip::URI

Constant Summary collapse

DEFAULT_PORT =
5060
COMPONENT =
[ :scheme, :userinfo, :host, :port, :uri_parameters, :headers ].freeze
PATTERN =
"(?:[^?=&]*=[^?=&]*)".freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*arg) ⇒ SIP

汎用的な構成要素から URI::SIP オブジェクトを生成します。 build と異なり、引数の正当性を検査しません。



19
20
21
22
23
# File 'lib/uri/sip.rb', line 19

def initialize(*arg)
  super
  @uri_parameters = nil
  @headers = nil
end

Class Method Details

.build(args) ⇒ Object

引数で与えられた URI 構成要素からオブジェクトを生成します.

args

URI 構成要素. [userinfo, host, port, uri_parameters, headers] を 配列かハッシュで与えます.

uri_parameters

RFC3261 19.1.1 にて規定されている URI parameters を 配列かハッシュで与えます.

headers

RFC3261 19.1.1 にて規定されている Headers を配列かハッシュで与えます.



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/uri/sip.rb', line 35

def self.build(args)
  # args をハッシュ化する
  tmp = Util::make_components_hash(self, args)
  
  return false unless validate_uri_parameters(tmp[:uri_parameters])
  return false unless validate_headers(tmp[:headers])
  
  o = self.new(nil, nil, nil, nil, nil, nil, nil, nil, false)
  o.scheme = tmp[:scheme]
  o.userinfo = tmp[:userinfo]
  o.host = tmp[:host]
  o.port = tmp[:port]
  o.uri_parameters = tmp[:uri_parameters]
  o.headers = tmp[:headers]
  
  return o
end

.validate(v, separator) ⇒ Object



90
91
92
93
94
95
96
97
98
99
# File 'lib/uri/sip.rb', line 90

def self.validate(v, separator)
  return true unless v
  
  pattern = Regexp.new("#{PATTERN}(#{separator}#{PATTERN})*")
  v.each do |i|
    return false unless pattern =~ i
  end
  
  return true
end

.validate_headers(v) ⇒ Object

Headers を検証します



107
108
109
# File 'lib/uri/sip.rb', line 107

def self.validate_headers(v)
  return validate(v, '&')
end

.validate_uri_parameters(v) ⇒ Object

URI parameters を検証します



102
103
104
# File 'lib/uri/sip.rb', line 102

def self.validate_uri_parameters(v)
  return validate(v, ';')
end

Instance Method Details

#headers=(ary) ⇒ Object

Headers を変更します



59
60
61
# File 'lib/uri/sip.rb', line 59

def headers=(ary)
  @headers = ary
end

#to_sObject

文字列化します



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/uri/sip.rb', line 64

def to_s
  s = @scheme + ':'
  unless self.userinfo.nil?
    s << "#{self.userinfo}@"
  end
  unless @host.nil?
    s << @host
  end
  unless @port.nil?
    s << ":#{@port}"
  end
  unless @uri_parameters.nil?
    @uri_parameters.each do |x|
      s << ";#{x}"
    end
  end
  unless @headers.nil?
    s << "?"
    @headers.each do |x|
      s << "#{x}&"
    end
    s.chop!
  end
  return s
end

#uri_parameters=(ary) ⇒ Object

URI-parameters を変更します



54
55
56
# File 'lib/uri/sip.rb', line 54

def uri_parameters=(ary)
  @uri_parameters = ary
end