Module: Sipatra::HelperMethods

Included in:
Base
Defined in:
lib/sipatra/helpers.rb

Defined Under Namespace

Classes: ResponseEnvironment

Instance Method Summary collapse

Instance Method Details

#add_address_header(name, value, first = true) ⇒ Object



136
137
138
# File 'lib/sipatra/helpers.rb', line 136

def add_address_header(name, value, first = true)
  message.addAddressHeader(name.to_s, value, first)
end

#add_header(name, value) ⇒ Object



132
133
134
# File 'lib/sipatra/helpers.rb', line 132

def add_header(name, value)
  message.addHeader(name.to_s, value)
end

#address_headerObject



124
125
126
# File 'lib/sipatra/helpers.rb', line 124

def address_header
  @address_header_wrapper ||= HeadersWrapper::new(self, false, true)
end

#address_headersObject



128
129
130
# File 'lib/sipatra/helpers.rb', line 128

def address_headers
  @address_headers_wrapper ||= HeadersWrapper::new(self, true, true)
end

#create_address(addr, options = {}) ⇒ Object



193
194
195
196
197
198
199
200
# File 'lib/sipatra/helpers.rb', line 193

def create_address(addr, options = {})
  addr = addr.to_s # TODO: Handle URI instances
  address = sip_factory.createAddress(addr)
  address.setExpires(options[:expires]) if options.has_key? :expires
  address.setDisplayName(options[:display_name]) if options.has_key? :display_name

  address
end

#create_uri(value, params = {}) ⇒ Object



202
203
204
205
206
207
208
209
# File 'lib/sipatra/helpers.rb', line 202

def create_uri(value, params = {})
  uri = sip_factory.createURI(value)
  if uri.respond_to? :setLrParam
      uri.setLrParam(params.has_key?(:lr) ? params.delete(:lr) : true)
  end
  params.each { |name, value| uri.setParameter(name.to_s, value.to_s) }
  uri
end

#headerObject



116
117
118
# File 'lib/sipatra/helpers.rb', line 116

def header
  @header_wrapper ||= HeadersWrapper::new(self)
end

#header?(name) ⇒ Boolean

Returns:

  • (Boolean)


140
141
142
# File 'lib/sipatra/helpers.rb', line 140

def header?(name)
  !message.getHeader(name.to_s).nil?
end

#headersObject



120
121
122
# File 'lib/sipatra/helpers.rb', line 120

def headers
  @headers_wrapper ||= HeadersWrapper::new(self, true)
end

#modify_header(header_name, pattern = nil, new_value = nil) ⇒ Object



144
145
146
147
148
149
150
151
152
153
154
155
156
# File 'lib/sipatra/helpers.rb', line 144

def modify_header(header_name, pattern = nil, new_value = nil)
  #FIXME: "JAVA" Code
  if pattern
    pattern = Regexp.new(/^#{pattern}$/) unless pattern.kind_of? Regexp
    headers[header_name] = headers[header_name].map do |value|
      value.gsub(pattern, new_value)
    end
  else
    headers[header_name] = headers[header_name].map do |value|
      yield value
    end
  end
end

#proxy(*args) ⇒ Object



102
103
104
105
106
107
108
109
110
111
112
113
114
# File 'lib/sipatra/helpers.rb', line 102

def proxy(*args)
  uri = args.shift
  uri, options = nil, uri if uri.kind_of? Hash
  options ||= args.shift || {}
  if uri.nil?
    uri = message.requestURI
  else
    uri = sip_factory.createURI(uri)
  end
  proxy = message.proxy
  proxy.setRecordRoute(options[:record_route]) if options.has_key? :record_route
  proxy.proxyTo(uri)
end

#push_route(route) ⇒ Object



211
212
213
# File 'lib/sipatra/helpers.rb', line 211

def push_route(route)
  message.pushRoute(sip_factory.createAddress(route))
end

#remove_header(name) ⇒ Object



158
159
160
# File 'lib/sipatra/helpers.rb', line 158

def remove_header(name)
  message.removeHeader(name.to_s)
end

#send_response(status, *args, &block) ⇒ Object



177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
# File 'lib/sipatra/helpers.rb', line 177

def send_response(status, *args, &block)
  create_args = [convert_status_code(status)]
  create_args << args.shift unless args.empty? || args.first.kind_of?(Hash)
  response = message.createResponse(*create_args)
  unless args.empty?
    raise ArgumentError, "last argument should be a Hash" unless args.first.kind_of? Hash
    args.first.each_pair do |name, value|
      response.addHeader(name.to_s, value.to_s)
    end
  end
  unless block.nil?
    ResponseEnvironment::new(self, response).instance_eval(&block)
  end
  response.send
end