# frozen_string_literal: true
module WolfCore
module Integrations
module CustomValueApiOperations
include WolfCore::HttpOperations
def fetch_custom_values!(wolf_token:, tenant:, wolf_platform_url:, error_message:, error_data: nil, query: nil)
response = fetch_custom_values(
wolf_token: wolf_token,
tenant: tenant,
wolf_platform_url: wolf_platform_url,
query: query
)
validate_http_response(response: response, message: error_message, error_data: error_data)
response.body.dig("data", "table", "custom_values")
end
def fetch_custom_values(wolf_token:, tenant:, wolf_platform_url:, query: nil)
query ||= {}
parsed_http_get(
headers: { "Authorization" => "Bearer #{wolf_token}" },
url: "#{wolf_platform_url}/api/v2/custom_values",
query: query.merge(tenant: tenant)
)
end
def fetch_custom_value!(wolf_token:, custom_value_id:, tenant:, wolf_platform_url:, error_message:,
error_data: nil, query: nil)
response = fetch_custom_value(
wolf_token: wolf_token,
custom_value_id: custom_value_id,
tenant: tenant,
wolf_platform_url: wolf_platform_url,
query: query
)
validate_http_response(response: response, message: error_message, error_data: error_data)
response.body.dig("data", "table", "custom_value")
end
def fetch_custom_value(wolf_token:, custom_value_id:, tenant:, wolf_platform_url:, query: nil)
query ||= {}
parsed_http_get(
headers: { "Authorization" => "Bearer #{wolf_token}" },
url: "#{wolf_platform_url}/api/v2/custom_values/#{custom_value_id}",
query: query.merge(tenant: tenant)
)
end
def create_custom_value!(wolf_token:, custom_value:, tenant:, wolf_platform_url:, error_message:,
custom_requirement_id:, error_data: nil, query: nil)
response = create_custom_value(
wolf_token: wolf_token,
custom_value: custom_value,
tenant: tenant,
wolf_platform_url: wolf_platform_url,
custom_requirement_id: custom_requirement_id,
query: query
)
validate_http_response(response: response, message: error_message, error_data: error_data)
response
end
def create_custom_value(wolf_token:, custom_value:, tenant:, wolf_platform_url:, custom_requirement_id:,
query: nil)
query ||= {}
parsed_http_post(
headers: { "Authorization" => "Bearer #{wolf_token}" },
query: query.merge(tenant: tenant),
url: "#{wolf_platform_url}/api/v2/custom_requirements/#{custom_requirement_id}/custom_values",
body: custom_value
)
end
def update_custom_value!(wolf_token:, custom_value:, tenant:, wolf_platform_url:, error_message:,
custom_value_id:, error_data: nil, query: nil)
response = update_custom_value(
wolf_token: wolf_token,
custom_value: custom_value,
tenant: tenant,
wolf_platform_url: wolf_platform_url,
custom_value_id: custom_value_id,
query: query
)
validate_http_response(response: response, message: error_message, error_data: error_data)
response
end
def update_custom_value(wolf_token:, custom_value:, tenant:, wolf_platform_url:, custom_value_id:, query: nil)
query ||= {}
parsed_http_put(
headers: { "Authorization" => "Bearer #{wolf_token}" },
query: query.merge(tenant: tenant),
url: "#{wolf_platform_url}/api/v2/custom_values/#{custom_value_id}",
body: custom_value
)
end
def upsert_custom_value!(wolf_token:, tenant:, wolf_platform_url:, query:, custom_requirement_id:, custom_value:,
error_message:, error_data: nil)
response = fetch_custom_values(
wolf_token: wolf_token,
tenant: tenant,
wolf_platform_url: wolf_platform_url,
query: query
)
validate_http_response(response: response, message: error_message, error_data: error_data)
custom_values = response.body.dig("data", "table", "custom_values")
response = if custom_values&.any?
operation_type = :update
custom_value_id = custom_values.first["id"]
update_custom_value!(
wolf_platform_url: wolf_platform_url,
tenant: tenant,
wolf_token: wolf_token,
custom_value_id: custom_value_id,
custom_value: custom_value,
error_message: error_message,
error_data: error_data
)
else
operation_type = :create
create_custom_value!(
wolf_platform_url: wolf_platform_url,
tenant: tenant,
wolf_token: wolf_token,
custom_requirement_id: custom_requirement_id,
custom_value: custom_value,
error_message: error_message,
error_data: error_data
)
end
{ operation_type: operation_type, response: response }
end
def upsert_custom_value(wolf_token:, tenant:, wolf_platform_url:, query:, custom_requirement_id:, custom_value:)
response = fetch_custom_values(
wolf_token: wolf_token,
tenant: tenant,
wolf_platform_url: wolf_platform_url,
query: query
)
return response unless response_success?(response)
custom_values = response.body.dig("data", "table", "custom_values")
response = if custom_values&.any?
operation_type = :update
custom_value_id = custom_values.first["id"]
update_custom_value(
wolf_platform_url: wolf_platform_url,
tenant: tenant,
wolf_token: wolf_token,
custom_value_id: custom_value_id,
custom_value: custom_value
)
else
operation_type = :create
create_custom_value(
wolf_platform_url: wolf_platform_url,
tenant: tenant,
wolf_token: wolf_token,
custom_requirement_id: custom_requirement_id,
custom_value: custom_value
)
end
OpenStruct.new({ operation_type: operation_type, response: response })
end
end
end
end