weekdone-sdk 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 147a06ce9bb051b9f2e357a2436b8f7e0ff23e69
4
- data.tar.gz: 8095f1494ec5a66f29942b4cc394c1dd386de5c0
3
+ metadata.gz: 0b62f20fc730d5878dfbc80ac1c4595dbc1601da
4
+ data.tar.gz: a0262fd349725bca3650434eb47f42b89b7d02e0
5
5
  SHA512:
6
- metadata.gz: 51d2c19de54c9d0d0bdfda0d38d06c0a46383ff8d06f3fc3a59e5f69f2f9c70525769ad1346e7aad55b5f6e6b95af4cecb27fc439c94d7cc01a2c1fef83cae6c
7
- data.tar.gz: 055c9c94e967a89d23df5af8ef004d5506c12da0ce9b88db0ea23436ee851cb3c0e067c241d1458803bd2767186a0dccaf3a16e1ac822a2728d74ed9236ad8ea
6
+ metadata.gz: 628db8fa4bd89b987ae53652f80693fc0bde8f383043ee06376fdb22f46df7cea659f8aff4fc0ff2cc23a22be905986e1a69bba8422212de47b3ca06f5d2ea4c
7
+ data.tar.gz: 51fe08a92562a10943a940a24a74346890f9247237610316e50a93c09cd5b8f641352e2b10dd42fb6c8ed8c4fc04ba2814804490597fc8fd8e3d473bed7154e2
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- weekdone-sdk (0.3.1)
4
+ weekdone-sdk (0.3.2)
5
5
  faraday (~> 1.0)
6
6
  oauth2 (~> 1.4)
7
7
 
@@ -11,7 +11,7 @@ GEM
11
11
  diff-lcs (1.4.4)
12
12
  faraday (1.0.1)
13
13
  multipart-post (>= 1.2, < 3)
14
- jwt (2.2.1)
14
+ jwt (2.2.2)
15
15
  multi_json (1.15.0)
16
16
  multi_xml (0.6.0)
17
17
  multipart-post (2.1.1)
@@ -1,14 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'logger'
4
+ require 'time'
5
+
3
6
  require 'oauth2'
4
7
  require 'faraday'
5
8
 
6
9
  class Weekdone::Api
7
10
  API_URL = 'https://api.weekdone.com'
8
11
  attr_reader :client
9
- attr_accessor :token_code
12
+ attr_accessor :token_code, :loglevel
13
+
14
+ def initialize(client_id, client_secret, loglevel: Logger::DEBUG)
15
+ @logger = Logger.new(STDOUT)
16
+ @logger.level = loglevel
10
17
 
11
- def initialize(client_id, client_secret)
12
18
  @client = OAuth2::Client.new(
13
19
  client_id, client_secret,
14
20
  {
@@ -34,14 +40,40 @@ class Weekdone::Api
34
40
  end
35
41
 
36
42
  def authorization_grant(auth_code)
37
- token_client = client.auth_code.get_token(
43
+ @token = client.auth_code.get_token(
38
44
  auth_code,
39
45
  redirect_uri: 'http://localhost:8080/oauth2/authorized'
40
46
  )
41
47
 
42
- @token_code = token_client.token
48
+ @token_code = @token.token
49
+ end
50
+
51
+ def refresh
52
+ # @token = OAuth2::AccessToken.from_hash(@client, @token_hash)
53
+ @logger.debug("tokencode=#{@token_code} clientid=#{@client.id}")
54
+
55
+ if @token.expired?
56
+ @token = @token.refresh!
57
+ @logger.info("refreshed token due to expire (new token expires at #{Time.at(@token.expires_at)}).")
58
+ elsif
59
+ @logger.debug("token is still valid (token expires at #{Time.at(@token.expires_at)}).")
60
+ end
61
+
62
+ @token_code = @token.token
43
63
  end
44
64
 
65
+ def token_hash
66
+ @token.to_hash
67
+ end
68
+
69
+ def token_hash=(hash)
70
+ @logger.debug("update oauth token from hash=#{hash}")
71
+
72
+ @token = OAuth2::AccessToken.from_hash(@client, hash)
73
+ @token_code = @token.token
74
+ end
75
+
76
+
45
77
  def searchForItems(user_id: nil, team_id: nil, period: nil)
46
78
  params = { token: @token_code }
47
79
  if not user_id.nil?
@@ -55,7 +87,10 @@ class Weekdone::Api
55
87
  end
56
88
 
57
89
  response = Faraday.get(API_URL + '/1/items', params)
58
- JSON.parse(response.body)
90
+ bodyJson = JSON.parse(response.body)
91
+ @logger.debug(bodyJson)
92
+
93
+ bodyJson["items"]
59
94
  end
60
95
 
61
96
  def createItem
@@ -74,8 +109,11 @@ class Weekdone::Api
74
109
  raise NotImplementedError
75
110
  end
76
111
 
77
- def getItemLikes
78
- raise NotImplementedError
112
+ def getItemLikes(item_id)
113
+ params = { token: @token_code }
114
+
115
+ response = Faraday.get(API_URL + "/1/item/#{item_id}/likes", params)
116
+ JSON.parse(response.body)
79
117
  end
80
118
 
81
119
  def addItemLike
@@ -90,8 +128,14 @@ class Weekdone::Api
90
128
  raise NotImplementedError
91
129
  end
92
130
 
93
- def getItemComments
94
- raise NotImplementedError
131
+ def getItemComments(item_id)
132
+ params = { token: @token_code }
133
+
134
+ response = Faraday.get(API_URL + "/1/item/#{item_id}/comments", params)
135
+ bodyJson = JSON.parse(response.body)
136
+ @logger.debug(bodyJson)
137
+
138
+ bodyJson["comments"]
95
139
  end
96
140
 
97
141
  def addItemComment
@@ -112,26 +156,43 @@ class Weekdone::Api
112
156
 
113
157
 
114
158
  def getAllTeams
115
- raise NotImplementedError
159
+ params = { token: @token_code }
160
+
161
+ response = Faraday.get(API_URL + '/1/teams', params)
162
+ JSON.parse(response.body)
116
163
  end
117
164
 
118
165
 
119
166
  def getAllUsers
120
- raise NotImplementedError
167
+ params = { token: @token_code }
168
+
169
+ response = Faraday.get(API_URL + '/1/users', params)
170
+ JSON.parse(response.body)
121
171
  end
122
172
 
123
173
 
124
174
  def getAllTypes
125
- raise NotImplementedError
175
+ params = { token: @token_code }
176
+
177
+ response = Faraday.get(API_URL + '/1/types', params)
178
+ JSON.parse(response.body)
126
179
  end
127
180
 
128
181
 
129
182
  def getAllTags
130
- raise NotImplementedError
183
+ params = { token: @token_code }
184
+
185
+ response = Faraday.get(API_URL + '/1/tag', params)
186
+ # FIXME: fail to parse
187
+ JSON.parse(response.body)
131
188
  end
132
189
 
133
- def getSingleTag
134
- raise NotImplementedError
190
+ def getSingleTag(tag_id)
191
+ params = { token: @token_code }
192
+
193
+ response = Faraday.get(API_URL + "/1/tag/#{tag_id}", params)
194
+ # FIXME: fail to parse
195
+ JSON.parse(response.body)
135
196
  end
136
197
 
137
198
  def updateTagPriority
@@ -143,8 +204,20 @@ class Weekdone::Api
143
204
  end
144
205
 
145
206
 
146
- def getAllObjectives
147
- raise NotImplementedError
207
+ def getAllObjectives(type: nil, departmentid: nil, teamid: nil, userid: nil, period: nil)
208
+ refresh
209
+
210
+ params = { token: @token_code }
211
+ params[:type] = type if not type.nil?
212
+ params[:department_id] = departmentid if not departmentid.nil?
213
+ params[:team_id] = teamid if not teamid.nil?
214
+ params[:user_id] = userid if not userid.nil?
215
+ params[:period] = period if not period.nil?
216
+
217
+ @logger.debug("params: #{params}")
218
+ response = Faraday.get(API_URL + '/1/objective', params)
219
+
220
+ JSON.parse(response.body)
148
221
  end
149
222
 
150
223
  def createNewObjective
@@ -159,8 +232,13 @@ class Weekdone::Api
159
232
  raise NotImplementedError
160
233
  end
161
234
 
162
- def listObjectiveComments
163
- raise NotImplementedError
235
+ def listObjectiveComments(objective_id)
236
+ refresh
237
+
238
+ params = { token: @token_code }
239
+
240
+ response = Faraday.get(API_URL + "/1/objective/#{objective_id}/comments", params)
241
+ JSON.parse(response.body)
164
242
  end
165
243
 
166
244
  def addObjectiveComment
@@ -189,6 +267,11 @@ class Weekdone::Api
189
267
 
190
268
 
191
269
  def getCompanyInfo
192
- raise NotImplementedError
270
+ refresh
271
+
272
+ params = { token: @token_code }
273
+
274
+ response = Faraday.get(API_URL + '/1/company', params)
275
+ JSON.parse(response.body)
193
276
  end
194
277
  end
@@ -1,3 +1,3 @@
1
1
  module Weekdone
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: weekdone-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - thaim
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-09 00:00:00.000000000 Z
11
+ date: 2020-08-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oauth2