class Arango::Foxx

Attributes

body[R]

DEFINE ===

cache_name[R]

DEFINE ===

database[R]

DEFINE ===

development[RW]
legacy[RW]
mount[RW]
name[RW]
provides[RW]
server[R]

DEFINE ===

setup[RW]
teardown[RW]
type[R]

DEFINE ===

version[RW]

Public Class Methods

new(*args) click to toggle source
Calls superclass method
# File lib/Foxx.rb, line 9
def self.new(*args)
  hash = args[0]
  super unless hash.is_a?(Hash)
  database = hash[:database]
  if database.is_a?(Arango::Database) && database.server.active_cache && !hash[:mount].nil?
    cache_name = "#{database.name}/#{hash[:mount]}"
    cached = database.server.cache.cache.dig(:foxx, cache_name)
    if cached.nil?
      hash[:cache_name] = cache_name
      return super
    else
      body = hash[:body] || {}
      [:mount, :development, :legacy, :provides, :name, :version,
        :type, :setup, :teardown].each{|k| body[k] ||= hash[k]}
      cached.assign_attributes(body)
      return cached
    end
  end
  super
end
new(database:, body: {}, mount:, development: nil, legacy: nil, provides: nil, name: nil, version: nil, type: "application/json", setup: nil, teardown: nil, cache_name: nil) click to toggle source
# File lib/Foxx.rb, line 30
def initialize(database:, body: {}, mount:, development: nil, legacy: nil,
  provides: nil, name: nil, version: nil, type: "application/json",
  setup: nil, teardown: nil, cache_name: nil)
  assign_database(database)
  unless cache_name.nil?
    @cache_name = cache_name
    @server.cache.save(:foxx, cache_name, self)
  end
  assign_attributes(body)
  assign_type(type)
  @mount       ||= mount
  @development ||= development
  @setup       ||= setup
  @legacy      ||= legacy
  @provides    ||= provides
  @name        ||= name
  @version     ||= version
  @teardown    ||= teardown
end

Public Instance Methods

assign_attributes(result)
Alias for: body=
assign_type(type)
Alias for: type=
body=(result) click to toggle source
# File lib/Foxx.rb, line 56
def body=(result)
  if result.is_a?(Hash)
    @body        = result
    @name        = result[:name]        || @name
    @version     = result[:version]     || @version
    @mount       = result[:mount]       || @mount
    @development = result[:development] || @development
    @legacy      = result[:legacy]      || @legacy
    @provides    = result[:provides]    || @provides
    if @server.active_cache && @cache_name.nil?
      @cache_name = "#{@database.name}/#{@mount}"
      @server.cache.save(:task, @cache_name, self)
    end
  end
end
Also aliased as: assign_attributes
commit(body:, replace: nil) click to toggle source
# File lib/Foxx.rb, line 272
def commit(body:, replace: nil)
  query = {"replace": replace}
  @database.request("POST", "_api/foxx/commit", body: body, query: query)
end
create(body: @body, type: @type, development: @development, setup: @setup, legacy: @legacy) click to toggle source
# File lib/Foxx.rb, line 120
def create(body: @body, type: @type, development: @development,
  setup: @setup, legacy: @legacy)
  headers = {"Accept": type}
  skip_to_json = type != "application/json"
  query = {
    "mount":        @mount,
    "setup":        setup,
    "development ": development ,
    "legacy":       legacy
  }
  result = @database.request("POST",
    url: "_api/foxx", body: body, headers: headers,
    skip_to_json: skip_to_json, query: query)
  return_foxx(result)
end
destroy(teardown: @teardown) click to toggle source
# File lib/Foxx.rb, line 136
def destroy(teardown: @teardown)
  query = {
    "mount":    @mount,
    "teardown": teardown
  }
  result = @database.request("DELETE", "_api/foxx/service", query: query)
  return_foxx(result)
end
disableDevelopment() click to toggle source
# File lib/Foxx.rb, line 250
def disableDevelopment
  query = {"mount": @mount}
  @database.request("DELETE", "_api/foxx/development", query: query)
end
download(path:, warning: @server.warning) click to toggle source
# File lib/Foxx.rb, line 265
def download(path:, warning: @server.warning)
  query = {"mount": @mount}
  @server.download("POST", "_db/#{@database.name}/_api/foxx/download",
    path: path, query: query)
  puts "File saved in #{path}" if warning
end
enableDevelopment() click to toggle source
# File lib/Foxx.rb, line 245
def enableDevelopment
  query = {"mount": @mount}
  @database.request("POST", "_api/foxx/development", query: query)
end
readme() click to toggle source
# File lib/Foxx.rb, line 255
def readme
  query = {"mount": @mount}
  @database.request("GET", "_api/foxx/readme", query: query)
end
replace(body: @body, type: @type, teardown: @teardown, setup: @setup, legacy: @legacy) click to toggle source
# File lib/Foxx.rb, line 145
def replace(body: @body, type: @type, teardown: @teardown, setup: @setup,
  legacy: @legacy)
  headers = {"Accept": type}
  skip_to_json = type != "application/json"
  query = {
    "mount": @mount,
    "setup": setup,
    "development ": development,
    "legacy": legacy
  }
  result = @database.request("PUT", "_api/foxx/service", body: body,
    headers: headers, skip_to_json: skip_to_json, query: query)
  return_foxx(result)
end
replaceConfiguration(body:) click to toggle source
# File lib/Foxx.rb, line 190
def replaceConfiguration(body:)
  query = {"mount": @mount}
  result = @database.request("PUT", "_api/foxx/configuration", query: query, body: body)
  return_foxx(result, :configuration)
end
replaceDependencies(body:) click to toggle source
# File lib/Foxx.rb, line 210
def replaceDependencies(body:)
  query = {"mount": @mount}
  result = @database.request("PUT", "_api/foxx/dependencies", query: query, body: body)
  return_foxx(result, :dependencies)
end
retrieve() click to toggle source

ACTIONS ===

# File lib/Foxx.rb, line 114
def retrieve
  query = {"mount": @mount}
  result = @database.request("GET", url: "_api/foxx/service")
  return_foxx(result)
end
retrieveConfiguration() click to toggle source

CONFIGURATION ===

# File lib/Foxx.rb, line 178
def retrieveConfiguration
  query = {"mount": @mount}
  result = @database.request("GET", "_api/foxx/configuration", query: query)
  return_foxx(result, :configuration)
end
retrieveDependencies() click to toggle source

DEPENDENCY ===

# File lib/Foxx.rb, line 198
def retrieveDependencies
  query = {"mount": @mount}
  result = @database.request("GET", "_api/foxx/dependencies", query: query)
  return_foxx(result, :dependencies)
end
run_script(name:, body: {}) click to toggle source
# File lib/Foxx.rb, line 223
def run_script(name:, body: {})
  query = {"mount": @mount}
  @database.request("POST", "_api/foxx/scripts/#{name}", query: query, body: body)
end
scripts() click to toggle source

MISCELLANEOUS

# File lib/Foxx.rb, line 218
def scripts
  query = {"mount": @mount}
  @database.request("GET", "_api/foxx/scripts", query: query)
end
swagger() click to toggle source
# File lib/Foxx.rb, line 260
def swagger
  query = {"mount": @mount}
  @database.request("GET", "_api/foxx/swagger", query: query)
end
tests(reporter: nil, idiomatic: nil) click to toggle source
# File lib/Foxx.rb, line 228
def tests(reporter: nil, idiomatic: nil)
  satisfy_category?(reporter, [nil, "default", "suite", "stream", "xunit", "tap"])
  headers = {}
  headers[:"Content-Type"] = case reporter
  when "stream"
    "application/x-ldjson"
  when "tap"
    "text/plain, text/*"
  when "xunit"
    "application/xml, text/xml"
  else
    nil
  end
  query = {"mount": @mount}
  @database.request("GET", "_api/foxx/scripts", query: query, headers: headers)
end
to_h() click to toggle source

TO HASH ===

# File lib/Foxx.rb, line 83
def to_h
  {
    "name": @name,
    "version": @version,
    "mount": @mount,
    "development": @development,
    "legacy": @legacy,
    "provides": @provides,
    "type": @type,
    "teardown": @teardown,
    "cache_name": @cache_name,
    "database": @database.name
  }.delete_if{|k,v| v.nil?}
end
type=(type) click to toggle source
# File lib/Foxx.rb, line 73
def type=(type)
  satisfy_category?(type, ["application/zip", "zip", "application/javascript", "javascript", "application/json", "json", "multipart/form-data", "data"], "type")
  type = "application/#{type}" if ["zip", "javascript", "json"].include?(type)
  type = "multipart/form-data" if type == "data"
  @type = type
end
Also aliased as: assign_type
update(body: @body, type: @type, teardown: @teardown, setup: @setup, legacy: @legacy) click to toggle source
# File lib/Foxx.rb, line 160
def update(body: @body, type: @type, teardown: @teardown,
  setup: @setup, legacy: @legacy)
  assign_type(type)
  headers = {"Accept": type}
  skip_to_json = @type != "application/json"
  query = {
    "mount":        @mount,
    "setup":        setup,
    "development ": development,
    "legacy":       legacy
  }
  result = @database.request("PATCH", "_api/foxx/service", body: body,
    headers: headers, skip_to_json: skip_to_json, query: query)
  return_foxx(result)
end
updateConfiguration(body:) click to toggle source
# File lib/Foxx.rb, line 184
def updateConfiguration(body:)
  query = {"mount": @mount}
  result = @database.request("PATCH", "_api/foxx/configuration", query: query, body: body)
  return_foxx(result, :configuration)
end
updateDependencies(body:) click to toggle source
# File lib/Foxx.rb, line 204
def updateDependencies(body:)
  query = {"mount": @mount}
  result = @database.request("PATCH", "_api/foxx/dependencies", query: query, body: body)
  return_foxx(result, :dependencies)
end

Private Instance Methods

return_foxx(result, val=nil) click to toggle source
# File lib/Foxx.rb, line 98
def return_foxx(result, val=nil)
  return result if @server.async != false
  case val
  when :configuration
    @configuration = result
  when :dependencies
    @dependencies = result
  else
    assign_attributes(result)
  end
  return return_directly?(result) ? result : self
end