clubhouse2 1.0.3 → 1.0.4
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/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
|