Class: Arango::Request
- Inherits:
-
Object
- Object
- Arango::Request
- Defined in:
- lib/arango/request.rb
Overview
Arango Request Implements REST API to Arango Used to define accessor classes to run execute Strictly internal. Not user accessible. Used to implement REST API representation classes.
Direct Known Subclasses
Arango::Requests::AQL::ClearQueryResultCache, Arango::Requests::AQL::CreateFunction, Arango::Requests::AQL::CurrentQueries, Arango::Requests::AQL::DeleteFunction, Arango::Requests::AQL::DeleteSlowQueryList, Arango::Requests::AQL::Explain, Arango::Requests::AQL::GetQueryResultCacheProperties, Arango::Requests::AQL::GetQueryTrackingProperties, Arango::Requests::AQL::GetSlowQueryList, Arango::Requests::AQL::KillQuery, Arango::Requests::AQL::ListFunctions, Arango::Requests::AQL::Parse, Arango::Requests::AQL::QueryResultCacheEntries, Arango::Requests::AQL::SetQueryResultCacheProperties, Arango::Requests::AQL::SetQueryTrackingProperties, Arango::Requests::Administration::Availability, Arango::Requests::Administration::ClusterEndpoints, Arango::Requests::Administration::CreateTask, Arango::Requests::Administration::CreateTaskId, Arango::Requests::Administration::DeleteTasks, Arango::Requests::Administration::Echo, Arango::Requests::Administration::Endpoints, Arango::Requests::Administration::Engine, Arango::Requests::Administration::Execute, Arango::Requests::Administration::GetLogLevel, Arango::Requests::Administration::GetMode, Arango::Requests::Administration::GetTask, Arango::Requests::Administration::ListTasks, Arango::Requests::Administration::Log, Arango::Requests::Administration::Metrics, Arango::Requests::Administration::ReloadRouting, Arango::Requests::Administration::Role, Arango::Requests::Administration::ServerId, Arango::Requests::Administration::SetLogLevel, Arango::Requests::Administration::SetMode, Arango::Requests::Administration::Statistics, Arango::Requests::Administration::StatisticsDescription, Arango::Requests::Administration::Status, Arango::Requests::Administration::TargetVersion, Arango::Requests::Administration::Time, Arango::Requests::Administration::Version, Arango::Requests::Analyzer::Create, Arango::Requests::Analyzer::Delete, Arango::Requests::Analyzer::List, Arango::Requests::Backup::Create, Arango::Requests::Backup::Delete, Arango::Requests::Backup::Download, Arango::Requests::Backup::List, Arango::Requests::Backup::Restore, Arango::Requests::Backup::Upload, Arango::Requests::Bulk::Execute, Arango::Requests::Bulk::Export, Arango::Requests::Bulk::ImportDocument, Arango::Requests::Bulk::ImportJson, Arango::Requests::Cluster::Health, Arango::Requests::Cluster::Maintenance, Arango::Requests::Cluster::Statistics, Arango::Requests::Collection::Checksum, Arango::Requests::Collection::Count, Arango::Requests::Collection::Create, Arango::Requests::Collection::Delete, Arango::Requests::Collection::Get, Arango::Requests::Collection::GetProperties, Arango::Requests::Collection::ListAll, Arango::Requests::Collection::Load, Arango::Requests::Collection::LoadIndexesIntoMemory, Arango::Requests::Collection::RecalculateCount, Arango::Requests::Collection::Rename, Arango::Requests::Collection::ResponsibleShard, Arango::Requests::Collection::Revision, Arango::Requests::Collection::RotateJournal, Arango::Requests::Collection::SetProperties, Arango::Requests::Collection::Shards, Arango::Requests::Collection::Statistics, Arango::Requests::Collection::Truncate, Arango::Requests::Cursor::Create, Arango::Requests::Cursor::Delete, Arango::Requests::Cursor::NextBatch, Arango::Requests::Database::Create, Arango::Requests::Database::Delete, Arango::Requests::Database::GetInformation, Arango::Requests::Database::ListAccessible, Arango::Requests::Database::ListAll, Arango::Requests::Document::Create, Arango::Requests::Document::CreateMultiple, Arango::Requests::Document::Delete, Arango::Requests::Document::DeleteMultiple, Arango::Requests::Document::Get, Arango::Requests::Document::GetMultiple, Arango::Requests::Document::Head, Arango::Requests::Document::Replace, Arango::Requests::Document::ReplaceMultiple, Arango::Requests::Document::Update, Arango::Requests::Document::UpdateMultiple, Arango::Requests::Foxx::Commit, Arango::Requests::Foxx::Description, Arango::Requests::Foxx::DisableDevelopmentMode, Arango::Requests::Foxx::DownloadBundle, Arango::Requests::Foxx::EnableDevelopmentMode, Arango::Requests::Foxx::GetConfiguration, Arango::Requests::Foxx::GetDependencies, Arango::Requests::Foxx::Install, Arango::Requests::Foxx::ListAll, Arango::Requests::Foxx::ListScripts, Arango::Requests::Foxx::Readme, Arango::Requests::Foxx::Replace, Arango::Requests::Foxx::ReplaceConfiguration, Arango::Requests::Foxx::ReplaceDependencies, Arango::Requests::Foxx::RunScript, Arango::Requests::Foxx::RunTests, Arango::Requests::Foxx::Swagger, Arango::Requests::Foxx::Uninstall, Arango::Requests::Foxx::UpdateConfiguration, Arango::Requests::Foxx::UpdateDependencies, Arango::Requests::Foxx::Upgrade, Arango::Requests::Graph::AddEdgeDefinition, Arango::Requests::Graph::AddVertexCollections, Arango::Requests::Graph::Create, Arango::Requests::Graph::CreateEdge, Arango::Requests::Graph::CreateVertex, Arango::Requests::Graph::Delete, Arango::Requests::Graph::DeleteEdge, Arango::Requests::Graph::DeleteVertex, Arango::Requests::Graph::Get, Arango::Requests::Graph::GetEdge, Arango::Requests::Graph::GetVertex, Arango::Requests::Graph::ListAll, Arango::Requests::Graph::ListEdgeDefinitions, Arango::Requests::Graph::ListVertexCollections, Arango::Requests::Graph::RemoveVertexCollections, Arango::Requests::Graph::ReplaceEdge, Arango::Requests::Graph::ReplaceEdgeDefinition, Arango::Requests::Graph::ReplaceVertex, Arango::Requests::Graph::UpdateEdge, Arango::Requests::Graph::UpdateVertex, Arango::Requests::GraphEdges::Read, Arango::Requests::GraphTraversal::Execute, Arango::Requests::Index::Create, Arango::Requests::Index::Delete, Arango::Requests::Index::Get, Arango::Requests::Index::ListAll, Arango::Requests::Job::Cancel, Arango::Requests::Job::Delete, Arango::Requests::Job::Get, Arango::Requests::Job::List, Arango::Requests::Job::Result, Arango::Requests::Replication::CreateDumpBatch, Arango::Requests::Replication::DeleteDumpBatch, Arango::Requests::Replication::GetApplierConfig, Arango::Requests::Replication::GetApplierState, Arango::Requests::Replication::GetClusterInventory, Arango::Requests::Replication::GetDump, Arango::Requests::Replication::GetInventory, Arango::Requests::Replication::GetLastTick, Arango::Requests::Replication::GetLogFirstTick, Arango::Requests::Replication::GetLogFollow, Arango::Requests::Replication::GetLoggerState, Arango::Requests::Replication::GetLoggerTickRanges, Arango::Requests::Replication::GetServerId, Arango::Requests::Replication::GetTail, Arango::Requests::Replication::GetTickRanges, Arango::Requests::Replication::MakeSlave, Arango::Requests::Replication::ProlongDumpBatch, Arango::Requests::Replication::SetApplierConfig, Arango::Requests::Replication::StartApplier, Arango::Requests::Replication::StopApplier, Arango::Requests::Replication::Synchronize, Arango::Requests::Task::All, Arango::Requests::Task::Create, Arango::Requests::Task::CreateWithId, Arango::Requests::Task::Delete, Arango::Requests::Task::Get, Arango::Requests::Transaction::Begin, Arango::Requests::Transaction::Commit, Arango::Requests::Transaction::Delete, Arango::Requests::Transaction::Execute, Arango::Requests::Transaction::ListRunning, Arango::Requests::Transaction::Status, Arango::Requests::User::ClearCollectionAccessLevel, Arango::Requests::User::ClearDatabaseAccessLevel, Arango::Requests::User::Create, Arango::Requests::User::Delete, Arango::Requests::User::Get, Arango::Requests::User::GetCollectionAccessLevel, Arango::Requests::User::GetDatabaseAccessLevel, Arango::Requests::User::List, Arango::Requests::User::ListDatabases, Arango::Requests::User::Replace, Arango::Requests::User::SetCollectionAccessLevel, Arango::Requests::User::SetDatabaseAccessLevel, Arango::Requests::User::Update, Arango::Requests::View::CreateSearchView, Arango::Requests::View::Delete, Arango::Requests::View::Get, Arango::Requests::View::GetProperties, Arango::Requests::View::ListAll, Arango::Requests::View::Rename, Arango::Requests::View::SetSearchViewProperties, Arango::Requests::View::UpdateSearchViewProperties, Arango::Requests::Wal::Flush, Arango::Requests::Wal::GetProperties, Arango::Requests::Wal::SetProperties, Arango::Requests::Wal::Transactions
Instance Attribute Summary collapse
-
#args ⇒ Object
readonly
Returns the value of attribute args.
-
#database ⇒ Object
readonly
Returns the value of attribute database.
-
#formatted_body ⇒ Object
readonly
Returns the value of attribute formatted_body.
-
#formatted_headers ⇒ Object
readonly
Returns the value of attribute formatted_headers.
-
#formatted_params ⇒ Object
readonly
Returns the value of attribute formatted_params.
-
#server ⇒ Object
readonly
Returns the value of attribute server.
Class Method Summary collapse
-
.body(name, option = nil, &block) ⇒ Object
define body element.
-
.body_any ⇒ Object
allow any body content.
-
.body_any_key_allowed ⇒ Object
allow any body keys.
-
.body_array ⇒ Object
make body an Array.
-
.body_is_array? ⇒ Boolean
check if body is an Array.
-
.body_keys ⇒ Hash
get body keys sets @body_keys to empty Hash (if unset).
-
.code(number, message) ⇒ Object
define known http code and its meaning.
-
.codes ⇒ Hash
get known http return codes and their meanings sets codes to empty hash if undefined.
-
.execute(**args) ⇒ Arango::Result
execute Arango::Request.
-
.has_body? ⇒ Boolean
check if body exists.
-
.has_header? ⇒ Boolean
if request has a header defined.
-
.has_param? ⇒ Boolean
parameters defined ?.
-
.header(name, option = nil) ⇒ Object
define header element.
-
.headers ⇒ Hash
get defined headers sets headers to empty Hash if undefined.
-
.key(name, option = nil) ⇒ Object
define body key.
-
.param(name, option = nil) ⇒ Object
define parameter element.
-
.params ⇒ Hash
get defined parameters sets parameters to empty Hash if undefined.
-
.reqm ⇒ Object
get request method.
-
.request_method=(name) ⇒ Object
define request method.
-
.uri_template ⇒ Object
get uri template.
-
.uri_template=(template) ⇒ Object
define uri template for API call see rubydoc.info/gems/addressable/Addressable/Template.
Instance Method Summary collapse
-
#execute ⇒ Arango::Result
execute request.
-
#formatted_uri ⇒ Object
create expanded URI, (from template, including keys) and http:// prefix.
-
#initialize(body: nil, params: {}, headers: nil, args: nil, server:) ⇒ Request
constructor
create Arango::Request instance.
Constructor Details
#initialize(body: nil, params: {}, headers: nil, args: nil, server:) ⇒ Request
create Arango::Request instance
206 207 208 209 210 211 212 213 214 215 216 217 218 219 |
# File 'lib/arango/request.rb', line 206 def initialize(body: nil, params: {}, headers: nil, args: nil, server:) @server = server if args @database = args.delete(:db) @args = args end @formatted_headers = validate_and_format_header!(headers) if self.class.has_header? @formatted_params = validate_and_format_params!(params) if self.class.has_param? @formatted_body = if self.class.body_is_array? || self.class.body_any_key_allowed body elsif self.class.has_body? validate_and_format_body!(body) end end |
Instance Attribute Details
#args ⇒ Object (readonly)
Returns the value of attribute args.
185 186 187 |
# File 'lib/arango/request.rb', line 185 def args @args end |
#database ⇒ Object (readonly)
Returns the value of attribute database.
186 187 188 |
# File 'lib/arango/request.rb', line 186 def database @database end |
#formatted_body ⇒ Object (readonly)
Returns the value of attribute formatted_body.
189 190 191 |
# File 'lib/arango/request.rb', line 189 def formatted_body @formatted_body end |
#formatted_headers ⇒ Object (readonly)
Returns the value of attribute formatted_headers.
187 188 189 |
# File 'lib/arango/request.rb', line 187 def formatted_headers @formatted_headers end |
#formatted_params ⇒ Object (readonly)
Returns the value of attribute formatted_params.
188 189 190 |
# File 'lib/arango/request.rb', line 188 def formatted_params @formatted_params end |
#server ⇒ Object (readonly)
Returns the value of attribute server.
190 191 192 |
# File 'lib/arango/request.rb', line 190 def server @server end |
Class Method Details
.body(name, option = nil, &block) ⇒ Object
define body element
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/arango/request.rb', line 39 def body(name, option = nil, &block) @has_body = true camel_name = name.to_s.camelize(:lower) case option when :required then body_keys[name] = { camel: camel_name, required: true } when :optional then body_keys[name] = { camel: camel_name } when nil then body_keys[name] = { camel: camel_name } else raise Arango::Error.new("Unknown option '#{option}'!") end if block_given? @current_nested_body = Hash.new block.call body_keys[name][:nested] = @current_nested_body end ensure @current_nested_body = nil end |
.body_any ⇒ Object
allow any body content
65 66 67 68 |
# File 'lib/arango/request.rb', line 65 def body_any @has_body = true @body_any_key_allowed = true end |
.body_any_key_allowed ⇒ Object
allow any body keys
71 72 73 |
# File 'lib/arango/request.rb', line 71 def body_any_key_allowed @body_any_key_allowed end |
.body_array ⇒ Object
make body an Array
59 60 61 62 |
# File 'lib/arango/request.rb', line 59 def body_array body_any @body_is_array = true end |
.body_is_array? ⇒ Boolean
check if body is an Array
25 26 27 |
# File 'lib/arango/request.rb', line 25 def body_is_array? @body_is_array end |
.body_keys ⇒ Hash
get body keys sets @body_keys to empty Hash (if unset)
32 33 34 |
# File 'lib/arango/request.rb', line 32 def body_keys @body_keys ||= Hash.new end |
.code(number, message) ⇒ Object
define known http code and its meaning
180 181 182 |
# File 'lib/arango/request.rb', line 180 def code(number, ) codes[number] = end |
.codes ⇒ Hash
get known http return codes and their meanings sets codes to empty hash if undefined
173 174 175 |
# File 'lib/arango/request.rb', line 173 def codes @codes ||= {} end |
.execute(**args) ⇒ Arango::Result
execute Arango::Request
13 14 15 |
# File 'lib/arango/request.rb', line 13 def execute(**args) self.new(**args).execute end |
.has_body? ⇒ Boolean
check if body exists
19 20 21 |
# File 'lib/arango/request.rb', line 19 def has_body? @has_body end |
.has_header? ⇒ Boolean
if request has a header defined
93 94 95 |
# File 'lib/arango/request.rb', line 93 def has_header? @has_header end |
.has_param? ⇒ Boolean
parameters defined ?
121 122 123 |
# File 'lib/arango/request.rb', line 121 def has_param? @has_param end |
.header(name, option = nil) ⇒ Object
define header element
107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/arango/request.rb', line 107 def header(name, option = nil) @has_header = true key = name.underscore.downcase.to_sym case option when :required then headers[key] = { real: name, required: true } when :optional then headers[key] = { real: name } when nil then headers[key] = { real: name } else raise Arango::Error.new("Unknown option #{option}") end end |
.headers ⇒ Hash
get defined headers sets headers to empty Hash if undefined
100 101 102 |
# File 'lib/arango/request.rb', line 100 def headers @headers ||= Hash.new end |
.key(name, option = nil) ⇒ Object
define body key
78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/arango/request.rb', line 78 def key(name, option = nil) raise Arango::Error.new("No body context!") unless @current_nested_body camel_name = name.to_s.camelize(:lower) value = case option when :required then { camel: camel_name, required: true } when :optional then { camel: camel_name } when nil then { camel: camel_name } else raise Arango::Error.new("Unknown option '#{option}'!") end @current_nested_body[name] = value end |
.param(name, option = nil) ⇒ Object
define parameter element
135 136 137 138 139 140 141 142 143 144 145 |
# File 'lib/arango/request.rb', line 135 def param(name, option = nil) @has_param = true camel_name = name.to_s.camelize(:lower) case option when :required then params[name] = { camel: camel_name, required: true } when :optional then params[name] = { camel: camel_name } when nil then params[name] = { camel: camel_name } else raise Arango::Error.new("Unknown option #{option}") end end |
.params ⇒ Hash
get defined parameters sets parameters to empty Hash if undefined
128 129 130 |
# File 'lib/arango/request.rb', line 128 def params @params ||= Hash.new end |
.reqm ⇒ Object
get request method
154 155 156 |
# File 'lib/arango/request.rb', line 154 def reqm @request_method end |
.request_method=(name) ⇒ Object
define request method
149 150 151 |
# File 'lib/arango/request.rb', line 149 def request_method= name @request_method = name end |
.uri_template ⇒ Object
get uri template
166 167 168 |
# File 'lib/arango/request.rb', line 166 def uri_template @uri_template end |
.uri_template=(template) ⇒ Object
define uri template for API call see rubydoc.info/gems/addressable/Addressable/Template
161 162 163 |
# File 'lib/arango/request.rb', line 161 def uri_template= template @uri_template = Addressable::Template.new(template) end |
Instance Method Details
#execute ⇒ Arango::Result
execute request
224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 |
# File 'lib/arango/request.rb', line 224 def execute response, response_code = server.driver_instance.execute_request(self.class.reqm, formatted_uri, formatted_headers, formatted_params, formatted_body) if self.class.codes.key?(response_code) raise Arango::Error.new(self.class.codes[response_code]) unless self.class.codes[response_code] == :success else raise Arango::Error.new("Unknown response code #{response_code}") end begin response[:code] = response_code rescue TypeError # response might be an Array end result = Arango::Result.new(response) # block ? block.call(result) : result result end |
#formatted_uri ⇒ Object
create expanded URI, (from template, including keys) and http:// prefix
193 194 195 196 197 198 |
# File 'lib/arango/request.rb', line 193 def formatted_uri hash = {} hash['db_context'] = ['_db', database] if database hash.merge!(args.transform_keys(&:to_s)) if args server.driver_instance.base_uri + self.class.uri_template.(hash) end |