asana-ruby 0.0.1 → 0.0.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.
- data/lib/asana/resource.rb +5 -0
- data/lib/asana/resources/project.rb +0 -10
- data/lib/asana/resources/workspace.rb +35 -24
- data/lib/asana/version.rb +1 -1
- data/spec/asana/resources/task_spec.rb +2 -3
- data/spec/asana/resources/workspace_spec.rb +12 -0
- metadata +21 -21
data/lib/asana/resource.rb
CHANGED
@@ -2,16 +2,6 @@ class Asana::Project < Asana::Resource
|
|
2
2
|
alias :create :method_not_allowed
|
3
3
|
alias :destroy :method_not_allowed
|
4
4
|
|
5
|
-
def self.all_by_task(*args)
|
6
|
-
parent_resources :task
|
7
|
-
all(*args)
|
8
|
-
end
|
9
|
-
|
10
|
-
def self.all_by_workspace(*args)
|
11
|
-
parent_resources :workspace
|
12
|
-
all(*args)
|
13
|
-
end
|
14
|
-
|
15
5
|
def tasks
|
16
6
|
get(:tasks).map{|h| Asana::Task.find h["id"]}
|
17
7
|
end
|
@@ -1,32 +1,43 @@
|
|
1
1
|
require 'pry'
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
module Asana
|
3
|
+
class Workspace < Asana::Resource
|
4
|
+
def create_task(options = {})
|
5
|
+
# options.merge!(assignee: 'me') unless options[:assignee] or options['assignee']
|
6
|
+
options.merge!(workspace: self.id)
|
5
7
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
rescue Exception => e
|
10
|
-
$stderr.puts "ERROR: #{e.message}"
|
11
|
-
$stderr.puts "RESPONSE: #{e.response.body}" if e.respond_to?(:response)
|
12
|
-
end
|
8
|
+
post_body = { data: options }
|
9
|
+
response = Task.post(nil, nil, post_body.to_json)
|
10
|
+
hash = connection.format.decode(response.body)
|
13
11
|
|
14
|
-
|
15
|
-
|
16
|
-
|
12
|
+
# want to return a persisted record
|
13
|
+
Task.find hash["id"]
|
14
|
+
rescue Exception => e
|
15
|
+
$stderr.puts "ERROR: #{e.message}"
|
16
|
+
$stderr.puts "RESPONSE: #{e.response.body}" if e.respond_to?(:response)
|
17
|
+
end
|
17
18
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
$stderr.puts "RESPONSE: #{e.response.body}" if e.respond_to?(:response)
|
22
|
-
end
|
19
|
+
# From API docs: If you specify a workspace you must also specify an assignee to filter on.
|
20
|
+
def tasks(options = {})
|
21
|
+
options.merge!(assignee: 'me') unless options[:assignee] or options['assignee']
|
23
22
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
23
|
+
get("tasks?assignee=#{options[:assignee]}").map{|h| Asana::Task.find h["id"]}
|
24
|
+
rescue Exception => e
|
25
|
+
$stderr.puts "ERROR: #{e.message}"
|
26
|
+
$stderr.puts "RESPONSE: #{e.response.body}" if e.respond_to?(:response)
|
27
|
+
end
|
28
|
+
|
29
|
+
# TODO imporve this when Asana API is more advanced
|
30
|
+
def find_or_create_tag(options = {})
|
31
|
+
tags.find {|t| t.name == options[:name]} || create_tag(options)
|
32
|
+
end
|
33
|
+
|
34
|
+
def create_tag(options = {})
|
35
|
+
response = post("tags", nil, {data: options}.to_json)
|
36
|
+
Asana::Tag.new(connection.format.decode(response.body))
|
37
|
+
end
|
28
38
|
|
29
|
-
|
30
|
-
|
39
|
+
def tags
|
40
|
+
get(:tags).map{|h| Asana::Tag.find h["id"]}
|
41
|
+
end
|
31
42
|
end
|
32
43
|
end
|
data/lib/asana/version.rb
CHANGED
@@ -49,5 +49,17 @@ module Asana
|
|
49
49
|
workspace.tags.first.should be_instance_of Tag
|
50
50
|
end
|
51
51
|
end
|
52
|
+
|
53
|
+
describe ".find_or_create_tag" do
|
54
|
+
it "should not create two tags of the same name" do
|
55
|
+
tag1 = workspace.find_or_create_tag(name: 'test .find_or_create_tag')
|
56
|
+
tag2 = workspace.find_or_create_tag(name: 'test .find_or_create_tag')
|
57
|
+
tag1.id.should == tag2.id
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should only create tag account by one" do
|
61
|
+
expect { 3.times { workspace.find_or_create_tag(name: '3 times') } }.to change { workspace.tags.size }.by(1)
|
62
|
+
end
|
63
|
+
end
|
52
64
|
end
|
53
65
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: asana-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-07-31 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activeresource
|
16
|
-
requirement: &
|
16
|
+
requirement: &2164496820 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '3.0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2164496820
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &2164495280 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2164495280
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec
|
38
|
-
requirement: &
|
38
|
+
requirement: &2164530680 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '2.11'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2164530680
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: guard
|
49
|
-
requirement: &
|
49
|
+
requirement: &2164528100 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2164528100
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: guard-rspec
|
60
|
-
requirement: &
|
60
|
+
requirement: &2164525920 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *2164525920
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: vcr
|
71
|
-
requirement: &
|
71
|
+
requirement: &2152078520 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 2.2.4
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *2152078520
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: webmock
|
82
|
-
requirement: &
|
82
|
+
requirement: &2152058920 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: 1.8.8
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *2152058920
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: pry
|
93
|
-
requirement: &
|
93
|
+
requirement: &2152053660 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *2152053660
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: pry-debugger
|
104
|
-
requirement: &
|
104
|
+
requirement: &2164691420 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ! '>='
|
@@ -109,7 +109,7 @@ dependencies:
|
|
109
109
|
version: '0'
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *2164691420
|
113
113
|
description: Ruby API wrapper for Asana, supporting workspaces, projects, tasks, tags,
|
114
114
|
users and stories
|
115
115
|
email:
|
@@ -158,7 +158,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
158
158
|
version: '0'
|
159
159
|
segments:
|
160
160
|
- 0
|
161
|
-
hash:
|
161
|
+
hash: 4158906422461001836
|
162
162
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
163
163
|
none: false
|
164
164
|
requirements:
|
@@ -167,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
167
167
|
version: '0'
|
168
168
|
segments:
|
169
169
|
- 0
|
170
|
-
hash:
|
170
|
+
hash: 4158906422461001836
|
171
171
|
requirements: []
|
172
172
|
rubyforge_project:
|
173
173
|
rubygems_version: 1.8.17
|