Class: URI::SIP
- Inherits:
-
Generic
- Object
- Generic
- URI::SIP
- Defined in:
- lib/uri/sip.rb
Overview
URI::SIP クラスは SIP URI を実装しています.
Direct Known Subclasses
Constant Summary collapse
- DEFAULT_PORT =
5060
- COMPONENT =
[ :scheme, :userinfo, :host, :port, :uri_parameters, :headers ].freeze
- PATTERN =
"(?:[^?=&]*=[^?=&]*)".freeze
Class Method Summary collapse
-
.build(args) ⇒ Object
引数で与えられた URI 構成要素からオブジェクトを生成します.
- .validate(v, separator) ⇒ Object
-
.validate_headers(v) ⇒ Object
Headers を検証します.
-
.validate_uri_parameters(v) ⇒ Object
URI parameters を検証します.
Instance Method Summary collapse
-
#headers=(ary) ⇒ Object
Headers を変更します.
-
#initialize(*arg) ⇒ SIP
constructor
汎用的な構成要素から URI::SIP オブジェクトを生成します。 build と異なり、引数の正当性を検査しません。.
-
#to_s ⇒ Object
文字列化します.
-
#uri_parameters=(ary) ⇒ Object
URI-parameters を変更します.
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_s ⇒ Object
文字列化します
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 |