Class: MetrifoxSDK::Usages::API
- Defined in:
- lib/metrifox_sdk/usages/api.rb
Instance Method Summary collapse
- #fetch_access(base_url, api_key, request_payload) ⇒ Object
- #fetch_checkout_key(base_url, api_key) ⇒ Object
- #fetch_tenant_id(base_url, api_key) ⇒ Object
- #list_events(base_url, api_key, query_params = {}) ⇒ Object
- #quantity_price(base_url, api_key, customer_key:, feature_key:, quantity:) ⇒ Object
- #record_usage(base_url, api_key, request_payload) ⇒ Object
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) = 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] = if 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 |