Class: MetrifoxSDK::Usages::API

Inherits:
BaseApi
  • Object
show all
Defined in:
lib/metrifox_sdk/usages/api.rb

Instance Method Summary collapse

Instance Method Details

#fetch_access(base_url, api_key, request_payload) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/metrifox_sdk/usages/api.rb', line 9

def fetch_access(base_url, api_key, request_payload)
  uri = URI.join(base_url, "usage/access")

  # Handle both hash and struct access patterns
  feature_key = get_value(request_payload, :feature_key)
  customer_key = get_value(request_payload, :customer_key)

  uri.query = URI.encode_www_form({
                                    feature_key: feature_key,
                                    customer_key: customer_key
                                  })

  response = make_request(uri, "GET", api_key)
  parse_response(response, "Failed to check access")
end

#fetch_checkout_key(base_url, api_key) ⇒ Object



76
77
78
79
80
81
# File 'lib/metrifox_sdk/usages/api.rb', line 76

def fetch_checkout_key(base_url, api_key)
  uri = URI.join(base_url, "auth/checkout-username")
  response = make_request(uri, "GET", api_key)
  data = parse_response(response, "Failed to get tenant checkout settings")
  data.dig("data", "checkout_username")
end

#fetch_tenant_id(base_url, api_key) ⇒ Object



69
70
71
72
73
74
# File 'lib/metrifox_sdk/usages/api.rb', line 69

def fetch_tenant_id(base_url, api_key)
  uri = URI.join(base_url, "auth/get-tenant-id")
  response = make_request(uri, "GET", api_key)
  data = parse_response(response, "Failed to get tenant id")
  data.dig("data", "tenant_id")
end

#list_events(base_url, api_key, query_params = {}) ⇒ Object



55
56
57
58
59
60
# File 'lib/metrifox_sdk/usages/api.rb', line 55

def list_events(base_url, api_key, query_params = {})
  uri = URI.join(base_url, "usage/events")
  uri.query = URI.encode_www_form(query_params) unless query_params.empty?
  response = make_request(uri, "GET", api_key)
  parse_response(response, "Failed to list usage events")
end

#quantity_price(base_url, api_key, customer_key:, feature_key:, quantity:) ⇒ Object



62
63
64
65
66
67
# File 'lib/metrifox_sdk/usages/api.rb', line 62

def quantity_price(base_url, api_key, customer_key:, feature_key:, quantity:)
  uri = URI.join(base_url, "usage/quantity-price")
  uri.query = URI.encode_www_form(customer_key: customer_key, feature_key: feature_key, quantity: quantity)
  response = make_request(uri, "GET", api_key)
  parse_response(response, "Failed to compute quantity price")
end

#record_usage(base_url, api_key, request_payload) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/metrifox_sdk/usages/api.rb', line 25

def record_usage(base_url, api_key, request_payload)
  uri = URI.join(base_url, "usage/events")

  # Handle both hash and struct access patterns
  customer_key = get_value(request_payload, :customer_key)
  event_name = get_value(request_payload, :event_name)
  quantity = get_value(request_payload, :quantity) || 1
  credit_used = get_value(request_payload, :credit_used)
  event_id = get_value(request_payload, :event_id)
  timestamp = get_value(request_payload, :timestamp)
   = get_value(request_payload, :metadata) || {}
  feature_key = get_value(request_payload, :feature_key)

  body = {
    customer_key:,
    quantity:,
    event_id:
  }

  # Add optional fields if present
  body[:credit_used] = credit_used if credit_used
  body[:timestamp] = timestamp if timestamp
  body[:metadata] =  if 
  body[:feature_key] = feature_key if feature_key
  body[:event_name] = event_name if event_name

  response = make_request(uri, "POST", api_key, body)
  parse_response(response, "Failed to record usage")
end