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 +4 -4
- data/Gemfile.lock +2 -2
- data/lib/weekdone/api.rb +103 -20
- data/lib/weekdone/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0b62f20fc730d5878dfbc80ac1c4595dbc1601da
|
4
|
+
data.tar.gz: a0262fd349725bca3650434eb47f42b89b7d02e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 628db8fa4bd89b987ae53652f80693fc0bde8f383043ee06376fdb22f46df7cea659f8aff4fc0ff2cc23a22be905986e1a69bba8422212de47b3ca06f5d2ea4c
|
7
|
+
data.tar.gz: 51fe08a92562a10943a940a24a74346890f9247237610316e50a93c09cd5b8f641352e2b10dd42fb6c8ed8c4fc04ba2814804490597fc8fd8e3d473bed7154e2
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
weekdone-sdk (0.3.
|
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.
|
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)
|
data/lib/weekdone/api.rb
CHANGED
@@ -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
|
-
|
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 =
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
data/lib/weekdone/version.rb
CHANGED
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.
|
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-
|
11
|
+
date: 2020-08-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: oauth2
|