Class: Todoist::Service::BaseService
- Inherits:
-
Object
- Object
- Todoist::Service::BaseService
show all
- Defined in:
- lib/todoist/service/base_service.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
Returns a new instance of BaseService.
8
9
10
|
# File 'lib/todoist/service/base_service.rb', line 8
def initialize(client)
@client = client
end
|
Instance Attribute Details
#client ⇒ Object
Returns the value of attribute client.
5
6
7
|
# File 'lib/todoist/service/base_service.rb', line 5
def client
@client
end
|
#command_class ⇒ Object
20
21
22
|
# File 'lib/todoist/service/base_service.rb', line 20
def command_class
@command_class ||= Command
end
|
#data ⇒ Object
Returns the value of attribute data.
6
7
8
|
# File 'lib/todoist/service/base_service.rb', line 6
def data
@data
end
|
Instance Method Details
#all ⇒ Object
50
51
52
53
|
# 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) ⇒ Object
60
61
62
63
64
|
# 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
|
#create(params, temp_id = nil) ⇒ Object
55
56
57
58
|
# 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) ⇒ Object
16
17
18
|
# 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 ⇒ Object
32
33
34
|
# File 'lib/todoist/service/base_service.rb', line 32
def path
'/API/v6/sync'
end
|
#process ⇒ Object
12
13
14
|
# File 'lib/todoist/service/base_service.rb', line 12
def process
@client.queue.process
end
|
#resource_type ⇒ Object
24
25
26
|
# File 'lib/todoist/service/base_service.rb', line 24
def resource_type
self.class.name.split('::').last.downcase
end
|
#resource_type_plural ⇒ Object
28
29
30
|
# File 'lib/todoist/service/base_service.rb', line 28
def resource_type_plural
"#{resource_type}s"
end
|
#retrieve(types = ["all"]) ⇒ Object
44
45
46
47
48
|
# 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) ⇒ Object
66
67
68
69
70
71
72
73
74
|
# 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 ⇒ Object
36
37
38
|
# File 'lib/todoist/service/base_service.rb', line 36
def seq_no
data.nil? ? (@seq_no || 0) : client.seq_no
end
|
#seq_no_global ⇒ Object
40
41
42
|
# File 'lib/todoist/service/base_service.rb', line 40
def seq_no_global
data.nil? ? 0 : client.seq_no_global
end
|