lib/whatsapp_sdk/api/business_profile.rb
# frozen_string_literal: true
require_relative "request"
require_relative "../resource/business_profile"
module WhatsappSdk
module Api
class BusinessProfile < Request
DEFAULT_FIELDS = 'about,address,description,email,profile_picture_url,websites,vertical'
class InvalidVertical < StandardError
attr_accessor :message
def initialize(vertical:)
@message = "invalid vertical #{vertical}. See the supported types in the official documentation " \
"https://developers.facebook.com/docs/whatsapp/cloud-api/reference/business-profiles"
super
end
end
# Get the details of business profile.
#
# @param phone_number_id [Integer] Phone Number Id.
# @return [Resource::BusinessProfile] Response object.
def get(phone_number_id, fields: nil)
fields = if fields
fields.join(',')
else
DEFAULT_FIELDS
end
response = send_request(
http_method: "get",
endpoint: "#{phone_number_id}/whatsapp_business_profile?fields=#{fields}"
)
# In the future it might have multiple business profiles.
Resource::BusinessProfile.from_hash(response["data"][0])
end
def details(phone_number_id, fields: nil)
warn "[DEPRECATION] `details` is deprecated. Please use `get` instead."
get(phone_number_id, fields: fields)
end
# Update the details of business profile.
#
# @param phone_number_id [Integer] Phone Number Id.
# @param params [Hash] Params to update.
# @return [Boolean] Whether the update was successful.
def update(phone_number_id:, params:)
params[:messaging_product] = 'whatsapp' # messaging_products is a required field
return raise InvalidVertical.new(vertical: params[:vertical]) unless valid_vertical?(params)
response = send_request(
http_method: "post",
endpoint: "#{phone_number_id}/whatsapp_business_profile",
params: params
)
Api::Responses::SuccessResponse.success_response?(response: response)
end
private
def valid_vertical?(params)
return true unless params[:vertical]
WhatsappSdk::Resource::BusinessProfile::VERTICAL_VALUES.include?(params[:vertical])
end
end
end
end