class Todoist::Service::BaseService

Attributes

client[R]
command_class[W]
data[RW]

Public Class Methods

new(client) click to toggle source
# File lib/todoist/service/base_service.rb, line 8
def initialize(client)
  @client = client
end

Public Instance Methods

all() click to toggle source
# File lib/todoist/service/base_service.rb, line 50
def all
  response = retrieve([resource_type_plural])
  self.data = response[resource_type_plural.capitalize].map { |resource| collection_class.new(resource) }
end
build(params, temp_id = nil) click to toggle source
# File lib/todoist/service/base_service.rb, line 60
def build(params, temp_id = nil)
  instance = collection_class.new(params)
  instance.temp_id ||= temp_id
  instance
end
command_class() click to toggle source
# File lib/todoist/service/base_service.rb, line 20
def command_class
  @command_class ||= Command
end
create(params, temp_id = nil) click to toggle source
# File lib/todoist/service/base_service.rb, line 55
def create(params, temp_id = nil)
  instance = build(params, temp_id)
  save(instance)
end
create_command(name, arguments, tmp_id = nil) click to toggle source
# File lib/todoist/service/base_service.rb, line 16
def create_command(name, arguments, tmp_id = nil)
  command_class.new(name, arguments, tmp_id)
end
path() click to toggle source
# File lib/todoist/service/base_service.rb, line 32
def path
  '/API/v7/sync'
end
process() click to toggle source
# File lib/todoist/service/base_service.rb, line 12
def process
  @client.queue.process
end
resource_type() click to toggle source
# File lib/todoist/service/base_service.rb, line 24
def resource_type
  self.class.name.split('::').last.downcase
end
resource_type_plural() click to toggle source
# File lib/todoist/service/base_service.rb, line 28
def resource_type_plural
  "#{resource_type}s"
end
retrieve(types = ["all"]) click to toggle source
# File lib/todoist/service/base_service.rb, line 44
def retrieve(types = ["all"])
  response = client.post(path, { seq_no: seq_no, seq_no_global: seq_no_global, resource_types: types.to_json })
  @seq_no = response['seq_no'] if response['seq_no']
  response
end
save(instance) click to toggle source
# File lib/todoist/service/base_service.rb, line 66
def save(instance)
  if instance.persisted?
    @client.queue.add(create_command("#{resource_type}_update", instance))
  else
    instance.temp_id ||= SecureRandom.uuid
    @client.queue.add(create_command("#{resource_type}_add", instance))
  end
  instance
end
seq_no() click to toggle source
# File lib/todoist/service/base_service.rb, line 36
def seq_no
  data.nil? ? (@seq_no || 0) : client.seq_no
end
seq_no_global() click to toggle source
# File lib/todoist/service/base_service.rb, line 40
def seq_no_global
  data.nil? ? 0 : client.seq_no_global
end