Class: AbacatePay::Clients::CouponClient

Inherits:
Client
  • Object
show all
Defined in:
lib/abacate_pay/clients/coupon_client.rb

Overview

Client for discount coupons in the AbacatePay API.

Supports creating, listing, deleting and toggling coupons between active and inactive.

Constant Summary collapse

URI =
"coupons"

Instance Method Summary collapse

Constructor Details

#initialize(client = nil) ⇒ CouponClient

Returns a new instance of CouponClient.



12
13
14
# File 'lib/abacate_pay/clients/coupon_client.rb', line 12

def initialize(client = nil)
  super(URI, client)
end

Instance Method Details

#create(data) ⇒ Resources::Coupons

Parameters:

Returns:



32
33
34
35
36
37
38
39
40
# File 'lib/abacate_pay/clients/coupon_client.rb', line 32

def create(data)
  response = request("POST", "create", json: {
                       code: data.code,
                       discount: data.discount,
                       discountKind: data.discount_kind,
                       maxRedeems: data.max_redeems
                     })
  Resources::Coupons.new(response)
end

#delete(id) ⇒ Resources::Coupons

Parameters:

  • id (String)

    Coupon ID

Returns:



44
45
46
47
# File 'lib/abacate_pay/clients/coupon_client.rb', line 44

def delete(id)
  response = request("POST", "delete", json: { id: id })
  Resources::Coupons.new(response)
end

#get(id) ⇒ Resources::Coupons

Parameters:

  • id (String)

    Coupon ID

Returns:



25
26
27
28
# File 'lib/abacate_pay/clients/coupon_client.rb', line 25

def get(id)
  response = request("GET", "get", params: { id: id })
  Resources::Coupons.new(response)
end

#list(**params) ⇒ Array<Resources::Coupons>

Parameters:

  • params (Hash)

    Optional pagination params (after, before, limit)

Returns:



18
19
20
21
# File 'lib/abacate_pay/clients/coupon_client.rb', line 18

def list(**params)
  response = request("GET", "list", params: params.empty? ? nil : params)
  Array(response).map { |data| Resources::Coupons.new(data) }
end

#toggle(id) ⇒ Resources::Coupons

Parameters:

  • id (String)

    Coupon ID

Returns:



51
52
53
54
# File 'lib/abacate_pay/clients/coupon_client.rb', line 51

def toggle(id)
  response = request("POST", "toggle", json: { id: id })
  Resources::Coupons.new(response)
end