driftrock-service 0.4.14 → 0.4.15
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/driftrock-service/driftrock_model.rb +1 -2
- data/lib/driftrock-service/driftrock_model/company.rb +30 -12
- data/lib/driftrock-service/driftrock_model/company_invite.rb +11 -0
- data/lib/driftrock-service/driftrock_model/driftrock_app.rb +4 -2
- data/lib/driftrock-service/driftrock_model/user.rb +22 -7
- data/lib/driftrock-service/version.rb +1 -1
- data/spec/models/company_spec.rb +2 -2
- data/spec/models/driftrock_app_spec.rb +1 -1
- metadata +2 -1
@@ -41,7 +41,7 @@ module Driftrock::Service::DriftrockModel
|
|
41
41
|
object_hash = get_from_api_method.call("/#{type}/#{args.first}")
|
42
42
|
new(object_hash)
|
43
43
|
else
|
44
|
-
super
|
44
|
+
super(method_sym, *args)
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
@@ -88,7 +88,6 @@ module Driftrock::Service::DriftrockModel
|
|
88
88
|
else
|
89
89
|
symbolise_keys(object_hash)
|
90
90
|
end
|
91
|
-
|
92
91
|
object_hash.each do |(key, value)|
|
93
92
|
instance_variable_set(("@"+key.to_s).to_sym, value)
|
94
93
|
instance_var_reader = lambda { instance_variable_get("@" + key.to_s) }
|
@@ -4,20 +4,22 @@ module Driftrock::Service::DriftrockModel
|
|
4
4
|
set_api_path "/dashboard_api/company"
|
5
5
|
|
6
6
|
attr_reader :id, :name
|
7
|
-
|
7
|
+
|
8
|
+
def initialize(object_hash)
|
9
|
+
super(object_hash)
|
10
|
+
if @data_sources
|
11
|
+
@channels = @data_sources.map do |channel_data|
|
12
|
+
build_channel_from_data(channel_data)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
8
17
|
def channels(refresh=false)
|
9
18
|
unless @channels && !refresh
|
10
19
|
@channels = []
|
11
20
|
response = get_from_api_method.call('/channels')
|
12
21
|
response.each do |channel_data|
|
13
|
-
|
14
|
-
channel = Channel.new({
|
15
|
-
profile_id: channel_data[:profile],
|
16
|
-
})
|
17
|
-
channel.channel_type = ChannelType.new({
|
18
|
-
name: channel_data[:type]
|
19
|
-
})
|
20
|
-
@channels << channel
|
22
|
+
@channels << build_channel_from_data(channel_data)
|
21
23
|
end
|
22
24
|
end
|
23
25
|
@channels
|
@@ -59,12 +61,28 @@ module Driftrock::Service::DriftrockModel
|
|
59
61
|
!found
|
60
62
|
end
|
61
63
|
|
62
|
-
def
|
64
|
+
def invite_user(email)
|
63
65
|
response = post_to_api_method.call(
|
64
|
-
'/
|
66
|
+
'/invite_user', {user_to_invite_email: email}
|
65
67
|
)
|
66
|
-
|
68
|
+
invitation = symbolise_keys(response)
|
69
|
+
if invitation[:has_user].is_a?(String)
|
70
|
+
invitation[:has_user] = !!(invitation[:has_user] =~ /true/i)
|
71
|
+
end
|
72
|
+
invitation
|
67
73
|
end
|
74
|
+
private
|
68
75
|
|
76
|
+
def build_channel_from_data(channel_data)
|
77
|
+
channel_data = symbolise_keys(channel_data)
|
78
|
+
channel = Channel.new({
|
79
|
+
profile_id: channel_data[:profile],
|
80
|
+
})
|
81
|
+
channel.channel_type = ChannelType.new({
|
82
|
+
name: channel_data[:type]
|
83
|
+
})
|
84
|
+
channel
|
85
|
+
end
|
86
|
+
|
69
87
|
end
|
70
88
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module Driftrock::Service::DriftrockModel
|
2
|
+
class CompanyInvite
|
3
|
+
include Driftrock::Service::DriftrockModel
|
4
|
+
set_api_path "/dashboard_api/invite"
|
5
|
+
attr_reader :invite_code, :email, :has_user, :company
|
6
|
+
def initialize(object_hash)
|
7
|
+
super(object_hash)
|
8
|
+
@company = Company.new(company)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -6,12 +6,14 @@ module Driftrock::Service::DriftrockModel
|
|
6
6
|
|
7
7
|
[:twitter, :facebook, :adwords, :conversion, :user].each do |data_type|
|
8
8
|
define_method("requires_#{data_type}_data?".to_sym) do
|
9
|
-
|
9
|
+
req_method_sym = "requirement_for_#{data_type}_data".to_sym
|
10
|
+
requirement = respond_to?(req_method_sym) ? send(req_method_sym) : :none
|
10
11
|
requirement = requirement ? requirement.to_sym : :none
|
11
12
|
requirement == :requires
|
12
13
|
end
|
13
14
|
define_method("uses_#{data_type}_data?".to_sym) do
|
14
|
-
|
15
|
+
req_method_sym = "requirement_for_#{data_type}_data".to_sym
|
16
|
+
requirement = respond_to?(req_method_sym) ? send(req_method_sym) : :none
|
15
17
|
requirement = requirement ? requirement.to_sym : :none
|
16
18
|
[:requires, :optional].include?(requirement)
|
17
19
|
end
|
@@ -2,7 +2,15 @@ module Driftrock::Service::DriftrockModel
|
|
2
2
|
class User
|
3
3
|
include Driftrock::Service::DriftrockModel
|
4
4
|
set_api_path "/dashboard_api/user"
|
5
|
-
attr_reader :id, :session_id, :first_name, :last_name, :email
|
5
|
+
attr_reader :id, :session_id, :first_name, :last_name, :email, :invites
|
6
|
+
|
7
|
+
def initialize(object_hash)
|
8
|
+
super(object_hash)
|
9
|
+
@invites = [] unless invites && invites.is_a?(Array)
|
10
|
+
@invites = invites.map do |invite|
|
11
|
+
CompanyInvite.new(invite)
|
12
|
+
end
|
13
|
+
end
|
6
14
|
|
7
15
|
def admin?
|
8
16
|
@check_admin
|
@@ -13,22 +21,29 @@ module Driftrock::Service::DriftrockModel
|
|
13
21
|
#Get session id
|
14
22
|
end
|
15
23
|
|
16
|
-
def self.find_by_email(email)
|
17
|
-
object_hash = get_from_api_method.call("/#{email}/by_email")
|
18
|
-
new(object_hash)
|
19
|
-
end
|
20
|
-
|
21
24
|
def self.find_by_session_id(session_id)
|
22
25
|
object_hash = get_from_api_method.call("/#{session_id}")
|
23
26
|
new(object_hash)
|
24
27
|
end
|
25
28
|
|
26
|
-
|
27
29
|
def user_admin?
|
28
30
|
response = get_from_api_method.call("/#{session_id}/is_admin")
|
29
31
|
response['is_admin'] =~ /true/
|
30
32
|
end
|
33
|
+
|
34
|
+
def add_invite(invite_code)
|
35
|
+
post_to_api_method.call("/invitation/#{invite_code}/add")
|
36
|
+
end
|
37
|
+
|
38
|
+
|
39
|
+
def accept_invitation(company_id)
|
40
|
+
post_to_api_method.call("/invitation/#{company_id}/accept")
|
41
|
+
end
|
31
42
|
|
43
|
+
def reject_invitation(company_id)
|
44
|
+
post_to_api_method.call("/invitation/#{company_id}/reject")
|
45
|
+
end
|
46
|
+
|
32
47
|
def add_company(company_data)
|
33
48
|
post_to_api_method.call("/company", company_data.merge({
|
34
49
|
user_id: session_id
|
data/spec/models/company_spec.rb
CHANGED
@@ -26,8 +26,8 @@ describe DriftrockModel::Company do
|
|
26
26
|
|
27
27
|
it "should allow a user to be added to a company" do
|
28
28
|
@post_method.should_receive(:call).
|
29
|
-
with("/
|
30
|
-
@test_company.
|
29
|
+
with("/invite_user", {:user_to_invite_email=>@test_user.email}).and_return({'status' => 'success'})
|
30
|
+
@test_company.invite_user(@test_user.email).should be_true
|
31
31
|
end
|
32
32
|
|
33
33
|
it "should be have knowledge of which channels it has access to" do
|
@@ -8,7 +8,7 @@ describe DriftrockModel::DriftrockApp do
|
|
8
8
|
end
|
9
9
|
|
10
10
|
it "should be able to get an app by its app_id" do
|
11
|
-
@get_method.should_receive(:call).with("/string-app-id
|
11
|
+
@get_method.should_receive(:call).with("/app_id/string-app-id").
|
12
12
|
and_return({id: 1, name: "test-app"})
|
13
13
|
DriftrockModel::DriftrockApp.find_by_app_id("string-app-id").id.should == 1
|
14
14
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: driftrock-service
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.15
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -75,6 +75,7 @@ files:
|
|
75
75
|
- lib/driftrock-service/driftrock_model/channel.rb
|
76
76
|
- lib/driftrock-service/driftrock_model/channel_type.rb
|
77
77
|
- lib/driftrock-service/driftrock_model/company.rb
|
78
|
+
- lib/driftrock-service/driftrock_model/company_invite.rb
|
78
79
|
- lib/driftrock-service/driftrock_model/driftrock_app.rb
|
79
80
|
- lib/driftrock-service/driftrock_model/user.rb
|
80
81
|
- lib/driftrock-service/driftrock_model/visitor/driftrock_app.rb
|