class Camp3::Client

Wrapper for the Camp3 REST API.

Public Class Methods

new(options = {}) click to toggle source

Creates a new API. @raise [Error:MissingCredentials]

# File lib/camp3/client.rb, line 24
def initialize(options = {})
  @config = Configuration.new(options)
end

Public Instance Methods

configure() { |config| ... } click to toggle source

Allows setting configuration values for this client returns the client instance being configured

# File lib/camp3/client.rb, line 42
def configure
  yield @config

  self
end
inspect() click to toggle source

Text representation of the client, masking private token.

@return [String]

Calls superclass method
# File lib/camp3/client.rb, line 51
def inspect
  inspected = super
  inspected.sub! @config.access_token, only_show_last_four_chars(@config.access_token) if @config.access_token
  inspected
end
url_encode(url) click to toggle source

Utility method for URL encoding of a string. Copied from ruby-doc.org/stdlib-2.7.0/libdoc/erb/rdoc/ERB/Util.html

@return [String]

# File lib/camp3/client.rb, line 61
def url_encode(url)
  url.to_s.b.gsub(/[^a-zA-Z0-9_\-.~]/n) { |m| sprintf('%%%02X', m.unpack1('C')) } # rubocop:disable Style/FormatString, Style/FormatStringToken
end

Private Instance Methods

new_request() click to toggle source
# File lib/camp3/client.rb, line 67
def new_request
  Request.new(@config.access_token, @config.user_agent, self)
end
only_show_last_four_chars(token) click to toggle source
# File lib/camp3/client.rb, line 71
def only_show_last_four_chars(token)
  "#{'*' * (token.size - 4)}#{token[-4..-1]}"
end
url_transform(url) click to toggle source

Utility method for transforming Basecamp Web URLs into API URIs e.g '3.basecamp.com/1/buckets/2/todos/3' will be converted into '3.basecampapi.com/1/buckets/2/todos/3.json'

@return [String]

# File lib/camp3/client.rb, line 80
def url_transform(url)
  api_uri = url.gsub('3.basecamp.com', '3.basecampapi.com')
  api_uri += '.json' unless url.end_with? '.json'
  api_uri
end