ruby-trello 1.1.3 → 1.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 81baf76d9e58785fa9dc51f1d712b882b92db245
4
- data.tar.gz: a73d11ce0d6308962b78802fdca44e60d5d84fec
3
+ metadata.gz: 260b90a4f5cc53cb0c695edb040c75144a24a2f0
4
+ data.tar.gz: 1b6e24750bb32ae29d798912b43a60e98ece7088
5
5
  SHA512:
6
- metadata.gz: 9d99de48aaf068f1bd67db5d5f39fe8aa8b0fe04c40285b5775a0409048f75e0d17ddee6fa98a3d14f79b2319dd607feb30e0742fb79c562070463b4d7d3f648
7
- data.tar.gz: 62a787fc187af9d034103afd7331bc3f74155750777c07e67aef1838ddb6581af853aef33f7633def4385643b83ba55d4af593aa6b1688a2ea4861366e20deb1
6
+ metadata.gz: 913d7972b22fce3998ea166fc1dc94c8d4e699ef2f1b2b686fd585fb951b430769b74dbb8d3e2d90bd3e99791da8b5018f15839bbf79a636917e52fbb1d492c6
7
+ data.tar.gz: f68c3097b8e2c8cf043587b98aa7559b8aeb14c35891bea11de1edab13cf6e04be0adaf48df7dd0db4be4afb17211fd21cc5e865105435c5fd139f1fc6ac18fd
data/README.md CHANGED
@@ -26,12 +26,14 @@ illustrate that future versions may include ruby 1.9.3+ specific features.
26
26
 
27
27
  Basic authorization:
28
28
 
29
- 1. Get your API keys from [trello.com/app-key](https://trello.com/app-key).
29
+ 1. Get your API keys from [trello.com/app-key](https://trello.com/app-key).
30
30
  2. Visit the URL [trello.com/1/authorize], with the following GET parameters:
31
31
  - `key`: the API key you got in step 1.
32
32
  - `response_type`: "token"
33
33
  - `expiration`: "never" if you don't want your token to ever expire. If you leave this blank,
34
34
  your generated token will expire after 30 days.
35
+ - The URL will look like this:
36
+ `https://trello.com/1/authorize?key=YOURAPIKEY&response_type=token&expiration=never`
35
37
  3. You should see a page asking you to authorize your Trello application. Click "allow" and you should see a second page with a long alphanumeric string. This is your member token.
36
38
 
37
39
  ```ruby
data/lib/trello/action.rb CHANGED
@@ -1,8 +1,21 @@
1
1
  module Trello
2
2
  # Action represents some event that occurred. For instance, when a card is created.
3
+ #
4
+ # @!attribute [r] id
5
+ # @return [String]
6
+ # @!attribute [r] type
7
+ # @return [String]
8
+ # @!attribute [r] data
9
+ # @return [Hash]
10
+ # @!attribute [r] date
11
+ # @return [Datetime]
12
+ # @!attribute [r] member_creator_id
13
+ # @return [String]
14
+ # @!attribute [r] member_participant
15
+ # @return [Object]
3
16
  class Action < BasicData
4
17
  register_attributes :id, :type, :data, :date, :member_creator_id, :member_participant,
5
- :readonly => [ :id, :type, :data, :date, :member_creator_id, :member_participant ]
18
+ readonly: [ :id, :type, :data, :date, :member_creator_id, :member_participant ]
6
19
  validates_presence_of :id, :type, :date, :member_creator_id
7
20
 
8
21
  class << self
@@ -13,9 +26,8 @@ module Trello
13
26
 
14
27
  def search(query, opts={})
15
28
  response = client.get("/search/", { query: query }.merge(opts))
16
- formatted_response = JSON.parse(response).except("options").inject({}) do |res, key|
17
- res.merge!({ key.first => key.last.jsoned_into("Trello::#{key.first.singularize.capitalize}".constantize) })
18
- res
29
+ JSON.parse(response).except("options").inject({}) do |res, key|
30
+ res.merge({ key.first => key.last.jsoned_into("Trello::#{key.first.singularize.capitalize}".constantize) })
19
31
  end
20
32
  end
21
33
  end
@@ -50,6 +62,6 @@ module Trello
50
62
  end
51
63
 
52
64
  # Returns the member who created the action.
53
- one :member_creator, :via => Member, :path => :members, :using => :member_creator_id
65
+ one :member_creator, via: Member, path: :members, using: :member_creator_id
54
66
  end
55
67
  end
@@ -1,5 +1,20 @@
1
1
  module Trello
2
2
  # A file or url that is linked to a Trello card
3
+ #
4
+ # @!attribute id
5
+ # @return [String]
6
+ # @!attribute name
7
+ # @return [String]
8
+ # @!attribute url
9
+ # @return [String]
10
+ # @!attribute bytes
11
+ # @return [Fixnum]
12
+ # @!attribute date
13
+ # @return [Datetime]
14
+ # @!attribute is_upload
15
+ # @return [Boolean]
16
+ # @!attribute mime_type
17
+ # @return [String]
3
18
  class Attachment < BasicData
4
19
  register_attributes :name, :id, :url, :bytes, :member_id, :date, :is_upload, :mime_type
5
20
  # Update the fields of an attachment.
@@ -31,7 +31,7 @@ module Trello
31
31
  def authorize(request)
32
32
  the_uri = Addressable::URI.parse(request.uri)
33
33
  existing_values = the_uri.query_values.nil? ? {} : the_uri.query_values
34
- new_values = { :key => @developer_public_key, :token => @member_token }
34
+ new_values = { key: @developer_public_key, token: @member_token }
35
35
  the_uri.query_values = new_values.merge existing_values
36
36
 
37
37
  Request.new request.verb, the_uri, request.headers, request.body
@@ -100,8 +100,8 @@ module Trello
100
100
  request.headers = {"Authorization" => get_auth_header(request.uri, :get)}
101
101
  request
102
102
  else
103
- consumer(:return_url => return_url, :callback_method => :postMessage)
104
- request_token = consumer.get_request_token(:oauth_callback => return_url)
103
+ consumer(return_url: return_url, callback_method: :postMessage)
104
+ request_token = consumer.get_request_token(oauth_callback: return_url)
105
105
  callback.call request_token
106
106
  return nil
107
107
  end
@@ -151,12 +151,12 @@ module Trello
151
151
 
152
152
  def consumer_params(params = {})
153
153
  {
154
- :scheme => :header,
155
- :scope => 'read,write,account',
156
- :http_method => :get,
157
- :request_token_path => "https://trello.com/1/OAuthGetRequestToken",
158
- :authorize_path => "https://trello.com/1/OAuthAuthorizeToken",
159
- :access_token_path => "https://trello.com/1/OAuthGetAccessToken"
154
+ scheme: :header,
155
+ scope: 'read,write,account',
156
+ http_method: :get,
157
+ request_token_path: "https://trello.com/1/OAuthGetRequestToken",
158
+ authorize_path: "https://trello.com/1/OAuthAuthorizeToken",
159
+ access_token_path: "https://trello.com/1/OAuthGetAccessToken"
160
160
  }.merge!(params)
161
161
  end
162
162
 
@@ -44,7 +44,7 @@ module Trello
44
44
  end
45
45
 
46
46
  def self.register_attributes(*names)
47
- options = { :readonly => [] }
47
+ options = { readonly: [] }
48
48
  options.merge!(names.pop) if names.last.kind_of? Hash
49
49
 
50
50
  # Defines the attribute getter and setters.
@@ -102,7 +102,7 @@ module Trello
102
102
  Trello.client
103
103
  end
104
104
 
105
- register_attributes :id, :readonly => [ :id ]
105
+ register_attributes :id, readonly: [ :id ]
106
106
 
107
107
  attr_writer :client
108
108
 
data/lib/trello/board.rb CHANGED
@@ -1,16 +1,40 @@
1
1
  module Trello
2
+
3
+ # A board on Trello
4
+ #
5
+ # @!attribute [r] id
6
+ # @return [String]
7
+ # @!attribute [r] name
8
+ # @return [String]
9
+ # @!attribute [rw] description
10
+ # @return [String]
11
+ # @!attribute [rw] closed
12
+ # @return [Boolean]
13
+ # @!attribute [r] url
14
+ # @return [String]
15
+ # @!attribute [rw] organization_id
16
+ # @return [String] A 24-character hex string
17
+ # @!attribute [r] prefs
18
+ # @return [Hash] A 24-character hex string
2
19
  class Board < BasicData
3
- register_attributes :id, :name, :description, :closed, :url, :organization_id, :prefs,
4
- :readonly => [ :id, :url, :prefs ]
20
+ register_attributes :id, :name, :description, :closed, :starred, :url, :organization_id, :prefs,
21
+ readonly: [ :id, :url, :prefs ]
5
22
  validates_presence_of :id, :name
6
- validates_length_of :name, :in => 1..16384
7
- validates_length_of :description, :maximum => 16384
23
+ validates_length_of :name, in: 1..16384
24
+ validates_length_of :description, maximum: 16384
8
25
 
9
26
  include HasActions
10
27
 
11
28
  class << self
12
29
  # Finds a board.
13
30
  #
31
+ # @param [String] id Either the board's short ID (an alphanumeric string,
32
+ # found e.g. in the board's URL) or its long ID (a 24-character hex
33
+ # string.)
34
+ # @param [Hash] params
35
+ #
36
+ # @raise [Trello::Board] if a board with the given ID could not be found.
37
+ #
14
38
  # @return [Trello::Board]
15
39
  def find(id, params = {})
16
40
  client.find(:board, id, params)
@@ -20,8 +44,10 @@ module Trello
20
44
  data = {
21
45
  'name' => fields[:name],
22
46
  'desc' => fields[:description],
23
- 'closed' => fields[:closed] || false }
47
+ 'closed' => fields[:closed] || false,
48
+ 'starred' => fields[:starred] || false }
24
49
  data.merge!('idOrganization' => fields[:organization_id]) if fields[:organization_id]
50
+ data.merge!('prefs' => fields[:prefs]) if fields[:prefs]
25
51
  client.create(:board, data)
26
52
  end
27
53
 
@@ -34,9 +60,10 @@ module Trello
34
60
  def save
35
61
  return update! if id
36
62
 
37
- fields = { :name => name }
38
- fields.merge!(:desc => description) if description
39
- fields.merge!(:idOrganization => organization_id) if organization_id
63
+ fields = { name: name }
64
+ fields.merge!(desc: description) if description
65
+ fields.merge!(idOrganization: organization_id) if organization_id
66
+ fields.merge!(flat_prefs)
40
67
 
41
68
  client.post("/boards", fields).json_into(self)
42
69
  end
@@ -47,12 +74,16 @@ module Trello
47
74
  @previously_changed = changes
48
75
  @changed_attributes.clear
49
76
 
50
- client.put("/boards/#{self.id}/", {
51
- :name => attributes[:name],
52
- :description => attributes[:description],
53
- :closed => attributes[:closed],
54
- :idOrganization => attributes[:organization_id]
55
- }).json_into(self)
77
+ fields = {
78
+ name: attributes[:name],
79
+ description: attributes[:description],
80
+ closed: attributes[:closed],
81
+ starred: attributes[:starred],
82
+ idOrganization: attributes[:organization_id]
83
+ }
84
+ fields.merge!(flat_prefs)
85
+
86
+ client.put("/boards/#{self.id}/", fields).json_into(self)
56
87
  end
57
88
 
58
89
  def update_fields(fields)
@@ -60,6 +91,7 @@ module Trello
60
91
  attributes[:name] = fields['name'] if fields['name']
61
92
  attributes[:description] = fields['desc'] if fields['desc']
62
93
  attributes[:closed] = fields['closed'] if fields.has_key?('closed')
94
+ attributes[:starred] = fields['starred'] if fields.has_key?('starred')
63
95
  attributes[:url] = fields['url'] if fields['url']
64
96
  attributes[:organization_id] = fields['idOrganization'] if fields['idOrganization']
65
97
  attributes[:prefs] = fields['prefs'] || {}
@@ -71,6 +103,11 @@ module Trello
71
103
  attributes[:closed]
72
104
  end
73
105
 
106
+ # @return [Boolean]
107
+ def starred?
108
+ attributes[:starred]
109
+ end
110
+
74
111
  # @return [Boolean]
75
112
  def has_lists?
76
113
  lists.size > 0
@@ -82,29 +119,40 @@ module Trello
82
119
  client.get("/boards/#{self.id}/cards/#{card_id}").json_into(Card)
83
120
  end
84
121
 
122
+ # Add a member to this Board.
123
+ # type => [ :admin, :normal, :observer ]
124
+ def add_member(member, type = :normal)
125
+ client.put("/boards/#{self.id}/members/#{member.id}", { type: type })
126
+ end
127
+
128
+ # Remove a member of this Board.
129
+ def remove_member(member)
130
+ client.delete("/boards/#{self.id}/members/#{member.id}")
131
+ end
132
+
85
133
  # Return all the cards on this board.
86
134
  #
87
135
  # This method, when called, can take a hash table with a filter key containing any
88
136
  # of the following values:
89
137
  # :filter => [ :none, :open, :closed, :all ] # default :open
90
- many :cards, :filter => :open
138
+ many :cards, filter: :open
91
139
 
92
140
  # Returns all the lists on this board.
93
141
  #
94
142
  # This method, when called, can take a hash table with a filter key containing any
95
143
  # of the following values:
96
144
  # :filter => [ :none, :open, :closed, :all ] # default :open
97
- many :lists, :filter => :open
145
+ many :lists, filter: :open
98
146
 
99
147
  # Returns an array of members who are associated with this board.
100
148
  #
101
149
  # This method, when called, can take a hash table with a filter key containing any
102
150
  # of the following values:
103
151
  # :filter => [ :none, :normal, :owners, :all ] # default :all
104
- many :members, :filter => :all
152
+ many :members, filter: :all
105
153
 
106
154
  # Returns a reference to the organization this board belongs to.
107
- one :organization, :path => :organizations, :using => :organization_id
155
+ one :organization, path: :organizations, using: :organization_id
108
156
 
109
157
  def labels
110
158
  labels = client.get("/boards/#{id}/labelnames").json_into(LabelName)
@@ -115,5 +163,29 @@ module Trello
115
163
  def request_prefix
116
164
  "/boards/#{id}"
117
165
  end
166
+
167
+ private
168
+
169
+ # On creation
170
+ # https://trello.com/docs/api/board/#post-1-boards
171
+ # - permissionLevel
172
+ # - voting
173
+ # - comments
174
+ # - invitations
175
+ # - selfJoin
176
+ # - cardCovers
177
+ # - background
178
+ # - cardAging
179
+ #
180
+ # On update
181
+ # https://trello.com/docs/api/board/#put-1-boards-board-id
182
+ # Same as above plus:
183
+ # - calendarFeedEnabled
184
+ def flat_prefs
185
+ separator = id ? "/" : "_"
186
+ attributes[:prefs].inject({}) do |hash, (pref, v)|
187
+ hash.merge("prefs#{separator}#{pref}" => v)
188
+ end
189
+ end
118
190
  end
119
191
  end
data/lib/trello/card.rb CHANGED
@@ -1,13 +1,48 @@
1
1
  module Trello
2
2
  # A Card is a container that can house checklists and comments; it resides inside a List.
3
+ #
4
+ # @!attribute [r] id
5
+ # @return [String]
6
+ # @!attribute [r] short_id
7
+ # @return [Fixnum]
8
+ # @!attribute [rw] name
9
+ # @return [String]
10
+ # @!attribute [rw] desc
11
+ # @return [String]
12
+ # @!attribute [rw] due
13
+ # @return [Datetime]
14
+ # @!attribute [rw] closed
15
+ # @return [Boolean]
16
+ # @!attribute [r] url
17
+ # @return [String]
18
+ # @!attribute [r] short_url
19
+ # @return [String]
20
+ # @!attribute [rw] board_id
21
+ # @return [String] A 24-character hex string
22
+ # @!attribute [rw] member_ids
23
+ # @return [Array<String>] An Array of 24-character hex strings
24
+ # @!attribute [rw] list_id
25
+ # @return [String] A 24-character hex string
26
+ # @!attribute [rw] pos
27
+ # @return [Float]
28
+ # @!attribute [r] last_activity_date
29
+ # @return [Dateime]
30
+ # @!attribute [rw] card_labels
31
+ # @return [Array<Hash>]
32
+ # @!attribute [rw] cover_image_id
33
+ # @return [String] A 24-character hex string
34
+ # @!attribute [r] badges
35
+ # @return [Hash]
36
+ # @!attribute [r] card_members
37
+ # @return [Object]
3
38
  class Card < BasicData
4
39
  register_attributes :id, :short_id, :name, :desc, :due, :closed, :url, :short_url,
5
40
  :board_id, :member_ids, :list_id, :pos, :last_activity_date, :card_labels,
6
41
  :cover_image_id, :badges, :card_members,
7
- :readonly => [ :id, :short_id, :url, :short_url, :last_activity_date, :badges, :card_members ]
42
+ readonly: [ :id, :short_id, :url, :short_url, :last_activity_date, :badges, :card_members ]
8
43
  validates_presence_of :id, :name, :list_id
9
- validates_length_of :name, :in => 1..16384
10
- validates_length_of :desc, :in => 0..16384
44
+ validates_length_of :name, in: 1..16384
45
+ validates_length_of :desc, in: 0..16384
11
46
 
12
47
  include HasActions
13
48
 
@@ -33,11 +68,32 @@ module Trello
33
68
 
34
69
  class << self
35
70
  # Find a specific card by its id.
71
+ #
72
+ # @raise [Trello::Error] if the card could not be found.
73
+ #
74
+ # @return [Trello::Card]
36
75
  def find(id, params = {})
37
76
  client.find(:card, id, params)
38
77
  end
39
78
 
40
79
  # Create a new card and save it on Trello.
80
+ #
81
+ # @param [Hash] options # @option options [String] :name The name of the new card.
82
+ # @option options [String] :list_id ID of the list that the card should
83
+ # be added to.
84
+ # @option options [String] :desc A string with a
85
+ # length from 0 to 16384.
86
+ # @option options [String] :member_ids A comma-separated list of
87
+ # objectIds (24-character hex strings).
88
+ # @option options [String] :card_labels A comma-separated list of
89
+ # objectIds (24-character hex strings).
90
+ # @option options [Date] :due A date, or `nil`.
91
+ # @option options [String] :pos A position. `"top"`, `"bottom"`, or a
92
+ # positive number. Defaults to `"bottom"`.
93
+ #
94
+ # @raise [Trello::Error] if the card could not be created.
95
+ #
96
+ # @return [Trello::Card]
41
97
  def create(options)
42
98
  client.create(:card,
43
99
  'name' => options[:name],
@@ -55,6 +111,34 @@ module Trello
55
111
  #
56
112
  # Supply a hash of string keyed data retrieved from the Trello API representing
57
113
  # a card.
114
+ #
115
+ # Note that this this method does not save anything new to the Trello API,
116
+ # it just assigns the input attributes to your local object. If you use
117
+ # this method to assign attributes, call `save` or `update!` afterwards if
118
+ # you want to persist your changes to Trello.
119
+ #
120
+ # @param [Hash] fields
121
+ # @option fields [String] :id
122
+ # @option fields [String] :short_id
123
+ # @option fields [String] :name The new name of the card.
124
+ # @option fields [String] :desc A string with a length from 0 to
125
+ # 16384.
126
+ # @option fields [Date] :due A date, or `nil`.
127
+ # @option fields [Boolean] :closed
128
+ # @option fields [String] :url
129
+ # @option fields [String] :short_url
130
+ # @option fields [String] :board_id
131
+ # @option fields [String] :member_ids A comma-separated list of objectIds
132
+ # (24-character hex strings).
133
+ # @option fields [String] :pos A position. `"top"`, `"bottom"`, or a
134
+ # positive number. Defaults to `"bottom"`.
135
+ # @option fields [String] :card_labels A comma-separated list of
136
+ # objectIds (24-character hex strings).
137
+ # @option fields [Object] :cover_image_id
138
+ # @option fields [Object] :badges
139
+ # @option fields [Object] :card_members
140
+ #
141
+ # @return [Trello::Card] self
58
142
  def update_fields(fields)
59
143
  attributes[:id] = fields[SYMBOL_TO_STRING[:id]]
60
144
  attributes[:short_id] = fields[SYMBOL_TO_STRING[:short_id]]
@@ -77,16 +161,16 @@ module Trello
77
161
  end
78
162
 
79
163
  # Returns a reference to the board this card is part of.
80
- one :board, :path => :boards, :using => :board_id
164
+ one :board, path: :boards, using: :board_id
81
165
  # Returns a reference to the cover image attachment
82
- one :cover_image, :path => :attachments, :using => :cover_image_id
166
+ one :cover_image, path: :attachments, using: :cover_image_id
83
167
 
84
168
  # Returns a list of checklists associated with the card.
85
169
  #
86
170
  # The options hash may have a filter key which can have its value set as any
87
171
  # of the following values:
88
172
  # :filter => [ :none, :all ] # default :all
89
- many :checklists, :filter => :all
173
+ many :checklists, filter: :all
90
174
 
91
175
  def check_item_states
92
176
  states = client.get("/cards/#{self.id}/checkItemStates").json_into(CheckItemState)
@@ -95,9 +179,11 @@ module Trello
95
179
 
96
180
 
97
181
  # Returns a reference to the list this card is currently in.
98
- one :list, :path => :lists, :using => :list_id
182
+ one :list, path: :lists, using: :list_id
99
183
 
100
184
  # Returns a list of members who are assigned to this card.
185
+ #
186
+ # @return [Array<Trello::Member>]
101
187
  def members
102
188
  members = member_ids.map do |member_id|
103
189
  client.get("/members/#{member_id}").json_into(Member)
@@ -106,6 +192,11 @@ module Trello
106
192
  end
107
193
 
108
194
  # Saves a record.
195
+ #
196
+ # @raise [Trello::Error] if the card could not be saved
197
+ #
198
+ # @return [String] The JSON representation of the saved card returned by
199
+ # the Trello API.
109
200
  def save
110
201
  # If we have an id, just update our fields.
111
202
  return update! if id
@@ -121,9 +212,15 @@ module Trello
121
212
  end
122
213
 
123
214
  # Update an existing record.
124
- # Warning, this updates all fields using values already in memory. If
215
+ #
216
+ # Warning: this updates all fields using values already in memory. If
125
217
  # an external resource has updated these fields, you should refresh!
126
218
  # this object before making your changes, and before updating the record.
219
+ #
220
+ # @raise [Trello::Error] if the card could not be updated.
221
+ #
222
+ # @return [String] The JSON representation of the updated card returned by
223
+ # the Trello API.
127
224
  def update!
128
225
  @previously_changed = changes
129
226
  # extract only new values to build payload
@@ -133,7 +230,10 @@ module Trello
133
230
  client.put("/cards/#{id}", payload)
134
231
  end
135
232
 
233
+
136
234
  # Delete this card
235
+ #
236
+ # @return [String] the JSON response from the Trello API
137
237
  def delete
138
238
  client.delete("/cards/#{id}")
139
239
  end
@@ -143,6 +243,15 @@ module Trello
143
243
  closed
144
244
  end
145
245
 
246
+ # Close the card.
247
+ #
248
+ # This only marks your local copy card as closed. Use `close!` if you
249
+ # want to close the card and persist the change to the Trello API.
250
+ #
251
+ # @return [Boolean] always returns true
252
+ #
253
+ # @return [String] The JSON representation of the closed card returned by
254
+ # the Trello API.
146
255
  def close
147
256
  self.closed = true
148
257
  end
@@ -159,13 +268,13 @@ module Trello
159
268
 
160
269
  # Add a comment with the supplied text.
161
270
  def add_comment(text)
162
- client.post("/cards/#{id}/actions/comments", :text => text)
271
+ client.post("/cards/#{id}/actions/comments", text: text)
163
272
  end
164
273
 
165
274
  # Add a checklist to this card
166
275
  def add_checklist(checklist)
167
276
  client.post("/cards/#{id}/checklists", {
168
- :value => checklist.id
277
+ value: checklist.id
169
278
  })
170
279
  end
171
280
 
@@ -187,7 +296,7 @@ module Trello
187
296
  # Move this card to the given board (and optional list on this board)
188
297
  def move_to_board(new_board, new_list = nil)
189
298
  unless board_id == new_board.id
190
- payload = { :value => new_board.id }
299
+ payload = { value: new_board.id }
191
300
  payload[:idList] = new_list.id if new_list
192
301
  client.put("/cards/#{id}/idBoard", payload)
193
302
  end
@@ -196,7 +305,7 @@ module Trello
196
305
  # Add a member to this card
197
306
  def add_member(member)
198
307
  client.post("/cards/#{id}/members", {
199
- :value => member.id
308
+ value: member.id
200
309
  })
201
310
  end
202
311
 
@@ -222,7 +331,7 @@ module Trello
222
331
  errors.add(:label, "colour '#{colour}' does not exist")
223
332
  return Trello.logger.warn "The label colour '#{colour}' does not exist."
224
333
  end
225
- client.post("/cards/#{id}/labels", { :value => colour })
334
+ client.post("/cards/#{id}/labels", { value: colour })
226
335
  end
227
336
 
228
337
  # Remove a label
@@ -238,13 +347,13 @@ module Trello
238
347
  def add_attachment(attachment, name='')
239
348
  if attachment.is_a? File
240
349
  client.post("/cards/#{id}/attachments", {
241
- :file => attachment,
242
- :name => name
350
+ file: attachment,
351
+ name: name
243
352
  })
244
353
  else
245
354
  client.post("/cards/#{id}/attachments", {
246
- :url => attachment,
247
- :name => name
355
+ url: attachment,
356
+ name: name
248
357
  })
249
358
  end
250
359
  end
@@ -255,7 +364,7 @@ module Trello
255
364
  MultiAssociation.new(self, attachments).proxy
256
365
  end
257
366
 
258
- # Remove an attachment from this card
367
+ # Remove an attachment from this card
259
368
  def remove_attachment(attachment)
260
369
  client.delete("/cards/#{id}/attachments/#{attachment.id}")
261
370
  end