clubhouse2 1.0.3 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +52 -1
- data/VERSION +1 -1
- data/lib/clubhouse2/clubhouse_resource.rb +10 -3
- data/lib/clubhouse2/story.rb +6 -0
- 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: b16f448e16fc7ce33fd39bbd93278cc53383f7f9
|
4
|
+
data.tar.gz: 5e38fa96e9f8caea41690a94859bbcd68c18684f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ef29340fa36a3746ced78c18d7c18624cb1135c4b870fff74e4c1d69edf4649f5b2c2044fc4b692fc244369af0a94bcdab6dc7bb8b39791da0fcb149a1b1e2a0
|
7
|
+
data.tar.gz: 9193677a35bcf663e1d679a4763d8066cdc6b8067c3ff93327e83321d02ae6fcb9b0912da3a6cabe763113bc37758da2c64a64aa8465168ea5875a492105d824
|
data/README.md
CHANGED
@@ -11,6 +11,7 @@ client = Clubhouse::Client.new(api_key: 'your_api_key')
|
|
11
11
|
```
|
12
12
|
|
13
13
|
### Quick-start
|
14
|
+
#### Queries
|
14
15
|
Get all stories being followed by a user called 'James'.
|
15
16
|
```ruby
|
16
17
|
client.stories(follower_ids: client.member(name: 'James'))
|
@@ -36,6 +37,56 @@ Get all stories last updated more than 30 days ago
|
|
36
37
|
client.stories.select { |story| story.updated_at < Date.today - 30 }
|
37
38
|
```
|
38
39
|
|
40
|
+
Get a list of all story states in the default workflow
|
41
|
+
```ruby
|
42
|
+
client.workflow.states
|
43
|
+
```
|
44
|
+
|
45
|
+
#### Creating resources
|
46
|
+
See the official Clubhouse API documentation for valid properties to use here:
|
47
|
+
https://clubhouse.io/api/rest/v2/
|
48
|
+
|
49
|
+
Create a new story in the 'Testing' project
|
50
|
+
```ruby
|
51
|
+
client.project(name: 'Testing').create_story( **...** )
|
52
|
+
client.create_story(project_id: client.project(name: 'Testing'), **...** )
|
53
|
+
```
|
54
|
+
|
55
|
+
#### Updating resources
|
56
|
+
Updating a property of a resource can be achieved simply by using assignment operators, as shown in the examples below.
|
57
|
+
|
58
|
+
See the official Clubhouse API documentation for valid properties to use here:
|
59
|
+
https://clubhouse.io/api/rest/v2/
|
60
|
+
|
61
|
+
Change the name of a story
|
62
|
+
```ruby
|
63
|
+
client.story(name: 'Old name').name = 'New name'
|
64
|
+
client.story(id: 123).name = 'New name'
|
65
|
+
```
|
66
|
+
|
67
|
+
Add a new follower to a story
|
68
|
+
```ruby
|
69
|
+
client.story(id: 123).follower_ids += [ client.member(name: 'Jeff') ]
|
70
|
+
```
|
71
|
+
|
72
|
+
Assign a story to an epic
|
73
|
+
```ruby
|
74
|
+
client.story(id: 123).epic_id = client.epic(name: 'Awesome')
|
75
|
+
```
|
76
|
+
|
77
|
+
#### Deleting resources
|
78
|
+
Deletion is possible by using the `delete!` method, which is available on most resources. Some resources can only be deleted from the web interface.
|
79
|
+
|
80
|
+
Delete an epic
|
81
|
+
```ruby
|
82
|
+
client.epic(id: 123).delete!
|
83
|
+
```
|
84
|
+
|
85
|
+
Delete all stories in the 'Testing' project
|
86
|
+
```ruby
|
87
|
+
client.project(name: 'Testing').stories.each(&:delete!)
|
88
|
+
```
|
89
|
+
|
39
90
|
### Methods returning arrays of resources
|
40
91
|
```ruby
|
41
92
|
client.projects # list all projects
|
@@ -61,7 +112,7 @@ client.stories.select { |story| story.updated_at < Date.today - 30 }
|
|
61
112
|
client.team # list the first matching team
|
62
113
|
```
|
63
114
|
### Filtering
|
64
|
-
It's possible to filter by any resource property provided by the API. Multiple property filters can be specified.
|
115
|
+
It's possible to filter by any resource property provided by the API. Multiple property filters can be specified. Filters match any member of an array, for example you can filter `stories` by `follower_ids`, which will match any stories for which the given member, or members, are followers.
|
65
116
|
```ruby
|
66
117
|
client.project(id: 123) # get a specific project
|
67
118
|
client.project(name: 'blah') # get a project by name
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.4
|
@@ -11,7 +11,8 @@ module Clubhouse
|
|
11
11
|
[
|
12
12
|
:archived, :days_to_thermometer, :entity_type, :id, :show_thermometer, :stats, :created_at, :updated_at,
|
13
13
|
:started_at, :completed_at, :comments, :position, :started, :project_ids, :completed, :blocker, :moved_at,
|
14
|
-
:task_ids, :files, :comment_ids, :workflow_state_id, :story_links, :mention_ids, :file_ids, :linked_file_ids
|
14
|
+
:task_ids, :files, :comment_ids, :workflow_state_id, :story_links, :mention_ids, :file_ids, :linked_file_ids,
|
15
|
+
:tasks
|
15
16
|
]
|
16
17
|
end
|
17
18
|
|
@@ -36,7 +37,8 @@ module Clubhouse
|
|
36
37
|
self.class.properties.each do |this_property|
|
37
38
|
self.class.class_eval { attr_accessor(this_property.to_sym) }
|
38
39
|
self.class.send(:define_method, (this_property.to_s + '=').to_sym) do |value|
|
39
|
-
update({ this_property => value })
|
40
|
+
update({ this_property => resolve_to_ids(value) })
|
41
|
+
instance_variable_set('@' + this_property.to_s, resolve_to_ids(value))
|
40
42
|
end
|
41
43
|
end
|
42
44
|
|
@@ -44,6 +46,11 @@ module Clubhouse
|
|
44
46
|
self
|
45
47
|
end
|
46
48
|
|
49
|
+
def resolve_to_ids(object)
|
50
|
+
return object.collect { |o| resolve_to_ids(o) } if object.is_a? Array
|
51
|
+
(object.respond_to?(:id) ? object.id : object)
|
52
|
+
end
|
53
|
+
|
47
54
|
def set_properties(object)
|
48
55
|
object.each_pair do |k, v|
|
49
56
|
instance_variable_set('@' + k.to_s, value_format(k, v))
|
@@ -60,7 +67,7 @@ module Clubhouse
|
|
60
67
|
end
|
61
68
|
|
62
69
|
def update(args = {})
|
63
|
-
new_params =
|
70
|
+
new_params = args.reject { |k, v| self.class.property_filter_update.include? k.to_sym }
|
64
71
|
validate(new_params)
|
65
72
|
flush
|
66
73
|
@client.api_request(:put, @client.url(api_url), :json => new_params)
|
data/lib/clubhouse2/story.rb
CHANGED
@@ -43,6 +43,12 @@ module Clubhouse
|
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
|
+
def update(**args)
|
47
|
+
# The API won't let us try to update the project ID without changing it
|
48
|
+
args.delete(:project_id) if args[:project_id] == @project_id
|
49
|
+
super
|
50
|
+
end
|
51
|
+
|
46
52
|
def create_task(**args)
|
47
53
|
Task.validate(**args)
|
48
54
|
@tasks = nil
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: clubhouse2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Denness
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-10-
|
11
|
+
date: 2017-10-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: http
|