Class: Request
- Inherits:
-
Object
- Object
- Request
- Defined in:
- lib/request.rb
Constant Summary collapse
- METHOD =
defaults
'search'- OBJECTTYPE =
'Image'- LIMIT =
10- DEPTH =
1- FORMAT =
'id'- URI_PARAMS =
a subset of VALID_OPTIONS, these are concatenated in the request
[:limit, :format, :depth, :objecttype, :firstResult, :keywords, :id, :taxonName, :user, :group, :change, :lastDateChanged, :numChangeDays]
- VALID_OPTIONS =
possible options for a Request instance
{'v3' => URI_PARAMS + [:version, :method] }
Instance Attribute Summary collapse
-
#request_options ⇒ Object
readonly
Returns the value of attribute request_options.
-
#request_url ⇒ Object
readonly
Returns the value of attribute request_url.
Instance Method Summary collapse
- #get_response ⇒ Object
-
#initialize(options = {}) ⇒ Request
constructor
A new instance of Request.
Constructor Details
#initialize(options = {}) ⇒ Request
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/request.rb', line 18 def initialize( = {}) opt = { :version => 'v3', :method => METHOD, :limit => LIMIT, :format => FORMAT, # 'id' (brief results) or 'svc' (schema based results) :depth => DEPTH, :objecttype => OBJECTTYPE, # [nil, Taxon, Image, Character, Specimen, View, Matrix, Locality, Collection, OTU ] (nil = all) :firstResult => 0, :keywords => '' }.merge!() # Check for legal parameters opt.keys.each do |p| raise RubyMorphbankError, "#{p} is not a valid parameter" if !VALID_OPTIONS[opt[:version]].include?(p) end # TODO: add some proper sanitation?! opt[:keywords].gsub!(/\s+/, '+') if opt[:keywords].length > 0 # create the request @request_url = SERVICES_URI + "method=#{opt[:method]}" + opt.keys.sort{|a,b| a.to_s <=> b.to_s}.collect{ |k| ( (URI_PARAMS.include?(k) && ( !opt[k].nil? || (opt[k] && opt[k].empty?)) ) ? "&#{k.to_s}=#{opt[k]}" : '') }.join # and some housekeepers = opt end |
Instance Attribute Details
#request_options ⇒ Object (readonly)
Returns the value of attribute request_options.
16 17 18 |
# File 'lib/request.rb', line 16 def end |
#request_url ⇒ Object (readonly)
Returns the value of attribute request_url.
16 17 18 |
# File 'lib/request.rb', line 16 def request_url @request_url end |
Instance Method Details
#get_response ⇒ Object
48 49 50 |
# File 'lib/request.rb', line 48 def get_response Response.new(self) end |