lib/groupdocs/user.rb in groupdocs-1.5.1 vs lib/groupdocs/user.rb in groupdocs-1.5.2

- old
+ new

@@ -58,33 +58,108 @@ GroupDocs::User.new data.merge(json) end # - # Generates new active user embed key. + # Delete account user. # # @example - # GroupDocs::User.embed_key!('test-area') + # user = GroupDocs::User.get! + # GroupDocs::User.delete!(user.users!.last) + # #=> "826e3b54e009ce51" + # + # @param [GroupDocs::User] user + # @param [Hash] access Access credentials + # @option access [String] :client_id + # @option access [String] :private_key + # @return [String] + # + # @raise [ArgumentError] if user is not GroupDocs::User object + # + def self.delete!(user, access = {}) + user.is_a?(GroupDocs::User) or raise ArgumentError, + "User should be GroupDocs::User object, received: #{user.inspect}" + + json = Api::Request.new do |request| + request[:access] = access + request[:method] = :DELETE + request[:path] = "/mgmt/{{client_id}}/account/users/#{user.primary_email}" + end.execute! + + json[:guid] + end + + # + # Generates new user embed key. + # + # @example + # GroupDocs::User.generate_embed_key!('test-area') # #=> "60a06ef8f23a49cf807977f1444fbdd8" # # @param [String] area # @param [Hash] access Access credentials # @option access [String] :client_id # @option access [String] :private_key # @return [String] # - def self.embed_key!(area, access = {}) + def self.generate_embed_key!(area, access = {}) json = Api::Request.new do |request| request[:access] = access request[:method] = :GET request[:path] = "/mgmt/{{client_id}}/embedkey/new/#{area}" end.execute! json[:key][:guid] end # + # Get user embed key. Generate new embed key if area not exists. + # + # @example + # GroupDocs::User.get_embed_key!('test-area') + # #=> "60a06ef8f23a49cf807977f1444fbdd8" + # + # @param [String] area + # @param [Hash] access Access credentials + # @option access [String] :client_id + # @option access [String] :private_key + # @return [String] + # + def self.get_embed_key!(area, access = {}) + json = Api::Request.new do |request| + request[:access] = access + request[:method] = :GET + request[:path] = "/mgmt/{{client_id}}/embedkey/#{area}" + end.execute! + + json[:key][:guid] + end + + # + # Get area name by embed key. + # + # @example + # GroupDocs::User.area!('60a06eg8f23a49cf807977f1444fbdd8') + # #=> "test-area" + # + # @param [String] embed_key + # @param [Hash] access Access credentials + # @option access [String] :client_id + # @option access [String] :private_key + # @return [String] + # + def self.area!(embed_key, access = {}) + json = Api::Request.new do |request| + request[:access] = access + request[:method] = :GET + request[:path] = "/mgmt/{{client_id}}/embedkey/guid/#{embed_key}" + end.execute! + + json[:key][:area] + end + + # # Returns an array of storage providers. # # @example # providers = GroupDocs::User.providers! # providers.first.provider @@ -103,9 +178,30 @@ end.execute! json[:providers].map do |provider| Storage::Provider.new(provider) end + end + + # + # Logins user using user name and password. + # + # @example + # user = GroupDocs::User.login!('doe@john.com', 'password') + # user.first_name + # #=> "John" + # + # @return [GroupDocs::User] + # + def self.login!(email, password) + json = Api::Request.new do |request| + request[:sign] = false + request[:method] = :POST + request[:path] = "/shared/users/#{email}/logins" + request[:request_body] = password + end.execute! + + new(json[:user]) end # @attr [Integer] id attr_accessor :id # @attr [String] guid