Class: Pushover::Groups

Inherits:
Object
  • Object
show all
Defined in:
lib/pushover/groups.rb

Overview

Groups provides operations for the Delivery Groups API.

Constant Summary collapse

GROUP_PATTERN =
/\A[A-Za-z0-9]{30}\z/

Instance Method Summary collapse

Constructor Details

#initialize(client) ⇒ Groups

Returns a new instance of Groups.



8
9
10
# File 'lib/pushover/groups.rb', line 8

def initialize(client)
  @client = client
end

Instance Method Details

#add_user(group:, user:, device: nil, memo: nil) ⇒ Response

Add a user membership to a delivery group.

Returns:

  • (Response)

    the Pushover API response



48
49
50
51
52
53
54
55
# File 'lib/pushover/groups.rb', line 48

def add_user(group:, user:, device: nil, memo: nil)
  validate_membership!(group, user, device)
  validate_memo!(memo) unless memo.nil?

  fields = membership_fields(user, device)
  fields['memo'] = memo unless memo.nil?
  post_group_action(group, 'add_user', fields)
end

#create(name:) ⇒ Response

Create an empty delivery group.

Returns:

  • (Response)

    the Pushover API response



14
15
16
17
18
19
20
21
22
# File 'lib/pushover/groups.rb', line 14

def create(name:)
  validate_name!(name)

  response = @client.connection.post(
    path: '/1/groups.json',
    body: Oj.dump('token' => @client.token, 'name' => name)
  )
  Response.create_from_excon_response(response)
end

#disable_user(group:, user:, device: nil) ⇒ Response

Temporarily disable a user's matching group memberships.

Returns:

  • (Response)

    the Pushover API response



65
66
67
# File 'lib/pushover/groups.rb', line 65

def disable_user(group:, user:, device: nil)
  post_user_action('disable_user', group:, user:, device:)
end

#enable_user(group:, user:, device: nil) ⇒ Response

Re-enable a user's matching group memberships.

Returns:

  • (Response)

    the Pushover API response



71
72
73
# File 'lib/pushover/groups.rb', line 71

def enable_user(group:, user:, device: nil)
  post_user_action('enable_user', group:, user:, device:)
end

#get(group:) ⇒ Response

Retrieve a delivery group's name and users.

Returns:

  • (Response)

    the Pushover API response



36
37
38
39
40
41
42
43
44
# File 'lib/pushover/groups.rb', line 36

def get(group:)
  validate_group!(group)

  response = @client.connection.get(
    path:  "/1/groups/#{group}.json",
    query: { token: @client.token }
  )
  Response.create_from_excon_response(response)
end

#listResponse

List delivery groups owned by the client's account or team.

Returns:

  • (Response)

    the Pushover API response



26
27
28
29
30
31
32
# File 'lib/pushover/groups.rb', line 26

def list
  response = @client.connection.get(
    path:  '/1/groups.json',
    query: { token: @client.token }
  )
  Response.create_from_excon_response(response)
end

#remove_user(group:, user:, device: nil) ⇒ Response

Remove a user's matching memberships from a delivery group.

Returns:

  • (Response)

    the Pushover API response



59
60
61
# File 'lib/pushover/groups.rb', line 59

def remove_user(group:, user:, device: nil)
  post_user_action('remove_user', group:, user:, device:)
end

#rename(group:, name:) ⇒ Response

Rename a delivery group.

Returns:

  • (Response)

    the Pushover API response



77
78
79
80
81
# File 'lib/pushover/groups.rb', line 77

def rename(group:, name:)
  validate_group!(group)
  validate_name!(name)
  post_group_action(group, 'rename', 'name' => name)
end