Class: Alexa::TodoistApi::Base

Inherits:
Object
  • Object
show all
Includes:
Configuration
Defined in:
lib/alexa/todoist_api/base.rb

Direct Known Subclasses

ItemMove, Sync

Defined Under Namespace

Classes: MethodNotImplemented, UnsuccessfulResponseError

Instance Method Summary collapse

Methods included from Configuration

#api_endpoint

Instance Method Details

#connectionObject



13
14
15
16
# File 'lib/alexa/todoist_api/base.rb', line 13

def connection()
  headers = append_auth_headers(headers: custom_headers)
  Faraday.new url: api_endpoint, headers: headers
end

#connection_requires_auth?Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/alexa/todoist_api/base.rb', line 18

def connection_requires_auth?
  false
end

#custom_headersObject



22
23
24
25
# File 'lib/alexa/todoist_api/base.rb', line 22

def custom_headers
  logger_warn('Todoist::BaseApi custom_headers() method not implemented.')
  raise MethodNotImplemented
end

#do_requestObject



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/alexa/todoist_api/base.rb', line 50

def do_request
  @connection = connection
  retries ||= 0
  response = @connection.post method_route, method_params
  if response.status == 200
    response_success(response: response)
  else
    logger_warn("[Todoist::BaseApi] Route: #{method_route} Response code: #{response.status} Response body: #{response.body}")
    response_fail(response: response)
  end
rescue Faraday::TimeoutError
  logger_warn("[Todoist::BaseApi] Route: #{method_route} Retrying...") && retry if (retries += 1) < 2
rescue Faraday::ClientError => e
  logger_warn("[Todoist::BaseApi] Route: #{method_route}, Error: #{e.class}, #{e.message}")
end

#get_route(url:) ⇒ Object



46
47
48
# File 'lib/alexa/todoist_api/base.rb', line 46

def get_route(url:)
  url.sub(api_endpoint, '')
end

#method_paramsObject



31
32
33
34
# File 'lib/alexa/todoist_api/base.rb', line 31

def method_params
  logger_warn('Todoist::BaseApi method_params() method not implemented.')
  raise MethodNotImplemented
end

#method_routeObject



27
28
29
# File 'lib/alexa/todoist_api/base.rb', line 27

def method_route
  '/API/v7/sync'
end

#response_fail(response:) ⇒ Object



41
42
43
44
# File 'lib/alexa/todoist_api/base.rb', line 41

def response_fail(response:)
  logger_warn("Todoist::BaseApi response_fail(response: #{response}) method not implemented.")
  raise MethodNotImplemented
end

#response_success(response:) ⇒ Object



36
37
38
39
# File 'lib/alexa/todoist_api/base.rb', line 36

def response_success(response:)
  logger_warn("Todoist::BaseApi response_success(response: #{response}) method not implemented.")
  raise MethodNotImplemented
end