Class: GoogleDrive::Acl
- Inherits:
-
Object
- Object
- GoogleDrive::Acl
- Extended by:
- Forwardable
- Includes:
- Util
- Defined in:
- lib/google_drive/acl.rb
Overview
ACL (access control list) of a spreadsheet.
Use GoogleDrive::Spreadsheet#acl to get GoogleDrive::Acl object. See GoogleDrive::Spreadsheet#acl for usage example.
This code is based on github.com/guyboertje/gdata-spreadsheet-ruby .
Constant Summary
Constants included from Util
Util::EXT_TO_CONTENT_TYPE, Util::IMPORTABLE_CONTENT_TYPE_MAP
Instance Method Summary collapse
-
#delete(entry) ⇒ Object
Deletes an ACL entry.
-
#initialize(session, file) ⇒ Acl
constructor
private
A new instance of Acl.
- #inspect ⇒ Object
-
#push(params_or_entry, options = {}) ⇒ Object
Adds a new entry.
- #update_role(entry) ⇒ Object private
Methods included from Util
concat_url, construct_and_query, construct_query, convert_params, delegate_api_methods, encode_query, get_singleton_class, h
Constructor Details
#initialize(session, file) ⇒ Acl
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of Acl.
20 21 22 23 24 25 26 |
# File 'lib/google_drive/acl.rb', line 20 def initialize(session, file) @session = session @file = file = @session.drive.(@file.id, fields: '*') @entries = ..map { |perm| AclEntry.new(perm, self) } end |
Instance Method Details
#delete(entry) ⇒ Object
Deletes an ACL entry.
e.g.
spreadsheet.acl.delete(spreadsheet.acl[1])
82 83 84 85 |
# File 'lib/google_drive/acl.rb', line 82 def delete(entry) @session.drive.(@file.id, entry.id) @entries.delete(entry) end |
#inspect ⇒ Object
96 97 98 |
# File 'lib/google_drive/acl.rb', line 96 def inspect format("\#<%p %p>", self.class, @entries) end |
#push(params_or_entry, options = {}) ⇒ Object
Adds a new entry. entry is either a GoogleDrive::AclEntry or a Hash with keys :type, :email_address, :domain, :role and :allow_file_discovery. See GoogleDrive::AclEntry#type and GoogleDrive::AclEntry#role for the document of the fields.
Also you can pass the second hash argument options, which specifies optional query parameters for the API. Possible keys of options are,
-
:email_message – A custom message to include in notification emails
-
:send_notification_email – Whether to send notification emails when sharing to users or groups. (Default: true)
-
:transfer_ownership – Whether to transfer ownership to the specified user and downgrade the current owner to a writer. This parameter is required as an acknowledgement of the side effect. (Default: false)
e.g.
# A specific user can read or write.
spreadsheet.acl.push(
{type: "user", email_address: "[email protected]", role: "reader"})
spreadsheet.acl.push(
{type: "user", email_address: "[email protected]", role: "writer"})
# Share with a Google Apps domain.
spreadsheet.acl.push(
{type: "domain", domain: "gimite.net", role: "reader"})
# Publish on the Web.
spreadsheet.acl.push(
{type: "anyone", role: "reader"})
# Anyone who knows the link can read.
spreadsheet.acl.push(
{type: "anyone", allow_file_discovery: false, role: "reader"})
# Set ACL without sending notification emails
spreadsheet.acl.push(
{type: "user", email_address: "[email protected]", role: "reader"},
{send_notification_email: false})
See here for parameter detais: developers.google.com/drive/v3/reference/permissions/create
67 68 69 70 71 72 73 74 75 76 |
# File 'lib/google_drive/acl.rb', line 67 def push(params_or_entry, = {}) entry = params_or_entry.is_a?(AclEntry) ? params_or_entry : AclEntry.new(params_or_entry) = @session.drive.( @file.id, entry.params, { fields: '*' }.merge() ) new_entry = AclEntry.new(, self) @entries.push(new_entry) new_entry end |
#update_role(entry) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
88 89 90 91 92 93 94 |
# File 'lib/google_drive/acl.rb', line 88 def update_role(entry) = @session.drive.( @file.id, entry.id, { role: entry.role }, fields: '*' ) entry. = entry end |