Class: TiktokBusinessApi::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/tiktok_business_api/client.rb

Overview

Main client for interacting with the TikTok Business API

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Client

Initialize a new client

Parameters:

  • options (Hash) (defaults to: {})

    Override configuration options



15
16
17
18
19
20
21
22
23
24
25
# File 'lib/tiktok_business_api/client.rb', line 15

def initialize(options = {})
  @config = TiktokBusinessApi.config.dup || Config.new
  
  # Override config with options
  options.each do |key, value|
    @config.send("#{key}=", value) if @config.respond_to?("#{key}=")
  end
  
  @auth = Auth.new(self)
  @resources = {}
end

Instance Attribute Details

#authTiktokBusinessApi::Auth (readonly)

Returns Authentication handler.

Returns:



10
11
12
# File 'lib/tiktok_business_api/client.rb', line 10

def auth
  @auth
end

#configTiktokBusinessApi::Config (readonly)

Returns Client configuration.

Returns:



7
8
9
# File 'lib/tiktok_business_api/client.rb', line 7

def config
  @config
end

Instance Method Details

#campaignsTiktokBusinessApi::Resources::Campaign

Access to campaign resource

Returns:



87
88
89
# File 'lib/tiktok_business_api/client.rb', line 87

def campaigns
  resource(:campaign)
end

#request(method, path, params = {}, headers = {}) ⇒ Hash

Make an HTTP request to the TikTok Business API

Parameters:

  • method (Symbol)

    HTTP method (:get, :post, :put, :delete)

  • path (String)

    API endpoint path

  • params (Hash) (defaults to: {})

    URL parameters for GET, or body parameters for POST/PUT

  • headers (Hash) (defaults to: {})

    Additional HTTP headers

Returns:

  • (Hash)

    Parsed API response



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/tiktok_business_api/client.rb', line 51

def request(method, path, params = {}, headers = {})
  url = File.join(@config.api_base_url, path)
  
  # Set up default headers
  default_headers = {
    'Content-Type' => 'application/json'
  }
  
  # Add access token if available
  if @config.access_token
    default_headers['Access-Token'] = @config.access_token
  end
  
  # Merge with custom headers
  headers = default_headers.merge(headers)
  
  # Log the request
  log_request(method, url, params, headers)
  
  # Build the request
  response = connection.run_request(method, url, nil, headers) do |req|
    case method
    when :get, :delete
      req.params = params
    when :post, :put
      req.body = JSON.generate(params) unless params.empty?
    end
  end
  
  # Parse and handle the response
  handle_response(response)
end

#resource(resource_name) ⇒ BaseResource

Get or create a resource instance

Parameters:

  • resource_name (Symbol)

    Name of the resource

Returns:

  • (BaseResource)

    Resource instance



31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/tiktok_business_api/client.rb', line 31

def resource(resource_name)
  @resources[resource_name] ||= begin
    # Convert resource_name to class name (e.g., :campaign => Campaign)
    class_name = resource_name.to_s.split('_').map(&:capitalize).join
    
    # Get the resource class
    resource_class = TiktokBusinessApi::Resources.const_get(class_name)
    
    # Create an instance
    resource_class.new(self)
  end
end