asana 0.3.0 → 0.4.0
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 +8 -8
- data/README.md +1 -1
- data/lib/asana/resources/project.rb +57 -4
- data/lib/asana/resources/story.rb +10 -10
- data/lib/asana/resources/task.rb +3 -1
- data/lib/asana/resources/team.rb +30 -0
- data/lib/asana/resources/user.rb +6 -4
- data/lib/asana/resources/workspace.rb +28 -0
- data/lib/asana/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MGY4ZTk0NDM4YmM4MmU3MjVjZTQ2NDM3ZGYzZWU5YTg3NWNhYzc4Yg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NTNlYzI5OTg1MWY4YzA1ODAxMGYyNjk5MDUxODZiZDU5YTI4YzUxMA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZGMwNWM0NjI2ZjhlZmVlZjk3MzA3ZTE5ODhmMjA2ZGM4YzY3ZGEwYThmMDlk
|
10
|
+
ZmJhOWY4MjAxNGEwNGI1MjFmODc1YzBiYjUzYzE4NDIxNjE3YTgwOGFmM2Yy
|
11
|
+
NmYzNDAyMDBlNDYwYjZmMDkwN2QyZWEyNzY3MWY5YmYwZjEzYzA=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
Mjk3OGIzNDY1ZjI0NDg0ZWIxMDU2NGU5YmU3YzJhYzIwMzZjNTk3M2E5ODU0
|
14
|
+
YWY1ZjRjZWFiOTZlYjFkNGExMTVmOWZmNzY5YmNjYTYyODE0ODU2YzlmMzIx
|
15
|
+
NjJmZWFhYTE5NmNmMzYzZmUxMmRjNzkwMGE1ODJkNzA4ODhhNjY=
|
data/README.md
CHANGED
@@ -351,5 +351,5 @@ to make a release, as they'll need to run a release script from the
|
|
351
351
|
|
352
352
|
[apidocs]: https://asana.com/developers
|
353
353
|
[io]: https://asana.com/developers/documentation/getting-started/input-output-options
|
354
|
-
[docs]:
|
354
|
+
[docs]: http://www.rubydoc.info/github/Asana/ruby-asana/master
|
355
355
|
[meta]: https://github.com/asana/asana-api-meta
|
@@ -16,17 +16,27 @@ module Asana
|
|
16
16
|
include EventSubscription
|
17
17
|
|
18
18
|
|
19
|
+
attr_reader :name
|
20
|
+
|
19
21
|
attr_reader :id
|
20
22
|
|
21
|
-
attr_reader :
|
23
|
+
attr_reader :owner
|
22
24
|
|
23
|
-
attr_reader :
|
25
|
+
attr_reader :current_status
|
24
26
|
|
25
|
-
attr_reader :
|
27
|
+
attr_reader :due_date
|
28
|
+
|
29
|
+
attr_reader :created_at
|
26
30
|
|
27
31
|
attr_reader :modified_at
|
28
32
|
|
29
|
-
attr_reader :
|
33
|
+
attr_reader :archived
|
34
|
+
|
35
|
+
attr_reader :public
|
36
|
+
|
37
|
+
attr_reader :members
|
38
|
+
|
39
|
+
attr_reader :followers
|
30
40
|
|
31
41
|
attr_reader :color
|
32
42
|
|
@@ -186,6 +196,49 @@ module Asana
|
|
186
196
|
Collection.new(parse(client.get("/projects/#{id}/tasks", params: params, options: options)), type: Task, client: client)
|
187
197
|
end
|
188
198
|
|
199
|
+
# Adds the specified list of users as followers to the project. Followers are a subset of members, therefore if
|
200
|
+
# the users are not already members of the project they will also become members as a result of this operation.
|
201
|
+
# Returns the updated project record.
|
202
|
+
#
|
203
|
+
# followers - [Array] An array of followers to add to the project.
|
204
|
+
# options - [Hash] the request I/O options.
|
205
|
+
# data - [Hash] the attributes to post.
|
206
|
+
def add_followers(followers: required("followers"), options: {}, **data)
|
207
|
+
with_params = data.merge(followers: followers).reject { |_,v| v.nil? || Array(v).empty? }
|
208
|
+
refresh_with(parse(client.post("/projects/#{id}/addFollowers", body: with_params, options: options)).first)
|
209
|
+
end
|
210
|
+
|
211
|
+
# Removes the specified list of users from following the project, this will not affect project membership status.
|
212
|
+
# Returns the updated project record.
|
213
|
+
#
|
214
|
+
# followers - [Array] An array of followers to remove from the project.
|
215
|
+
# options - [Hash] the request I/O options.
|
216
|
+
# data - [Hash] the attributes to post.
|
217
|
+
def remove_followers(followers: required("followers"), options: {}, **data)
|
218
|
+
with_params = data.merge(followers: followers).reject { |_,v| v.nil? || Array(v).empty? }
|
219
|
+
refresh_with(parse(client.post("/projects/#{id}/removeFollowers", body: with_params, options: options)).first)
|
220
|
+
end
|
221
|
+
|
222
|
+
# Adds the specified list of users as members of the project. Returns the updated project record.
|
223
|
+
#
|
224
|
+
# members - [Array] An array of members to add to the project.
|
225
|
+
# options - [Hash] the request I/O options.
|
226
|
+
# data - [Hash] the attributes to post.
|
227
|
+
def add_members(members: required("members"), options: {}, **data)
|
228
|
+
with_params = data.merge(members: members).reject { |_,v| v.nil? || Array(v).empty? }
|
229
|
+
refresh_with(parse(client.post("/projects/#{id}/addMembers", body: with_params, options: options)).first)
|
230
|
+
end
|
231
|
+
|
232
|
+
# Removes the specified list of members from the project. Returns the updated project record.
|
233
|
+
#
|
234
|
+
# members - [Array] An array of members to remove from the project.
|
235
|
+
# options - [Hash] the request I/O options.
|
236
|
+
# data - [Hash] the attributes to post.
|
237
|
+
def remove_members(members: required("members"), options: {}, **data)
|
238
|
+
with_params = data.merge(members: members).reject { |_,v| v.nil? || Array(v).empty? }
|
239
|
+
refresh_with(parse(client.post("/projects/#{id}/removeMembers", body: with_params, options: options)).first)
|
240
|
+
end
|
241
|
+
|
189
242
|
end
|
190
243
|
end
|
191
244
|
end
|
@@ -41,16 +41,6 @@ module Asana
|
|
41
41
|
'stories'
|
42
42
|
end
|
43
43
|
|
44
|
-
# Returns the full record for a single story.
|
45
|
-
#
|
46
|
-
# id - [Id] Globally unique identifier for the story.
|
47
|
-
#
|
48
|
-
# options - [Hash] the request I/O options.
|
49
|
-
def find_by_id(client, id, options: {})
|
50
|
-
|
51
|
-
self.new(parse(client.get("/stories/#{id}", options: options)).first, client: client)
|
52
|
-
end
|
53
|
-
|
54
44
|
# Returns the compact records for all stories on the task.
|
55
45
|
#
|
56
46
|
# task - [Id] Globally unique identifier for the task.
|
@@ -62,6 +52,16 @@ module Asana
|
|
62
52
|
Collection.new(parse(client.get("/tasks/#{task}/stories", params: params, options: options)), type: self, client: client)
|
63
53
|
end
|
64
54
|
|
55
|
+
# Returns the full record for a single story.
|
56
|
+
#
|
57
|
+
# id - [Id] Globally unique identifier for the story.
|
58
|
+
#
|
59
|
+
# options - [Hash] the request I/O options.
|
60
|
+
def find_by_id(client, id, options: {})
|
61
|
+
|
62
|
+
self.new(parse(client.get("/stories/#{id}", options: options)).first, client: client)
|
63
|
+
end
|
64
|
+
|
65
65
|
# Adds a comment to a task. The comment will be authored by the
|
66
66
|
# currently authenticated user, and timestamped when the server receives
|
67
67
|
# the request.
|
data/lib/asana/resources/task.rb
CHANGED
@@ -54,6 +54,8 @@ module Asana
|
|
54
54
|
|
55
55
|
attr_reader :memberships
|
56
56
|
|
57
|
+
attr_reader :tags
|
58
|
+
|
57
59
|
class << self
|
58
60
|
# Returns the plural name of the resource.
|
59
61
|
def plural_name
|
@@ -125,7 +127,7 @@ module Asana
|
|
125
127
|
# Returns the compact task records for some filtered set of tasks. Use one
|
126
128
|
# or more of the parameters provided to filter the tasks returned.
|
127
129
|
#
|
128
|
-
# assignee - [
|
130
|
+
# assignee - [String] The assignee to filter tasks on.
|
129
131
|
# workspace - [Id] The workspace or organization to filter tasks on.
|
130
132
|
# completed_since - [String] Only return tasks that are either incomplete or that have been
|
131
133
|
# completed since this time.
|
data/lib/asana/resources/team.rb
CHANGED
@@ -50,6 +50,36 @@ module Asana
|
|
50
50
|
Collection.new(parse(client.get("/teams/#{id}/users", params: params, options: options)), type: User, client: client)
|
51
51
|
end
|
52
52
|
|
53
|
+
# The user making this call must be a member of the team in order to add others.
|
54
|
+
# The user to add must exist in the same organization as the team in order to be added.
|
55
|
+
# The user to add can be referenced by their globally unique user ID or their email address.
|
56
|
+
# Returns the full user record for the added user.
|
57
|
+
#
|
58
|
+
# user - [String] An identifier for the user. Can be one of an email address,
|
59
|
+
# the globally unique identifier for the user, or the keyword `me`
|
60
|
+
# to indicate the current user making the request.
|
61
|
+
#
|
62
|
+
# options - [Hash] the request I/O options.
|
63
|
+
# data - [Hash] the attributes to post.
|
64
|
+
def add_user(user: required("user"), options: {}, **data)
|
65
|
+
with_params = data.merge(user: user).reject { |_,v| v.nil? || Array(v).empty? }
|
66
|
+
User.new(parse(client.post("/teams/#{id}/addUser", body: with_params, options: options)).first, client: client)
|
67
|
+
end
|
68
|
+
|
69
|
+
# The user to remove can be referenced by their globally unique user ID or their email address.
|
70
|
+
# Removes the user from the specified team. Returns an empty data record.
|
71
|
+
#
|
72
|
+
# user - [String] An identifier for the user. Can be one of an email address,
|
73
|
+
# the globally unique identifier for the user, or the keyword `me`
|
74
|
+
# to indicate the current user making the request.
|
75
|
+
#
|
76
|
+
# options - [Hash] the request I/O options.
|
77
|
+
# data - [Hash] the attributes to post.
|
78
|
+
def remove_user(user: required("user"), options: {}, **data)
|
79
|
+
with_params = data.merge(user: user).reject { |_,v| v.nil? || Array(v).empty? }
|
80
|
+
client.post("/teams/#{id}/removeUser", body: with_params, options: options) && true
|
81
|
+
end
|
82
|
+
|
53
83
|
end
|
54
84
|
end
|
55
85
|
end
|
data/lib/asana/resources/user.rb
CHANGED
@@ -38,12 +38,14 @@ module Asana
|
|
38
38
|
|
39
39
|
# Returns the full user record for the single user with the provided ID.
|
40
40
|
#
|
41
|
-
#
|
41
|
+
# user - [String] An identifier for the user. Can be one of an email address,
|
42
|
+
# the globally unique identifier for the user, or the keyword `me`
|
43
|
+
# to indicate the current user making the request.
|
42
44
|
#
|
43
45
|
# options - [Hash] the request I/O options.
|
44
|
-
def find_by_id(client,
|
45
|
-
|
46
|
-
|
46
|
+
def find_by_id(client, user: required("user"), options: {})
|
47
|
+
params = { user: user }.reject { |_,v| v.nil? || Array(v).empty? }
|
48
|
+
Resource.new(parse(client.get("/users/%s", params: params, options: options)).first, client: client)
|
47
49
|
end
|
48
50
|
|
49
51
|
# Returns the user records for all users in the specified workspace or
|
@@ -92,6 +92,34 @@ module Asana
|
|
92
92
|
Collection.new(parse(client.get("/workspaces/#{id}/typeahead", params: params, options: options)), type: Resource, client: client)
|
93
93
|
end
|
94
94
|
|
95
|
+
# The user can be referenced by their globally unique user ID or their email address.
|
96
|
+
# Returns the full user record for the invited user.
|
97
|
+
#
|
98
|
+
# user - [String] An identifier for the user. Can be one of an email address,
|
99
|
+
# the globally unique identifier for the user, or the keyword `me`
|
100
|
+
# to indicate the current user making the request.
|
101
|
+
#
|
102
|
+
# options - [Hash] the request I/O options.
|
103
|
+
# data - [Hash] the attributes to post.
|
104
|
+
def add_user(user: required("user"), options: {}, **data)
|
105
|
+
with_params = data.merge(user: user).reject { |_,v| v.nil? || Array(v).empty? }
|
106
|
+
User.new(parse(client.post("/workspaces/#{id}/addUser", body: with_params, options: options)).first, client: client)
|
107
|
+
end
|
108
|
+
|
109
|
+
# The user making this call must be an admin in the workspace.
|
110
|
+
# Returns an empty data record.
|
111
|
+
#
|
112
|
+
# user - [String] An identifier for the user. Can be one of an email address,
|
113
|
+
# the globally unique identifier for the user, or the keyword `me`
|
114
|
+
# to indicate the current user making the request.
|
115
|
+
#
|
116
|
+
# options - [Hash] the request I/O options.
|
117
|
+
# data - [Hash] the attributes to post.
|
118
|
+
def remove_user(user: required("user"), options: {}, **data)
|
119
|
+
with_params = data.merge(user: user).reject { |_,v| v.nil? || Array(v).empty? }
|
120
|
+
client.post("/workspaces/#{id}/removeUser", body: with_params, options: options) && true
|
121
|
+
end
|
122
|
+
|
95
123
|
end
|
96
124
|
end
|
97
125
|
end
|
data/lib/asana/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: asana
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Txus
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-10-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: oauth2
|