lib/cfoundry/user.rb in cfoundry-0.2.0 vs lib/cfoundry/user.rb in cfoundry-0.2.1
- old
+ new
@@ -1,47 +1,69 @@
module CFoundry
+ # Class for representing a user on a given target (via Client).
+ #
+ # Goes not guarantee that the user exists; used for both user creation and
+ # retrieval, as the attributes are all lazily retrieved. Setting attributes
+ # does not perform any requests; use #update! to commit your changes.
class User
+ # User email.
attr_reader :email
+
+ # Create a User object.
+ #
+ # You'll usually call Client#user instead
def initialize(email, client, manifest = nil)
@email = email
@client = client
@manifest = manifest
end
- def inspect
+ def inspect # :nodoc:
"#<User '#@email'>"
end
- def manifest
- @manifest ||= @client.rest.user(@email)
- end
-
+ # Delete the user from the target.
def delete!
@client.rest.delete_user(@email)
end
+ # Create the user on the target.
+ #
+ # Call this after setting the various attributes.
def create!
@client.rest.create_user(@manifest.merge("email" => @email))
end
+ # Update user attributes.
def update!(what = {})
@client.rest.update_user(@email, manifest.merge(what))
@manifest = nil
end
+ # Check if the user exists on the target.
def exists?
@client.rest.user(@email)
true
rescue CFoundry::Denied
false
end
+ # Check if the user is an administrator.
def admin?
manifest["admin"]
end
+ # Set the user's password.
+ #
+ # Call #update! after using this.
def password=(str)
manifest["password"] = str
+ end
+
+ private
+
+ def manifest
+ @manifest ||= @client.rest.user(@email)
end
end
end