lib/gooddata/models/membership.rb in gooddata-0.6.7 vs lib/gooddata/models/membership.rb in gooddata-0.6.8
- old
+ new
@@ -1,14 +1,17 @@
# encoding: UTF-8
require 'multi_json'
+require 'pmap'
require_relative 'project'
require_relative 'project_role'
+require_relative '../rest/object'
+
module GoodData
- class Membership
+ class Membership < GoodData::Rest::Object
attr_reader :json
ASSIGNABLE_MEMBERS = [
:email,
:first_name,
@@ -126,21 +129,21 @@
# Gets author (person who created) of this object
#
# @return [String] Author
def author
url = @json['user']['meta']['author']
- data = GoodData.get url
- GoodData::Membership.new(data)
+ data = client.get url
+ client.factory.create(GoodData::Membership, data)
end
# Gets the contributor
#
# @return [String] Contributor
def contributor
url = @json['user']['meta']['contributor']
- data = GoodData.get url
- GoodData::Membership.new(data)
+ data = client.get url
+ client.factory.create(GoodData::Membership, data)
end
# Gets date when created
#
# @return [DateTime] Created date
@@ -188,11 +191,11 @@
#
# @return [Array<GoodData::Invitation>] List of invitations
def invitations
res = []
- tmp = GoodData.get @json['user']['links']['invitations']
+ tmp = client.get @json['user']['links']['invitations']
tmp['invitations'].each do |invitation|
# TODO: Something is missing here
end
res
@@ -237,11 +240,11 @@
#
# @return [Hash] Hash with permissions
def permissions
res = {}
- tmp = GoodData.get @json['user']['links']['permissions']
+ tmp = client.get @json['user']['links']['permissions']
tmp['associatedPermissions']['permissions'].each do |permission_name, permission_value|
res[permission_name] = permission_value
end
res
@@ -261,23 +264,23 @@
@json['user']['content']['phonenumber'] = new_phone_number
end
# Gets profile of this membership
def profile
- raw = GoodData.get @json['user']['links']['self']
- GoodData::Profile.new(raw)
+ raw = client.get @json['user']['links']['self']
+ client.factory.create(GoodData::Profile, raw)
end
# Gets URL of profile membership
def profile_url
@json['user']['links']['self']
end
# Gets project which this membership relates to
def project
- raw = GoodData.get project_url
- GoodData::Project.new(raw)
+ raw = client.get project_url
+ client.factory.create(GoodData::Project, raw)
end
# Gets project id
def project_id
@json['user']['links']['roles'].split('/')[3]
@@ -290,20 +293,16 @@
# Gets the projects of user
#
# @return [Array<GoodData::Project>] Array of projets
def projects
- res = []
-
- tmp = GoodData.get @json['user']['links']['projects']
- tmp['projects'].each do |project_meta|
+ tmp = client.get @json['user']['links']['projects']
+ tmp['projects'].map do |project_meta|
project_uri = project_meta['project']['links']['self']
- project = GoodData.get project_uri
- res << GoodData::Project.new(project)
+ project = client.get project_uri
+ client.factory.create(GoodData::Project, project)
end
-
- res
end
# Gets first role
def role
roles.first
@@ -311,19 +310,15 @@
# Gets the project roles of user
#
# @return [Array<GoodData::ProjectRole>] Array of project roles
def roles
- res = []
-
- tmp = GoodData.get @json['user']['links']['roles']
- tmp['associatedRoles']['roles'].each do |role_uri|
- role = GoodData.get role_uri
- res << GoodData::ProjectRole.new(role)
+ tmp = client.get @json['user']['links']['roles']
+ tmp['associatedRoles']['roles'].pmap do |role_uri|
+ role = client.get role_uri
+ client.factory.create(GoodData::ProjectRole, role)
end
-
- res
end
# Gets the status
#
# @return [String] Status
@@ -394,9 +389,9 @@
'self' => uri
}
}
}
- @json = GoodData.post("/gdc/projects/#{project_id}/users", payload)
+ @json = client.post("/gdc/projects/#{project_id}/users", payload)
end
end
end