Module: Analysand::Viewing
- Included in:
- Database
- Defined in:
- lib/analysand/viewing.rb
Constant Summary collapse
- JSON_VALUE_PARAMETERS =
%w(key keys startkey endkey).map(&:to_sym)
Instance Method Summary collapse
- #all_docs(parameters = {}, credentials = nil) ⇒ Object
- #all_docs!(parameters = {}, credentials = nil) ⇒ Object
- #do_view_query(view_path, parameters, credentials, &block) ⇒ Object
- #encode_parameters(parameters) ⇒ Object
- #expand_view_path(view_name) ⇒ Object
- #get_view(view_path, parameters, credentials, block) ⇒ Object
- #post_view(view_path, parameters, credentials, block) ⇒ Object
- #return_view(view_path, parameters, credentials) ⇒ Object
- #stream_view(view_path, parameters, credentials) ⇒ Object
- #view(view_name, parameters = {}, credentials = nil) ⇒ Object
- #view!(view_name, parameters = {}, credentials = nil) ⇒ Object
Instance Method Details
#all_docs(parameters = {}, credentials = nil) ⇒ Object
10 11 12 |
# File 'lib/analysand/viewing.rb', line 10 def all_docs(parameters = {}, credentials = nil) view('_all_docs', parameters, credentials) end |
#all_docs!(parameters = {}, credentials = nil) ⇒ Object
14 15 16 |
# File 'lib/analysand/viewing.rb', line 14 def all_docs!(parameters = {}, credentials = nil) view!('_all_docs', parameters, credentials) end |
#do_view_query(view_path, parameters, credentials, &block) ⇒ Object
51 52 53 54 55 56 57 58 59 |
# File 'lib/analysand/viewing.rb', line 51 def do_view_query(view_path, parameters, credentials, &block) use_post = parameters.delete(:post) if use_post post_view(view_path, parameters, credentials, block) else get_view(view_path, parameters, credentials, block) end end |
#encode_parameters(parameters) ⇒ Object
76 77 78 79 80 81 82 |
# File 'lib/analysand/viewing.rb', line 76 def encode_parameters(parameters) JSON_VALUE_PARAMETERS.each do |p| if parameters.has_key?(p) parameters[p] = parameters[p].to_json end end end |
#expand_view_path(view_name) ⇒ Object
84 85 86 87 88 89 90 91 |
# File 'lib/analysand/viewing.rb', line 84 def (view_name) if view_name.start_with?('_design') || !view_name.include?('/') view_name else design_doc, view_name = view_name.split('/', 2) "_design/#{design_doc}/_view/#{view_name}" end end |
#get_view(view_path, parameters, credentials, block) ⇒ Object
61 62 63 64 |
# File 'lib/analysand/viewing.rb', line 61 def get_view(view_path, parameters, credentials, block) encode_parameters(parameters) _get(view_path, credentials, parameters, {}, nil, block) end |
#post_view(view_path, parameters, credentials, block) ⇒ Object
66 67 68 69 70 71 72 73 74 |
# File 'lib/analysand/viewing.rb', line 66 def post_view(view_path, parameters, credentials, block) body = { 'keys' => parameters.delete(:keys) }.reject { |_, v| v.nil? } encode_parameters(parameters) _post(view_path, credentials, parameters, json_headers, body.to_json, block) end |
#return_view(view_path, parameters, credentials) ⇒ Object
45 46 47 48 49 |
# File 'lib/analysand/viewing.rb', line 45 def return_view(view_path, parameters, credentials) resp = do_view_query(view_path, parameters, credentials) ViewResponse.new resp end |
#stream_view(view_path, parameters, credentials) ⇒ Object
35 36 37 38 39 40 41 42 43 |
# File 'lib/analysand/viewing.rb', line 35 def stream_view(view_path, parameters, credentials) StreamingViewResponse.new do |sresp| do_view_query(view_path, parameters, credentials) do |resp| sresp.response = resp Fiber.yield resp.read_body { |data| Fiber.yield(data) } end end end |
#view(view_name, parameters = {}, credentials = nil) ⇒ Object
18 19 20 21 22 23 24 25 26 27 |
# File 'lib/analysand/viewing.rb', line 18 def view(view_name, parameters = {}, credentials = nil) stream = parameters.delete(:stream) view_path = (view_name) if stream stream_view(view_path, parameters, credentials) else return_view(view_path, parameters, credentials) end end |
#view!(view_name, parameters = {}, credentials = nil) ⇒ Object
29 30 31 32 33 |
# File 'lib/analysand/viewing.rb', line 29 def view!(view_name, parameters = {}, credentials = nil) view(view_name, parameters, credentials).tap do |resp| raise ex(CannotAccessView, resp) unless resp.success? end end |