Class: CrusadeRails::UserSubscriptionService

Inherits:
Object
  • Object
show all
Defined in:
app/services/crusade_rails/user_subscription_service.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(user_id = nil) ⇒ UserSubscriptionService

Returns a new instance of UserSubscriptionService.

Raises:

  • (ArgumentError)


7
8
9
10
11
# File 'app/services/crusade_rails/user_subscription_service.rb', line 7

def initialize(user_id = nil)
  self.user_id = Integer user_id

  raise ArgumentError unless user_id
end

Instance Attribute Details

#user_idObject

Returns the value of attribute user_id.



5
6
7
# File 'app/services/crusade_rails/user_subscription_service.rb', line 5

def user_id
  @user_id
end

Instance Method Details

#authenticate(authenticity_token) ⇒ Object



48
49
50
# File 'app/services/crusade_rails/user_subscription_service.rb', line 48

def authenticate authenticity_token
  UserSubscription.where(user_id: user_id, authenticity_token: authenticity_token).any?
end

#new_subscriptionObject



13
14
15
16
17
18
19
20
21
# File 'app/services/crusade_rails/user_subscription_service.rb', line 13

def new_subscription
  subscription = UserSubscription.where(user_id: user_id).last ||
                 create_user_subscription

  subscription.authenticity_token = generate_authenticity_token

  subscription.save # do something if the save fails
  subscription
end

#register(authenticity_token, user_token) ⇒ Object



23
24
25
26
27
28
29
# File 'app/services/crusade_rails/user_subscription_service.rb', line 23

def register authenticity_token, user_token
  subscription = UserSubscription.where(user_id: user_id, authenticity_token: authenticity_token).first
  return :unauthenticated unless subscription

  subscription.update_attributes user_token: user_token
  subscription.save
end

#subscribe(user_token, device_token) ⇒ Object



31
32
33
34
35
36
37
38
# File 'app/services/crusade_rails/user_subscription_service.rb', line 31

def subscribe user_token, device_token
  subscription = find_subscription_by_user_token user_token
  subscription.update_attributes({
    device_token: device_token,
    active: true
  })
  subscription.save
end

#unsubscribe(user_token, device_token) ⇒ Object



40
41
42
43
44
45
46
# File 'app/services/crusade_rails/user_subscription_service.rb', line 40

def unsubscribe user_token, device_token
  subscription = find_subscription_by_user_token user_token
  subscription.update_attributes({
    active: false
  })
  subscription.save
end