Module: Pipedrive::APIOperations::Request::ClassMethods

Defined in:
lib/pipedrive/api_operations/request.rb

Instance Method Summary collapse

Instance Method Details

#api_base_urlObject



27
28
29
# File 'lib/pipedrive/api_operations/request.rb', line 27

def api_base_url
  "#{BASE_URL}/#{api_version_prefix}"
end

#api_clientObject



51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/pipedrive/api_operations/request.rb', line 51

def api_client
  @api_client = Faraday.new(
    url: api_base_url,
    headers: { "Content-Type": "application/json" }
  ) do |faraday|
    if Pipedrive.debug_http
      faraday.response :logger, Pipedrive.logger,
                       bodies:  Pipedrive.debug_http_body
    end

    faraday.adapter Pipedrive.faraday_adapter
  end
end

#api_versionObject



16
17
18
# File 'lib/pipedrive/api_operations/request.rb', line 16

def api_version
  supports_v2_api? ? Pipedrive.api_version : :v1
end

#api_version_prefixObject



20
21
22
23
24
25
# File 'lib/pipedrive/api_operations/request.rb', line 20

def api_version_prefix
  # Version 1 endpoints don't use the '/api/' prefix
  return api_version if api_version == :v1

  "api/#{api_version}"
end

#request(method, url, params = {}) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/pipedrive/api_operations/request.rb', line 31

def request(method, url, params = {})
  check_api_key!
  raise "Not supported method" \
    unless i[get post put patch delete].include?(method)

  Util.debug "#{name} #{method.upcase} #{url}"

  response = api_client.send(method) do |req|
    req.url url
    req.params = { api_token: Pipedrive.api_key }
    if i[post put patch].include?(method)
      req.body = params.to_json
    else
      req.params.merge!(params)
    end
  end

  Util.serialize_response(response)
end

#supports_v2_api?Boolean

Returns:

  • (Boolean)


11
12
13
14
# File 'lib/pipedrive/api_operations/request.rb', line 11

def supports_v2_api?
  # default setting, override in resources as required
  false
end