Repository URL to install this package:
|
Version:
2.2.0 ▾
|
require_relative 'rpc/grants/grants_twirp'
require_relative 'helpers/object_to_hash'
class Namara
def add_grant(grant = {})
response = rpc_request(grant_client) do |client|
client.add_grant(serialize_grant(grant), rpc_headers)
end
OpenStruct.new(response.data.grant.to_h)
end
def list_grants(dataset_ids, filter = {})
sanitized_filters = {}
filter.fetch(:offset, nil)? sanitized_filters.merge!(offset: {value: filter[:offset]}): sanitized_filters
filter.fetch(:limit, nil)? sanitized_filters.merge!(limit: {value: filter[:limit]}): sanitized_filters
payload = {
filter: sanitized_filters,
dataset_ids: Array(dataset_ids)
}
response = rpc_request(grant_client) do |client|
client.list_grants(payload, rpc_headers)
end
ObjectToHash.to_hash_array(response.data.grants.to_a)
end
def list_group_grants(organization_id, group_ids, filter = {})
sanitized_filters = {}
filter.fetch(:offset, nil)? sanitized_filters.merge!(offset: {value: filter[:offset]}): sanitized_filters
filter.fetch(:limit, nil)? sanitized_filters.merge!(limit: {value: filter[:limit]}): sanitized_filters
payload = {
filter: sanitized_filters,
organization_id: organization_id,
group_ids: Array(group_ids)
}
response = rpc_request(grant_client) do |client|
client.list_group_grants(payload, rpc_headers)
end
ObjectToHash.to_hash_array(response.data.grants.to_a)
end
def update_grant(grant)
response = rpc_request(grant_client) do |client|
client.update_grant(serialize_grant(grant), rpc_headers)
end
OpenStruct.new(response.data.grant.to_h)
end
def remove_grant(grant = {})
rpc_request(grant_client) do |client|
client.remove_grant(serialize_grant(grant), rpc_headers)
end
end
private
def serialize_grant(grant)
{ grant: grant.to_h }
end
def grant_client
@grant_client ||= Grants::GrantsServiceClient.new(api_url)
end
end