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/v6/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