class Smartling::Uri
Attributes
base[RW]
params[RW]
path[RW]
required[RW]
Public Class Methods
new(base, path = nil)
click to toggle source
# File lib/smartling/uri.rb, line 19 def initialize(base, path = nil) @base = base @path = path @required = [] end
Public Instance Methods
format_query(params)
click to toggle source
# File lib/smartling/uri.rb, line 49 def format_query(params) # TODO: UTF-8 encode keys and values # URI.encode_www_form(params) params.map {|k,v| if v.respond_to?(:to_ary) v.to_ary.map {|w| k.to_s + '[]=' + format_value(w) }.join('&') else k.to_s + '=' + format_value(v) end }.join('&') end
format_time(t)
click to toggle source
# File lib/smartling/uri.rb, line 68 def format_time(t) t.utc.iso8601 end
format_value(v)
click to toggle source
# File lib/smartling/uri.rb, line 63 def format_value(v) v.is_a?(Time) ? format_time(v) : CGI.escape(v.to_s).gsub('+', '%20') end
require(*args)
click to toggle source
# File lib/smartling/uri.rb, line 25 def require(*args) @required += args return self end
to_s()
click to toggle source
# File lib/smartling/uri.rb, line 45 def to_s to_uri.to_s end
to_uri()
click to toggle source
# File lib/smartling/uri.rb, line 30 def to_uri params = @params || {} required = @required || [] params.delete_if {|k,v| v.nil? || v.to_s.size <= 0 } missing = required - params.keys raise ArgumentError, "Missing parameters: " + missing.inspect if missing.size > 0 uri = URI.parse(@base) uri.merge!(@path) if @path if params.size > 0 uri.query = format_query(params) end return uri end