Class: ArangoUser

Inherits:
ArangoServer show all
Defined in:
lib/ArangoRB_User.rb

Overview

USER ===

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from ArangoServer

address, async, async=, batch, cancelAsync, changePropertyWAL, checkPort, cluster, cluster=, clusterRoundtrip, clusterStatistics, collection, collection=, createDumpBatch, database, database=, databaseVersion, databases, default_server, destroyAllAsync, destroyAsync, destroyCluster, destroyDumpBatch, destroyExpiredAsync, echo, endpoints, execute, executeCluster, executeClusterHead, executeClusterPut, fetchAsync, flushWAL, graph, graph=, log, pendingAsync, prolongDumpBatch, propertyWAL, reload, request, restart, retrieveAsync, retrieveDoneAsync, retrievePendingAsync, return_result, return_result_async, role, server, serverId, shutdown, sleep, statistics, tasks, test, time, transactions, updateCluster, user, user=, username, users, verbose, verbose=, version

Constructor Details

#initialize(user: @@user, password: nil, active: nil, extra: nil) ⇒ ArangoUser

TESTED



4
5
6
7
8
9
10
# File 'lib/ArangoRB_User.rb', line 4

def initialize(user: @@user, password: nil, active: nil, extra: nil) # TESTED
  @password = password
  @user = user
  @active = active
  @extra = extra
  @idCache = "USER_#{@user}"
end

Instance Attribute Details

#activeObject (readonly)

Returns the value of attribute active.



12
13
14
# File 'lib/ArangoRB_User.rb', line 12

def active
  @active
end

#extraObject (readonly)

Returns the value of attribute extra.



12
13
14
# File 'lib/ArangoRB_User.rb', line 12

def extra
  @extra
end

#idCacheObject (readonly)

Returns the value of attribute idCache.



12
13
14
# File 'lib/ArangoRB_User.rb', line 12

def idCache
  @idCache
end

#userObject (readonly) Also known as: name

Returns the value of attribute user.



12
13
14
# File 'lib/ArangoRB_User.rb', line 12

def user
  @user
end

Instance Method Details

#[](database) ⇒ Object Also known as: database



25
26
27
28
29
30
31
# File 'lib/ArangoRB_User.rb', line 25

def [](database)
  if self.databases[database] == "rw"
    ArangoDatabase.new database: database
  else
    "This User does not have access to Database #{database}."
  end
end

#createObject

TESTED



34
35
36
37
38
39
40
41
42
43
44
# File 'lib/ArangoRB_User.rb', line 34

def create # TESTED
  body = {
    "user" => @user,
    "passwd" => @password,
    "active" => @active,
    "extra" => @extra
  }.delete_if{|k,v| v.nil?}.to_json
  request = @@request.merge({ :body => body })
  result = self.class.post("/_api/user", request)
  return_result result: result
end

#databasesObject

TESTED



67
68
69
70
# File 'lib/ArangoRB_User.rb', line 67

def databases # TESTED
  result = self.class.get("/_api/user/#{@user}/database/", @@request)
  return_result result: result, key: "result"
end

#destroyObject

TESTED



126
127
128
129
# File 'lib/ArangoRB_User.rb', line 126

def destroy # TESTED
  result = self.class.delete("/_api/user/#{@user}", @@request)
  return_result result: result, caseTrue: true
end

#grant(database: @@database) ⇒ Object

TESTED



51
52
53
54
55
56
57
# File 'lib/ArangoRB_User.rb', line 51

def grant(database: @@database) # TESTED
  database = database.database if database.is_a?(ArangoDatabase)
  body = { "grant" => "rw" }.to_json
  request = @@request.merge({ :body => body })
  result = self.class.put("/_api/user/#{@user}/database/#{database}", request)
  return_result result: result, caseTrue: true
end

#replace(password:, active: nil, extra: nil) ⇒ Object

TESTED



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/ArangoRB_User.rb', line 72

def replace(password:, active: nil, extra: nil) # TESTED
  body = {
    "passwd" => password,
    "active" => active,
    "extra" => extra
  }.delete_if{|k,v| v.nil?}.to_json
  request = @@request.merge({ :body => body })
  result = self.class.put("/_api/user/#{@user}", request)
  return result.headers["x-arango-async-id"] if @@async == "store"
  return true if @@async
  result = result.parsed_response
  if @@verbose
    unless result["error"]
      @password = password
      @active = active.nil? || active
      @extra = extra
    end
    result
  else
    return result["errorMessage"] if result["error"]
    @password = password
    @active = active.nil? || active
    @extra = extra
    self
  end
end

#retrieveObject

TESTED



46
47
48
49
# File 'lib/ArangoRB_User.rb', line 46

def retrieve # TESTED
  result = self.class.get("/_api/user/#{@user}", @@request)
  return_result result: result
end

#return_result(result:, caseTrue: false, key: nil) ⇒ Object



131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
# File 'lib/ArangoRB_User.rb', line 131

def return_result(result:, caseTrue: false, key: nil)
  return result.headers["x-arango-async-id"] if @@async == "store"
  return true if @@async
  result = result.parsed_response
  if @@verbose || !result.is_a?(Hash)
    unless result["error"]
      @active = result["active"]
      @extra = result["extra"]
    end
    result
  else
    return result["errorMessage"] if result["error"]
    @active = result["active"]
    @extra = result["extra"]
    return true if caseTrue
    key.nil? ? self : result[key]
  end
end

#revoke(database: @@database) ⇒ Object

TESTED



59
60
61
62
63
64
65
# File 'lib/ArangoRB_User.rb', line 59

def revoke(database: @@database) # TESTED
  database = database.database if database.is_a?(ArangoDatabase)
  body = { "grant" => "none" }.to_json
  request = @@request.merge({ :body => body })
  result = self.class.put("/_api/user/#{@user}/database/#{database}", request)
  return_result result: result, caseTrue: true
end

#to_hashObject Also known as: to_h



15
16
17
18
19
20
21
22
# File 'lib/ArangoRB_User.rb', line 15

def to_hash
  {
    "user"        => @user,
    "active"      => @active,
    "extra"       => @extra,
    "idCache"     => @idCache
  }.delete_if{|k,v| v.nil?}
end

#update(password:, active: nil, extra: nil) ⇒ Object

TESTED



99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# File 'lib/ArangoRB_User.rb', line 99

def update(password: , active: nil, extra: nil) # TESTED
  body = {
    "passwd" => password,
    "active" => active,
    "extra" => extra
  }.delete_if{|k,v| v.nil?}.to_json
  request = @@request.merge({ :body => body })
  result = self.class.patch("/_api/user/#{@user}", request)
  return result.headers["x-arango-async-id"] if @@async == "store"
  return true if @@async
  result = result.parsed_response
  if @@verbose
    unless result["error"]
      @password = password
      @active = active.nil? || active
      @extra = extra
    end
    result
  else
    return result["errorMessage"] if result["error"]
    @password = password
    @active = active.nil? || active
    @extra = extra
    self
  end
end