Class: GoogleTasks::GoogleAPI

Inherits:
Object
  • Object
show all
Defined in:
lib/goot/google_api.rb

Constant Summary collapse

CREDENTIAL_STORE =
File.join(GoogleTasks::CONFIG_DIR, 'gtasks-oauth2.json')
CLIENT_SECRET_STORE =
File.join(GoogleTasks::GEM_ROOT, 'data', 'client_secrets.json')
UNCHANGED =
0
MODIFIED =
1
DELETED =
2

Instance Method Summary collapse

Constructor Details

#initializeGoogleAPI

Returns a new instance of GoogleAPI.



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/goot/google_api.rb', line 15

def initialize
  client = Google::APIClient.new(
    :application_name => GoogleTasks::APP_NAME,
    :application_version => GoogleTasks::VERSION
  )

  file_storage = Google::APIClient::FileStorage.new(CREDENTIAL_STORE)

  if file_storage.authorization.nil?
    client_secrets = Google::APIClient::ClientSecrets.load(CLIENT_SECRET_STORE)
    flow = Google::APIClient::InstalledAppFlow.new(
      :client_id => client_secrets.client_id,
      :client_secret => client_secrets.client_secret,
      :scope => 'https://www.googleapis.com/auth/tasks'
    )
    client.authorization = flow.authorize(file_storage)
  else
    client.authorization = file_storage.authorization
  end

  @client = client
  @api = client.discovered_api('tasks', 'v1')
end

Instance Method Details

#clear_tasks(tasklist) ⇒ Object



88
89
90
91
92
93
94
95
# File 'lib/goot/google_api.rb', line 88

def clear_tasks(tasklist)
  @client.execute(
    :api_method => @api.tasks.clear,
    :parameters => {
      :tasklist => tasklist.id
    }
  )
end

#delete_task(tasklist, task) ⇒ Object



109
110
111
112
113
114
115
116
117
# File 'lib/goot/google_api.rb', line 109

def delete_task(tasklist, task)
  @client.execute(
    :api_method => @api.tasks.delete,
    :parameters => {
      :tasklist => tasklist.id,
      :task => task['id']
    }
  )
end

#delete_tasklist(tasklist) ⇒ Object



59
60
61
62
63
64
65
66
# File 'lib/goot/google_api.rb', line 59

def delete_tasklist(tasklist)
  @client.execute(
    :api_method => @api.tasklists.delete,
    :parameters => {
      :tasklist => tasklist.id
    }
  )
end

#get_listsObject



39
40
41
# File 'lib/goot/google_api.rb', line 39

def get_lists
  @client.execute(:api_method => @api.tasklists.list).data.items
end

#get_tasklist(index) ⇒ Object



43
44
45
46
47
48
49
50
# File 'lib/goot/google_api.rb', line 43

def get_tasklist(index)
  @client.execute(
    :api_method => @api.tasklists.get,
    :parameters => {
      :tasklist => get_lists[index].id
    }
  ).data
end

#get_tasks(tasklist) ⇒ Object



68
69
70
71
72
73
74
75
# File 'lib/goot/google_api.rb', line 68

def get_tasks(tasklist)
  @client.execute(
    :api_method => @api.tasks.list,
    :parameters => {
      :tasklist => tasklist.id
    }
  ).data.items.select { |t| t.status != DELETED }
end

#insert_task(tasklist, task, previous, parent) ⇒ Object



97
98
99
100
101
102
103
104
105
106
107
# File 'lib/goot/google_api.rb', line 97

def insert_task(tasklist, task, previous, parent)
  parameters = { :tasklist => tasklist.id }
  parameters[:previous] = previous['id'] if !previous.nil?
  parameters[:parent] = parent['id'] if !parent.nil?

  @client.execute(
    :api_method => @api.tasks.insert,
    :parameters => parameters,
    :body_object => task
  )
end

#insert_tasklist(tasklist) ⇒ Object



52
53
54
55
56
57
# File 'lib/goot/google_api.rb', line 52

def insert_tasklist(tasklist)
  @client.execute(
    :api_method => @api.tasklists.insert,
    :body_object => tasklist
  )
end

#move_task(tasklist, task, previous, parent) ⇒ Object



119
120
121
122
123
124
125
126
127
128
129
130
131
# File 'lib/goot/google_api.rb', line 119

def move_task(tasklist, task, previous, parent)
  parameters = {
    :tasklist => tasklist.id,
    :task => task['id']
  }
  parameters[:previous] = previous['id'] if !previous.nil?
  parameters[:parent] = parent['id'] if !parent.nil?

  @client.execute(
    :api_method => @api.tasks.move,
    :parameters => parameters
  )
end

#update_task(tasklist, task) ⇒ Object



77
78
79
80
81
82
83
84
85
86
# File 'lib/goot/google_api.rb', line 77

def update_task(tasklist, task)
  @client.execute(
    :api_method => @api.tasks.update,
    :parameters => {
      :tasklist => tasklist.id,
      :task => task['id']
    },
    :body_object => task
  )
end