tacokit 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (174) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +16 -0
  3. data/.pryrc +7 -0
  4. data/.rspec +2 -0
  5. data/.travis.yml +18 -0
  6. data/Gemfile +28 -0
  7. data/Guardfile +12 -0
  8. data/LICENSE +22 -0
  9. data/README.md +134 -0
  10. data/Rakefile +8 -0
  11. data/config.ru +7 -0
  12. data/lib/tacokit/authorization.rb +46 -0
  13. data/lib/tacokit/client/actions.rb +54 -0
  14. data/lib/tacokit/client/boards.rb +124 -0
  15. data/lib/tacokit/client/cards.rb +143 -0
  16. data/lib/tacokit/client/checklists.rb +59 -0
  17. data/lib/tacokit/client/labels.rb +44 -0
  18. data/lib/tacokit/client/lists.rb +54 -0
  19. data/lib/tacokit/client/members.rb +91 -0
  20. data/lib/tacokit/client/notifications.rb +48 -0
  21. data/lib/tacokit/client/organizations.rb +79 -0
  22. data/lib/tacokit/client/searches.rb +20 -0
  23. data/lib/tacokit/client/tokens.rb +41 -0
  24. data/lib/tacokit/client/types.rb +11 -0
  25. data/lib/tacokit/client/webhooks.rb +43 -0
  26. data/lib/tacokit/client.rb +169 -0
  27. data/lib/tacokit/configuration.rb +60 -0
  28. data/lib/tacokit/error.rb +31 -0
  29. data/lib/tacokit/middleware/boom.rb +26 -0
  30. data/lib/tacokit/middleware/debug.rb +22 -0
  31. data/lib/tacokit/middleware.rb +15 -0
  32. data/lib/tacokit/resource.rb +114 -0
  33. data/lib/tacokit/response.rb +23 -0
  34. data/lib/tacokit/transform.rb +97 -0
  35. data/lib/tacokit/utils.rb +51 -0
  36. data/lib/tacokit/version.rb +3 -0
  37. data/lib/tacokit.rb +20 -0
  38. data/script/console +6 -0
  39. data/spec/cassettes/Tacokit_Client/_connection/authorized_GET_request_with_app_key_and_token_params.json +1 -0
  40. data/spec/cassettes/Tacokit_Client_Actions/_action/returns_a_token_authorized_action.json +1 -0
  41. data/spec/cassettes/Tacokit_Client_Actions/_action/returns_oauth_authorized_board.json +1 -0
  42. data/spec/cassettes/Tacokit_Client_Actions/_action_field/returns_a_hash.json +1 -0
  43. data/spec/cassettes/Tacokit_Client_Actions/_action_field/returns_a_resource.json +1 -0
  44. data/spec/cassettes/Tacokit_Client_Actions/_action_field/returns_a_value.json +1 -0
  45. data/spec/cassettes/Tacokit_Client_Actions/_action_resource/returns_action_board.json +1 -0
  46. data/spec/cassettes/Tacokit_Client_Actions/_action_resource/returns_action_entities.json +1 -0
  47. data/spec/cassettes/Tacokit_Client_Actions/_action_resource/returns_action_memberships.json +1 -0
  48. data/spec/cassettes/Tacokit_Client_Actions/_delete_action/deletes_an_action.json +1 -0
  49. data/spec/cassettes/Tacokit_Client_Actions/_update_action/updates_a_action.json +1 -0
  50. data/spec/cassettes/Tacokit_Client_Actions/_update_action/updates_an_action.json +1 -0
  51. data/spec/cassettes/Tacokit_Client_Actions/_update_action_text/updates_an_action.json +1 -0
  52. data/spec/cassettes/Tacokit_Client_Boards/_add_board_member/adds_invites_member_to_board.json +1 -0
  53. data/spec/cassettes/Tacokit_Client_Boards/_board/returns_a_token_authorized_board.json +1 -0
  54. data/spec/cassettes/Tacokit_Client_Boards/_board/returns_oauth_authorized_board.json +1 -0
  55. data/spec/cassettes/Tacokit_Client_Boards/_board_field/returns_a_hash.json +1 -0
  56. data/spec/cassettes/Tacokit_Client_Boards/_board_field/returns_a_value.json +1 -0
  57. data/spec/cassettes/Tacokit_Client_Boards/_board_field/returns_an_array.json +1 -0
  58. data/spec/cassettes/Tacokit_Client_Boards/_board_resource/returns_board_actions.json +1 -0
  59. data/spec/cassettes/Tacokit_Client_Boards/_board_resource/returns_board_cards.json +1 -0
  60. data/spec/cassettes/Tacokit_Client_Boards/_board_resource/returns_board_members.json +1 -0
  61. data/spec/cassettes/Tacokit_Client_Boards/_create_board/creates_a_board.json +1 -0
  62. data/spec/cassettes/Tacokit_Client_Boards/_create_board_resource/creates_a_board_calendar_key.json +1 -0
  63. data/spec/cassettes/Tacokit_Client_Boards/_create_board_resource/creates_a_board_label.json +1 -0
  64. data/spec/cassettes/Tacokit_Client_Boards/_create_board_resource/creates_a_board_resource.json +1 -0
  65. data/spec/cassettes/Tacokit_Client_Boards/_update_board/updates_a_board.json +1 -0
  66. data/spec/cassettes/Tacokit_Client_Boards/_update_board/updates_nested_resource.json +1 -0
  67. data/spec/cassettes/Tacokit_Client_Boards/_update_board_field/updates_a_board_field.json +1 -0
  68. data/spec/cassettes/Tacokit_Client_Boards/_update_board_resource/updates_member.json +1 -0
  69. data/spec/cassettes/Tacokit_Client_Cards/_card/returns_a_card_by_id.json +1 -0
  70. data/spec/cassettes/Tacokit_Client_Cards/_card/returns_a_card_by_short_link.json +1 -0
  71. data/spec/cassettes/Tacokit_Client_Cards/_card_field/returns_a_hash.json +1 -0
  72. data/spec/cassettes/Tacokit_Client_Cards/_card_field/returns_a_value.json +1 -0
  73. data/spec/cassettes/Tacokit_Client_Cards/_card_field/returns_an_array.json +1 -0
  74. data/spec/cassettes/Tacokit_Client_Cards/_card_resource/returns_card_actions.json +1 -0
  75. data/spec/cassettes/Tacokit_Client_Cards/_card_resource/returns_card_board.json +1 -0
  76. data/spec/cassettes/Tacokit_Client_Cards/_card_resource/returns_card_check_item_states.json +1 -0
  77. data/spec/cassettes/Tacokit_Client_Cards/_create_card/creates_a_card.json +1 -0
  78. data/spec/cassettes/Tacokit_Client_Cards/_create_card_attachment/attaches_external_url.json +1 -0
  79. data/spec/cassettes/Tacokit_Client_Cards/_create_card_attachment/uploads_local_file.json +1 -0
  80. data/spec/cassettes/Tacokit_Client_Cards/_create_card_comment/creates_a_comment.json +1 -0
  81. data/spec/cassettes/Tacokit_Client_Cards/_delete_card/deletes_a_card.json +1 -0
  82. data/spec/cassettes/Tacokit_Client_Cards/_delete_card_resource/deletes_resource.json +1 -0
  83. data/spec/cassettes/Tacokit_Client_Cards/_update_card/updates_a_card.json +1 -0
  84. data/spec/cassettes/Tacokit_Client_Checklists/_checklist/returns_a_checklist_by_id.json +1 -0
  85. data/spec/cassettes/Tacokit_Client_Checklists/_checklist_field/returns_a_value.json +1 -0
  86. data/spec/cassettes/Tacokit_Client_Checklists/_checklist_resource/returns_checklist_actions.json +1 -0
  87. data/spec/cassettes/Tacokit_Client_Checklists/_checklist_resource/returns_checklist_board.json +1 -0
  88. data/spec/cassettes/Tacokit_Client_Checklists/_checklist_resource/returns_checklist_prefs.json +1 -0
  89. data/spec/cassettes/Tacokit_Client_Checklists/_create_checklist/creates_a_checklist.json +1 -0
  90. data/spec/cassettes/Tacokit_Client_Checklists/_delete_checklist/deletes_a_checklist.json +1 -0
  91. data/spec/cassettes/Tacokit_Client_Checklists/_update_checklist/updates_a_checklist.json +1 -0
  92. data/spec/cassettes/Tacokit_Client_Labels/_create_label/creates_a_label.json +1 -0
  93. data/spec/cassettes/Tacokit_Client_Labels/_delete_label/deletes_a_label.json +1 -0
  94. data/spec/cassettes/Tacokit_Client_Labels/_label/returns_a_label_by_id.json +1 -0
  95. data/spec/cassettes/Tacokit_Client_Labels/_label_resource/returns_a_board.json +1 -0
  96. data/spec/cassettes/Tacokit_Client_Labels/_labels/returns_a_label_by_id.json +1 -0
  97. data/spec/cassettes/Tacokit_Client_Labels/_update_label/updates_a_label.json +1 -0
  98. data/spec/cassettes/Tacokit_Client_Lists/_create_list/creates_a_list.json +1 -0
  99. data/spec/cassettes/Tacokit_Client_Lists/_list/returns_a_list_by_id.json +1 -0
  100. data/spec/cassettes/Tacokit_Client_Lists/_list_field/returns_a_value.json +1 -0
  101. data/spec/cassettes/Tacokit_Client_Lists/_list_resource/returns_list_actions.json +1 -0
  102. data/spec/cassettes/Tacokit_Client_Lists/_list_resource/returns_list_board.json +1 -0
  103. data/spec/cassettes/Tacokit_Client_Lists/_list_resource/returns_list_cards.json +1 -0
  104. data/spec/cassettes/Tacokit_Client_Lists/_update_list/updates_a_list.json +1 -0
  105. data/spec/cassettes/Tacokit_Client_Members/_member/authenticated/returns_self.json +1 -0
  106. data/spec/cassettes/Tacokit_Client_Members/_member/raises_error_for_missing_token.json +1 -0
  107. data/spec/cassettes/Tacokit_Client_Members/_member/returns_a_member.json +1 -0
  108. data/spec/cassettes/Tacokit_Client_Members/_member/returns_self.json +1 -0
  109. data/spec/cassettes/Tacokit_Client_Members/_member/supports_query_fields_as_string_or_array.json +1 -0
  110. data/spec/cassettes/Tacokit_Client_Members/_member_field/returns_a_hash.json +1 -0
  111. data/spec/cassettes/Tacokit_Client_Members/_member_field/returns_a_member_field.json +1 -0
  112. data/spec/cassettes/Tacokit_Client_Members/_member_field/returns_a_resource.json +1 -0
  113. data/spec/cassettes/Tacokit_Client_Members/_member_field/returns_a_value.json +1 -0
  114. data/spec/cassettes/Tacokit_Client_Members/_member_field/returns_an_array.json +1 -0
  115. data/spec/cassettes/Tacokit_Client_Members/_member_resource/returns_member_actions.json +1 -0
  116. data/spec/cassettes/Tacokit_Client_Members/_member_resource/returns_member_board_stars.json +1 -0
  117. data/spec/cassettes/Tacokit_Client_Members/_member_resource/returns_member_boards.json +1 -0
  118. data/spec/cassettes/Tacokit_Client_Members/_update_member/updates_a_member.json +1 -0
  119. data/spec/cassettes/Tacokit_Client_Members/_update_member/updates_nested_resource.json +1 -0
  120. data/spec/cassettes/Tacokit_Client_Notifications/_notification/returns_a_notification_by_id.json +1 -0
  121. data/spec/cassettes/Tacokit_Client_Notifications/_notification_field/returns_a_hash.json +1 -0
  122. data/spec/cassettes/Tacokit_Client_Notifications/_notification_field/returns_a_resource.json +1 -0
  123. data/spec/cassettes/Tacokit_Client_Notifications/_notification_field/returns_a_value.json +1 -0
  124. data/spec/cassettes/Tacokit_Client_Notifications/_notification_resource/returns_action_entities.json +1 -0
  125. data/spec/cassettes/Tacokit_Client_Notifications/_notification_resource/returns_notification_board.json +1 -0
  126. data/spec/cassettes/Tacokit_Client_Notifications/_update_notification/updates_a_notification.json +1 -0
  127. data/spec/cassettes/Tacokit_Client_Organizations/_create_organization/creates_a_organization.json +1 -0
  128. data/spec/cassettes/Tacokit_Client_Organizations/_delete_organization/deletes_a_organization.json +1 -0
  129. data/spec/cassettes/Tacokit_Client_Organizations/_organization/returns_an_organization_by_id.json +1 -0
  130. data/spec/cassettes/Tacokit_Client_Organizations/_organization_field/returns_a_hash.json +1 -0
  131. data/spec/cassettes/Tacokit_Client_Organizations/_organization_field/returns_a_resource.json +1 -0
  132. data/spec/cassettes/Tacokit_Client_Organizations/_organization_field/returns_a_value.json +1 -0
  133. data/spec/cassettes/Tacokit_Client_Organizations/_organization_field/returns_an_array.json +1 -0
  134. data/spec/cassettes/Tacokit_Client_Organizations/_organization_resource/returns_organization_actions.json +1 -0
  135. data/spec/cassettes/Tacokit_Client_Organizations/_organization_resource/returns_organization_boards.json +1 -0
  136. data/spec/cassettes/Tacokit_Client_Organizations/_organization_resource/returns_organization_members.json +1 -0
  137. data/spec/cassettes/Tacokit_Client_Organizations/_update_organization/updates_a_organization.json +1 -0
  138. data/spec/cassettes/Tacokit_Client_Searches/_search/returns_search_result.json +1 -0
  139. data/spec/cassettes/Tacokit_Client_Tokens/_delete_token/deletes_a_token.json +1 -0
  140. data/spec/cassettes/Tacokit_Client_Tokens/_token/returns_a_token_for_token_string.json +1 -0
  141. data/spec/cassettes/Tacokit_Client_Tokens/_token_field/returns_a_value.json +1 -0
  142. data/spec/cassettes/Tacokit_Client_Tokens/_token_field/returns_an_array.json +1 -0
  143. data/spec/cassettes/Tacokit_Client_Tokens/_token_resource/returns_token_member.json +1 -0
  144. data/spec/cassettes/Tacokit_Client_Tokens/_token_resource/returns_token_webhooks.json +1 -0
  145. data/spec/cassettes/Tacokit_Client_Types/_type/returns_a_type_by_id.json +1 -0
  146. data/spec/cassettes/Tacokit_Client_Webhooks/_create_webhook/creates_a_webhook.json +1 -0
  147. data/spec/cassettes/Tacokit_Client_Webhooks/_delete_webhook/deletes_a_webhook.json +1 -0
  148. data/spec/cassettes/Tacokit_Client_Webhooks/_update_webhook/updates_a_webhook.json +1 -0
  149. data/spec/cassettes/Tacokit_Client_Webhooks/_webhook/returns_a_webhook_by_short_link.json +1 -0
  150. data/spec/cassettes/Tacokit_Client_Webhooks/_webhook_field/returns_a_value.json +1 -0
  151. data/spec/fixtures/taco.png +0 -0
  152. data/spec/spec_helper.rb +162 -0
  153. data/spec/tacokit/authorization_spec.rb +47 -0
  154. data/spec/tacokit/client/actions_spec.rb +100 -0
  155. data/spec/tacokit/client/boards_spec.rb +168 -0
  156. data/spec/tacokit/client/cards_spec.rb +192 -0
  157. data/spec/tacokit/client/checklists_spec.rb +87 -0
  158. data/spec/tacokit/client/labels_spec.rb +70 -0
  159. data/spec/tacokit/client/lists_spec.rb +81 -0
  160. data/spec/tacokit/client/members_spec.rb +114 -0
  161. data/spec/tacokit/client/notifications_spec.rb +52 -0
  162. data/spec/tacokit/client/organizations_spec.rb +100 -0
  163. data/spec/tacokit/client/searches_spec.rb +13 -0
  164. data/spec/tacokit/client/tokens_spec.rb +49 -0
  165. data/spec/tacokit/client/types_spec.rb +12 -0
  166. data/spec/tacokit/client/webhooks_spec.rb +70 -0
  167. data/spec/tacokit/client_spec.rb +28 -0
  168. data/spec/tacokit/configuration_spec.rb +51 -0
  169. data/spec/tacokit/middleware/boom_spec.rb +35 -0
  170. data/spec/tacokit/resource_spec.rb +26 -0
  171. data/spec/tacokit/transform_spec.rb +131 -0
  172. data/spec/tacokit_spec.rb +16 -0
  173. data/tacokit.gemspec +28 -0
  174. metadata +436 -0
@@ -0,0 +1,60 @@
1
+ module Tacokit
2
+ class Configuration
3
+
4
+ API_URL = "https://api.trello.com".freeze
5
+ WEB_URL = "https://trello.com".freeze
6
+
7
+ API_VERSION = "1".freeze
8
+
9
+ def self.keys
10
+ [
11
+ :app_key,
12
+ :app_secret,
13
+ :app_token,
14
+ :oauth_token,
15
+ :oauth_secret,
16
+ :api_endpoint,
17
+ :web_endpoint
18
+ ]
19
+ end
20
+
21
+ attr_accessor(*keys)
22
+
23
+ def initialize(opts = {})
24
+ self.options = defaults.merge(opts)
25
+ end
26
+
27
+ def options=(opts)
28
+ opts.each { |key, value| instance_variable_set("@#{key}", value) }
29
+ end
30
+
31
+ def user_authenticated?
32
+ app_key && oauth_token
33
+ end
34
+
35
+ def user_credentials
36
+ { consumer_key: app_key, token: oauth_token }.delete_if { |k, v| v.nil? }
37
+ end
38
+
39
+ def app_authenticated?
40
+ app_key && app_token
41
+ end
42
+
43
+ def app_credentials
44
+ { key: app_key, token: app_token }.delete_if { |k,v| v.nil? }
45
+ end
46
+
47
+ private
48
+
49
+ def defaults
50
+ {
51
+ api_endpoint: File.join(API_URL, API_VERSION),
52
+ web_endpoint: File.join(WEB_URL, API_VERSION),
53
+ app_key: ENV['TRELLO_APP_KEY'],
54
+ app_secret: ENV['TRELLO_APP_SECRET'],
55
+ app_token: ENV['TRELLO_APP_TOKEN']
56
+ }
57
+ end
58
+
59
+ end
60
+ end
@@ -0,0 +1,31 @@
1
+ module Tacokit
2
+ class Error < StandardError
3
+ ConfigurationError = Class.new(Error)
4
+
5
+ ClientError = Class.new(Error)
6
+
7
+ # Errors
8
+ # Code - Message
9
+
10
+ Unauthorized = Class.new(ClientError)
11
+
12
+ # 401 - invalid token
13
+ InvalidToken = Class.new(Unauthorized)
14
+
15
+ # 401 - invalid key
16
+ InvalidKey = Class.new(Unauthorized)
17
+
18
+ # 401 - unauthorized permission requested
19
+ UnauthorizedPermissionRequested = Class.new(Unauthorized)
20
+
21
+ # 403 - Bad member type
22
+
23
+ # 404 - model not found
24
+ ResourceNotFound = Class.new(ClientError)
25
+
26
+ # 407
27
+ ConnectionFailed = Class.new(ClientError)
28
+
29
+ end
30
+
31
+ end
@@ -0,0 +1,26 @@
1
+ module Tacokit
2
+ module Middleware
3
+ class Boom < Faraday::Response::Middleware
4
+ ClientErrorStatuses = 400...600
5
+
6
+ def on_complete(env)
7
+ case env[:status]
8
+ when 401
9
+ raise Tacokit::Error::Unauthorized.new(error_message(env))
10
+ when 404
11
+ raise Tacokit::Error::ResourceNotFound.new(error_message(env))
12
+ when 407
13
+ # mimic the behavior that we get with proxy requests with HTTPS
14
+ raise Tacokit::Error::ConnectionFailed, %{407 "Proxy Authentication Required "}
15
+ when ClientErrorStatuses
16
+ raise Tacokit::Error::ClientError.new(error_message(env))
17
+ end
18
+ end
19
+
20
+ def error_message(env)
21
+ "Server returned #{env[:status]}: #{env.body}. Headers #{env.response_headers.inspect}"
22
+ end
23
+
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,22 @@
1
+ require 'pry'
2
+ module Tacokit
3
+ module Middleware
4
+
5
+ class Debug < Faraday::Response::Middleware
6
+ def on_complete(env)
7
+ binding.pry
8
+ env
9
+ end
10
+
11
+ def parse(body)
12
+ binding.pry
13
+ body
14
+ end
15
+ end
16
+
17
+ Faraday::Response.register_middleware \
18
+ :debug => lambda { Tacokit::Middleware::Debug }
19
+
20
+ end
21
+ end
22
+
@@ -0,0 +1,15 @@
1
+ require 'tacokit/middleware/boom'
2
+ # require 'tacokit/middleware/debug'
3
+
4
+ module Tacokit
5
+ module Middleware
6
+
7
+ # Faraday::Request.register_middleware \
8
+ # :example => lambda { Tacokit::Middleware::Example }
9
+ #
10
+
11
+ Faraday::Response.register_middleware \
12
+ :boom => lambda { Tacokit::Middleware::Boom }
13
+
14
+ end
15
+ end
@@ -0,0 +1,114 @@
1
+ require 'forwardable'
2
+
3
+ module Tacokit
4
+ class Resource
5
+ SPECIAL_METHODS = Set.new(%w(client fields))
6
+ attr_reader :_client
7
+ attr_reader :_fields
8
+ attr_reader :attrs
9
+ alias to_hash attrs
10
+ alias to_h attrs
11
+ include Enumerable
12
+ extend Forwardable
13
+
14
+ def_delegators :@_fields, :fetch, :keys, :key?, :has_key?, :include?, :any?
15
+
16
+ def initialize(client, data = {})
17
+ @_client = client
18
+ @attrs = {}
19
+ @_metaclass = (class << self; self; end)
20
+ @_fields = Set.new
21
+ data.each do |key, value|
22
+ @_fields << key
23
+ @attrs[key.to_sym] = process_value(value)
24
+ end
25
+ @_metaclass.send(:attr_accessor, *data.keys)
26
+ end
27
+
28
+ def process_value(value)
29
+ case value
30
+ when Hash then self.class.new(@_client, value)
31
+ when Array then value.map { |v| process_value(v) }
32
+ else value
33
+ end
34
+ end
35
+
36
+ def each(&block)
37
+ @attrs.each(&block)
38
+ end
39
+
40
+ def [](method)
41
+ send(method.to_sym)
42
+ rescue NoMethodError
43
+ nil
44
+ end
45
+
46
+ def []=(method, value)
47
+ send("#{method}=", value)
48
+ rescue NoMethodError
49
+ nil
50
+ end
51
+
52
+ def self.attr_accessor(*attrs)
53
+ attrs.each do |attribute|
54
+ class_eval do
55
+ define_method attribute do
56
+ @attrs[attribute.to_sym]
57
+ end
58
+
59
+ define_method "#{attribute}=" do |value|
60
+ @attrs[attribute.to_sym] = value
61
+ end
62
+
63
+ define_method "#{attribute}?" do
64
+ !!@attrs[attribute.to_sym]
65
+ end
66
+ end
67
+ end
68
+ end
69
+
70
+ ATTR_SETTER = '='.freeze
71
+ ATTR_PREDICATE = '?'.freeze
72
+
73
+ # Provides access to a resource's attributes.
74
+ def method_missing(method, *args)
75
+ attr_name, suffix = method.to_s.scan(/([a-z0-9\_]+)(\?|\=)?$/i).first
76
+ if suffix == ATTR_SETTER
77
+ @_metaclass.send(:attr_accessor, attr_name)
78
+ @_fields << attr_name.to_sym
79
+ send(method, args.first)
80
+ elsif attr_name && @_fields.include?(attr_name.to_sym)
81
+ value = @attrs[attr_name.to_sym]
82
+ case suffix
83
+ when nil
84
+ @_metaclass.send(:attr_accessor, attr_name)
85
+ value
86
+ when ATTR_PREDICATE then !!value
87
+ end
88
+ elsif suffix.nil? && SPECIAL_METHODS.include?(attr_name)
89
+ instance_variable_get "@_#{attr_name}"
90
+ elsif attr_name && !@_fields.include?(attr_name.to_sym)
91
+ nil
92
+ else
93
+ super
94
+ end
95
+ end
96
+
97
+ def inspect
98
+ to_attrs.respond_to?(:pretty_inspect) ? to_attrs.pretty_inspect : to_attrs.inspect
99
+ end
100
+
101
+ def to_attrs
102
+ hash = self.attrs.clone
103
+ hash.keys.each do |k|
104
+ if hash[k].is_a?(Tacokit::Resource)
105
+ hash[k] = hash[k].to_attrs
106
+ elsif hash[k].is_a?(Array) && hash[k].all?{|el| el.is_a?(Tacokit::Resource)}
107
+ hash[k] = hash[k].collect{|el| el.to_attrs}
108
+ end
109
+ end
110
+ hash
111
+ end
112
+
113
+ end
114
+ end
@@ -0,0 +1,23 @@
1
+ module Tacokit
2
+ class Response
3
+
4
+ attr_reader :client, :status, :headers, :env, :data
5
+
6
+ def initialize(client, res, options = {})
7
+ @client = client
8
+ @status = res.status
9
+ @headers = res.headers
10
+ @env = res.env
11
+ @data = process_data(@client.deserialize(res.body))
12
+ end
13
+
14
+ def process_data(data)
15
+ case data
16
+ when Hash then Resource.new(client, data)
17
+ when Array then data.map { |value| process_data(value) }
18
+ else data
19
+ end
20
+ end
21
+
22
+ end
23
+ end
@@ -0,0 +1,97 @@
1
+ module Tacokit
2
+ class Transform
3
+ include Tacokit::Utils
4
+
5
+ def serialize(body)
6
+ serialize_body(body)
7
+ end
8
+
9
+ def deserialize(body)
10
+ deserialize_body(body)
11
+ end
12
+
13
+ private
14
+
15
+ def serialize_body(body)
16
+ case body
17
+ when Hash
18
+ serialize_hash(body)
19
+ else
20
+ body
21
+ end
22
+ end
23
+
24
+ def serialize_hash(body)
25
+ flatten_nested_keys(camelize_keys(body))
26
+ end
27
+
28
+ def camelize_keys(body)
29
+ deep_transform_keys(body) { |key| camelize_key(key) }
30
+ end
31
+
32
+ def camelize_key(key)
33
+ k = key.to_s
34
+ k = k.gsub(%r{([a-zA-Z]+?)_id(s\b|\b)?$}, "id_\\1\\2")
35
+ k = k.gsub(%r{(#{camelize_special_cases.keys.join('|')})}) { |m| camelize_special_cases.fetch(m) }
36
+ camelize(k, :lower)
37
+ end
38
+
39
+ # Converts
40
+ # 'prefs' => { 'voting' => 'members' }
41
+ # to
42
+ # 'prefs/voting' => 'members
43
+ #
44
+ def flatten_nested_keys(body)
45
+ options = {}
46
+ body.each do |key, value|
47
+ if value.is_a?(Hash)
48
+ value = flatten_nested_keys(value.dup)
49
+ value.each do |nested_key, nested_value|
50
+ options["#{key}/#{nested_key}"] = nested_value
51
+ end
52
+ body.delete(key)
53
+ end
54
+ end
55
+ body.merge(options)
56
+ end
57
+
58
+ def deserialize_body(body)
59
+ case body
60
+ when Hash
61
+ deserialize_hash(body)
62
+ when Array
63
+ deserialize_array(body)
64
+ else
65
+ body
66
+ end
67
+ end
68
+
69
+ def deserialize_array(body)
70
+ body.map { |data| deserialize_body(data) }
71
+ end
72
+
73
+ def deserialize_hash(body)
74
+ deep_transform_keys(body) do |key|
75
+ underscore_key(key)
76
+ end
77
+ end
78
+
79
+ def underscore_key(key)
80
+ k = key.to_s
81
+ k = k.gsub(%r{(#{pluralize_special_cases.join('|')})}, "\\1s")
82
+ k = underscore(k)
83
+ k.gsub(%r{^id_([a-zA-Z_]+?)(s\b|\b)$}, "\\1_id\\2")
84
+ end
85
+
86
+ def pluralize_special_cases
87
+ %w[ idBoardsPinned idPremOrgsAdmin ]
88
+ end
89
+
90
+ def camelize_special_cases
91
+ {
92
+ 'callback_url' => 'callbackURL'
93
+ }
94
+ end
95
+
96
+ end
97
+ end
@@ -0,0 +1,51 @@
1
+ # Emulate only what we need from activesupport
2
+ module Tacokit
3
+ module Utils
4
+
5
+ def deep_transform_keys(hash, &block)
6
+ _deep_transform_keys_in_object(hash, &block)
7
+ end
8
+
9
+ def extract_options(*args)
10
+ opts = args.last.is_a?(Hash) ? args.pop : {}
11
+ return args, opts
12
+ end
13
+
14
+ def underscore(string)
15
+ string.gsub(/::/, '/').
16
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
17
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').
18
+ tr("-", "_").
19
+ downcase
20
+ end
21
+
22
+ def camelize(string, lower = false)
23
+ string = string.to_s.gsub(/(?:^|_)(.)/) { $1.upcase }
24
+ string = string[0].chr.downcase + string[1..-1] if lower
25
+ string
26
+ end
27
+
28
+ def blank?(obj)
29
+ obj.respond_to?(:empty?) ? !!obj.empty? : !obj
30
+ end
31
+
32
+ def present?(obj)
33
+ !blank?(obj)
34
+ end
35
+
36
+ private
37
+
38
+ def _deep_transform_keys_in_object(object, &block)
39
+ case object
40
+ when Hash
41
+ object.each_with_object({}) do |(key, value), result|
42
+ result[yield(key)] = _deep_transform_keys_in_object(value, &block)
43
+ end
44
+ when Array
45
+ object.map {|e| _deep_transform_keys_in_object(e, &block) }
46
+ else
47
+ object
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,3 @@
1
+ module Tacokit
2
+ VERSION = "0.1.0"
3
+ end
data/lib/tacokit.rb ADDED
@@ -0,0 +1,20 @@
1
+ module Tacokit
2
+
3
+ class << self
4
+ def client
5
+ @client ||= Tacokit::Client.new
6
+ end
7
+
8
+ def method_missing(method_name, *args, &block)
9
+ return super unless client.respond_to?(method_name)
10
+ client.send(method_name, *args, &block)
11
+ end
12
+
13
+ end
14
+ end
15
+
16
+ require "tacokit/utils"
17
+ require "tacokit/resource"
18
+ require "tacokit/client"
19
+ require "tacokit/error"
20
+ require "tacokit/version"
data/script/console ADDED
@@ -0,0 +1,6 @@
1
+ #!/bin/sh
2
+
3
+ set -e
4
+
5
+ echo "===> Launching..."
6
+ bundle exec pry --gem
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"get","uri":"https://api.trello.com/1/members/me/boards?key=<TRELLO_APP_KEY>&token=<TRELLO_APP_TOKEN>","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"User-Agent":["TacoKit 0.0.1"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Cache-Control":["max-age=0, must-revalidate, no-cache, no-store"],"X-Content-Type-Options":["nosniff"],"Strict-Transport-Security":["max-age=15768000"],"X-Xss-Protection":["1; mode=block"],"X-Frame-Options":["DENY"],"X-Trello-Version":["1.266.2"],"X-Trello-Environment":["Production"],"Set-Cookie":["___utmvaDOussFI=oZH\u0001DeIE; path=/; Max-Age=900","___utmvbDOussFI=XZq XOROQalm: gtk; path=/; Max-Age=900","___utmvmDOussFI=CpTftxzbdbx; path=/; Max-Age=900","dsc=5822d8078dbf1b557e347af507184c5283135e1839c036004032d336f762a069; Path=/; Expires=Wed, 17 Dec 2014 18:35:29 GMT; Secure","incap_ses_220_168562=EQ0vCgM4R11m5zsVNZkNA3DYjVQAAAAAJzgeTqNzMFDb/4HDwTPWOw==; path=/; Domain=.trello.com","visid_incap_168562=jpt8gFzaQUyFPtM8yiRk9nDYjVQAAAAAQUIPAAAAAAA5yXhNRdE59RhDBEjupeNv; expires=Tue, 13 Dec 2016 12:28:08 GMT; path=/; Domain=.trello.com"],"X-Server-Time":["1418582129957"],"Expires":["Thu, 01 Jan 1970 00:00:00"],"Content-Type":["application/json"],"Access-Control-Allow-Origin":["*"],"Access-Control-Allow-Methods":["GET, PUT, POST, DELETE"],"Etag":["\"-1998848769\""],"Vary":["Accept-Encoding"],"Date":["Sun, 14 Dec 2014 18:35:29 GMT"],"Transfer-Encoding":["chunked"],"X-Iinfo":["9-41578382-41546667 PNNY RT(1418582128735 168) q(0 0 0 -1) r(0 0)"],"X-Cdn":["Incapsula"]},"body":{"encoding":"UTF-8","base64_string":"W3siaWQiOiI1NDhhNjc1NTgxZDFkNjY5YzllODE4NGUiLCJuYW1lIjoiVGVz\ndCBCb2FyZCIsImRlc2MiOiIiLCJkZXNjRGF0YSI6bnVsbCwiY2xvc2VkIjpm\nYWxzZSwiaWRPcmdhbml6YXRpb24iOm51bGwsImludml0ZWQiOmZhbHNlLCJw\naW5uZWQiOmZhbHNlLCJzdGFycmVkIjpmYWxzZSwidXJsIjoiaHR0cHM6Ly90\ncmVsbG8uY29tL2Ivc3dlelE5WFMvdGVzdC1ib2FyZCIsInByZWZzIjp7InBl\ncm1pc3Npb25MZXZlbCI6InB1YmxpYyIsInZvdGluZyI6ImRpc2FibGVkIiwi\nY29tbWVudHMiOiJtZW1iZXJzIiwiaW52aXRhdGlvbnMiOiJtZW1iZXJzIiwi\nc2VsZkpvaW4iOmZhbHNlLCJjYXJkQ292ZXJzIjp0cnVlLCJjYXJkQWdpbmci\nOiJyZWd1bGFyIiwiY2FsZW5kYXJGZWVkRW5hYmxlZCI6ZmFsc2UsImJhY2tn\ncm91bmQiOiJibHVlIiwiYmFja2dyb3VuZENvbG9yIjoiIzAwNzlCRiIsImJh\nY2tncm91bmRJbWFnZSI6bnVsbCwiYmFja2dyb3VuZEltYWdlU2NhbGVkIjpu\ndWxsLCJiYWNrZ3JvdW5kVGlsZSI6ZmFsc2UsImJhY2tncm91bmRCcmlnaHRu\nZXNzIjoidW5rbm93biIsImNhbkJlUHVibGljIjp0cnVlLCJjYW5CZU9yZyI6\ndHJ1ZSwiY2FuQmVQcml2YXRlIjp0cnVlLCJjYW5JbnZpdGUiOnRydWV9LCJp\nbnZpdGF0aW9ucyI6W10sIm1lbWJlcnNoaXBzIjpbeyJpZCI6IjU0OGE2NzU1\nODFkMWQ2NjljOWU4MTg0ZiIsImlkTWVtYmVyIjoiNTQ4YTY2OTZiM2I5OTE4\nYmViMTQ0YjA3IiwibWVtYmVyVHlwZSI6ImFkbWluIiwidW5jb25maXJtZWQi\nOmZhbHNlLCJkZWFjdGl2YXRlZCI6ZmFsc2V9LHsiaWQiOiI1NDhhNjc2ZWU3\nY2MzNzlkZWJiOGQ5YzYiLCJpZE1lbWJlciI6IjRmMDc5YWRjNzM2NjhiMjQ0\nYjFjMDk5YSIsIm1lbWJlclR5cGUiOiJub3JtYWwiLCJ1bmNvbmZpcm1lZCI6\nZmFsc2UsImRlYWN0aXZhdGVkIjpmYWxzZX1dLCJzaG9ydExpbmsiOiJzd2V6\nUTlYUyIsInN1YnNjcmliZWQiOmZhbHNlLCJsYWJlbE5hbWVzIjp7ImdyZWVu\nIjoiIiwieWVsbG93IjoiIiwib3JhbmdlIjoiIiwicmVkIjoiIiwicHVycGxl\nIjoiIiwiYmx1ZSI6IiIsInNreSI6IiIsImxpbWUiOiIiLCJwaW5rIjoiIiwi\nYmxhY2siOiIifSwicG93ZXJVcHMiOltdLCJkYXRlTGFzdEFjdGl2aXR5Ijpu\ndWxsLCJkYXRlTGFzdFZpZXciOiIyMDE0LTEyLTE0VDE4OjI2OjMzLjQyNVoi\nLCJzaG9ydFVybCI6Imh0dHBzOi8vdHJlbGxvLmNvbS9iL3N3ZXpROVhTIn0s\neyJpZCI6IjU0OGE2Njk2YjNiOTkxOGJlYjE0NGIwOCIsIm5hbWUiOiJXZWxj\nb21lIEJvYXJkIiwiZGVzYyI6IiIsImRlc2NEYXRhIjpudWxsLCJjbG9zZWQi\nOmZhbHNlLCJpZE9yZ2FuaXphdGlvbiI6bnVsbCwiaW52aXRlZCI6ZmFsc2Us\nInBpbm5lZCI6ZmFsc2UsInN0YXJyZWQiOmZhbHNlLCJ1cmwiOiJodHRwczov\nL3RyZWxsby5jb20vYi9UbEVZVGpNaS93ZWxjb21lLWJvYXJkIiwicHJlZnMi\nOnsicGVybWlzc2lvbkxldmVsIjoicHJpdmF0ZSIsInZvdGluZyI6ImRpc2Fi\nbGVkIiwiY29tbWVudHMiOiJtZW1iZXJzIiwiaW52aXRhdGlvbnMiOiJtZW1i\nZXJzIiwic2VsZkpvaW4iOnRydWUsImNhcmRDb3ZlcnMiOnRydWUsImNhbGVu\nZGFyRmVlZEVuYWJsZWQiOmZhbHNlLCJiYWNrZ3JvdW5kIjoiYmx1ZSIsImJh\nY2tncm91bmRDb2xvciI6IiMwMDc5QkYiLCJiYWNrZ3JvdW5kSW1hZ2UiOm51\nbGwsImJhY2tncm91bmRJbWFnZVNjYWxlZCI6bnVsbCwiYmFja2dyb3VuZFRp\nbGUiOmZhbHNlLCJiYWNrZ3JvdW5kQnJpZ2h0bmVzcyI6InVua25vd24iLCJj\nYW5CZVB1YmxpYyI6dHJ1ZSwiY2FuQmVPcmciOnRydWUsImNhbkJlUHJpdmF0\nZSI6dHJ1ZSwiY2FuSW52aXRlIjp0cnVlfSwiaW52aXRhdGlvbnMiOltdLCJt\nZW1iZXJzaGlwcyI6W3siaWQiOiI1NDhhNjY5NmIzYjk5MThiZWIxNDRiMDki\nLCJpZE1lbWJlciI6IjRlNmE3ZmFkMDVkOThiMDJiYTAwODQ1YyIsIm1lbWJl\nclR5cGUiOiJub3JtYWwiLCJ1bmNvbmZpcm1lZCI6ZmFsc2UsImRlYWN0aXZh\ndGVkIjpmYWxzZX0seyJpZCI6IjU0OGE2Njk2YjNiOTkxOGJlYjE0NGIwZCIs\nImlkTWVtYmVyIjoiNTQ4YTY2OTZiM2I5OTE4YmViMTQ0YjA3IiwibWVtYmVy\nVHlwZSI6ImFkbWluIiwidW5jb25maXJtZWQiOmZhbHNlLCJkZWFjdGl2YXRl\nZCI6ZmFsc2V9XSwic2hvcnRMaW5rIjoiVGxFWVRqTWkiLCJzdWJzY3JpYmVk\nIjpmYWxzZSwibGFiZWxOYW1lcyI6eyJncmVlbiI6IiIsInllbGxvdyI6IiIs\nIm9yYW5nZSI6IiIsInJlZCI6IiIsInB1cnBsZSI6IiIsImJsdWUiOiIiLCJz\na3kiOiIiLCJsaW1lIjoiIiwicGluayI6IiIsImJsYWNrIjoiIn0sInBvd2Vy\nVXBzIjpbXSwiZGF0ZUxhc3RBY3Rpdml0eSI6IjIwMTQtMTItMTJUMDM6NTI6\nNTQuOTEzWiIsImRhdGVMYXN0VmlldyI6IjIwMTQtMTItMTNUMTg6MDY6MTMu\nOTgyWiIsInNob3J0VXJsIjoiaHR0cHM6Ly90cmVsbG8uY29tL2IvVGxFWVRq\nTWkifV0=\n"},"http_version":null},"recorded_at":"Sun, 14 Dec 2014 18:35:30 GMT"}],"recorded_with":"VCR 2.9.3"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"get","uri":"https://api.trello.com/1/actions/548e3153ea7ca8f9cd3cb77b?key=<TRELLO_APP_KEY>&token=<TRELLO_APP_TOKEN>","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"User-Agent":["TacoKit 0.0.1"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Cache-Control":["max-age=0, must-revalidate, no-cache, no-store"],"X-Content-Type-Options":["nosniff"],"Strict-Transport-Security":["max-age=15768000"],"X-Xss-Protection":["1; mode=block"],"X-Frame-Options":["DENY"],"X-Trello-Version":["1.267.1"],"X-Trello-Environment":["Production"],"Set-Cookie":["___utmvaDOussFI=sub\u0001VaeE; path=/; Max-Age=900","___utmvbDOussFI=VZC XjdOZalR: dtJ; path=/; Max-Age=900","___utmvmDOussFI=SsHfKudbuuv; path=/; Max-Age=900","dsc=4de9b55a9db53e97a053af7f726bf30429997070a791cd0f9bc9f11add05cf04; Path=/; Expires=Fri, 19 Dec 2014 13:52:16 GMT; Secure","incap_ses_220_168562=lxa+DS2jMzBQGPAXNZkNAw85kFQAAAAAtb20y0ysKdX8wIZW+pTMug==; path=/; Domain=.trello.com","visid_incap_168562=Kz38NuM+T8edV9pxxSAbwA85kFQAAAAAQUIPAAAAAADU8u1AMX8he7e2pF6H3BAE; expires=Thu, 15 Dec 2016 12:28:10 GMT; path=/; Domain=.trello.com"],"X-Server-Time":["1418737936559"],"Expires":["Thu, 01 Jan 1970 00:00:00"],"Content-Type":["application/json"],"Access-Control-Allow-Origin":["*"],"Access-Control-Allow-Methods":["GET, PUT, POST, DELETE"],"Content-Length":["466"],"Vary":["Accept-Encoding"],"Date":["Tue, 16 Dec 2014 13:52:16 GMT"],"X-Iinfo":["9-64274593-64259856 PNNY RT(1418737935461 50) q(0 0 0 -1) r(0 0) U10000"],"X-Cdn":["Incapsula"]},"body":{"encoding":"UTF-8","base64_string":"eyJpZCI6IjU0OGUzMTUzZWE3Y2E4ZjljZDNjYjc3YiIsImlkTWVtYmVyQ3Jl\nYXRvciI6IjU0OGE2Njk2YjNiOTkxOGJlYjE0NGIwNyIsImRhdGEiOnsib3Jn\nYW5pemF0aW9uIjp7Im5hbWUiOiJUZWFtIFRhY29raXQiLCJpZCI6IjU0OGUz\nMGU5NjgzZTE5MjNmNjc2YmEyMCJ9LCJib2FyZCI6eyJzaG9ydExpbmsiOiJz\nd2V6UTlYUyIsIm5hbWUiOiJUZXN0IEJvYXJkIiwiaWQiOiI1NDhhNjc1NTgx\nZDFkNjY5YzllODE4NGUifX0sInR5cGUiOiJhZGRUb09yZ2FuaXphdGlvbkJv\nYXJkIiwiZGF0ZSI6IjIwMTQtMTItMTVUMDA6NTQ6NDMuODk3WiIsIm1lbWJl\nckNyZWF0b3IiOnsiaWQiOiI1NDhhNjY5NmIzYjk5MThiZWIxNDRiMDciLCJh\ndmF0YXJIYXNoIjoiY2IwZGY0NTA1NWJhYzg0ZTdjNWZiNzI4ZTAwZTIwMTUi\nLCJmdWxsTmFtZSI6IlRhY28gS2l0IiwiaW5pdGlhbHMiOiJUSyIsInVzZXJu\nYW1lIjoidGFjb2tpdCJ9fQ==\n"},"http_version":null},"recorded_at":"Tue, 16 Dec 2014 13:52:16 GMT"}],"recorded_with":"VCR 2.9.3"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"get","uri":"https://api.trello.com/1/actions/548e3153ea7ca8f9cd3cb77b","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"User-Agent":["TacoKit 0.0.1"],"Authorization":["OAuth oauth_consumer_key=\"<TRELLO_APP_KEY>\", oauth_nonce=\"5b0bd1cf6922fba3898b6346d6423019\", oauth_signature=\"IxXiTdpwi0pRO6LGLDRyAxtHfDo%3D\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"1418737936\", oauth_token=\"<TRELLO_OAUTH_TOKEN>\", oauth_version=\"1.0\""],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Cache-Control":["max-age=0, must-revalidate, no-cache, no-store"],"X-Content-Type-Options":["nosniff"],"Strict-Transport-Security":["max-age=15768000"],"X-Xss-Protection":["1; mode=block"],"X-Frame-Options":["DENY"],"X-Trello-Version":["1.267.1"],"X-Trello-Environment":["Production"],"Set-Cookie":["___utmvaDOussFI=aZQ\u0001flfA; path=/; Max-Age=900","___utmvbDOussFI=gZr XqvOHalz: Rto; path=/; Max-Age=900","___utmvmDOussFI=yUFoevlXEUJ; path=/; Max-Age=900","dsc=c5e1839331e8d03351b13b0ce2f6bb8b32ce8c411adf9ded6e15072e61d7bc3e; Path=/; Expires=Fri, 19 Dec 2014 13:52:16 GMT; Secure","incap_ses_220_168562=HXj0T8eZj0SIGPAXNZkNAw85kFQAAAAAqFjC6kNfBvnV1YTFbUjP8Q==; path=/; Domain=.trello.com","visid_incap_168562=rVlqVBUeQ76aoKfQmBjq4A85kFQAAAAAQUIPAAAAAACr7g069rnGKAkNm/lEikjG; expires=Thu, 15 Dec 2016 12:28:10 GMT; path=/; Domain=.trello.com"],"X-Server-Time":["1418737936765"],"Expires":["Thu, 01 Jan 1970 00:00:00"],"Content-Type":["application/json"],"Access-Control-Allow-Origin":["*"],"Access-Control-Allow-Methods":["GET, PUT, POST, DELETE"],"Content-Length":["466"],"Vary":["Accept-Encoding"],"Date":["Tue, 16 Dec 2014 13:52:16 GMT"],"X-Iinfo":["9-64274632-64271783 PNNY RT(1418737935685 51) q(0 0 0 -1) r(0 0) U13"],"X-Cdn":["Incapsula"]},"body":{"encoding":"UTF-8","base64_string":"eyJpZCI6IjU0OGUzMTUzZWE3Y2E4ZjljZDNjYjc3YiIsImlkTWVtYmVyQ3Jl\nYXRvciI6IjU0OGE2Njk2YjNiOTkxOGJlYjE0NGIwNyIsImRhdGEiOnsib3Jn\nYW5pemF0aW9uIjp7Im5hbWUiOiJUZWFtIFRhY29raXQiLCJpZCI6IjU0OGUz\nMGU5NjgzZTE5MjNmNjc2YmEyMCJ9LCJib2FyZCI6eyJzaG9ydExpbmsiOiJz\nd2V6UTlYUyIsIm5hbWUiOiJUZXN0IEJvYXJkIiwiaWQiOiI1NDhhNjc1NTgx\nZDFkNjY5YzllODE4NGUifX0sInR5cGUiOiJhZGRUb09yZ2FuaXphdGlvbkJv\nYXJkIiwiZGF0ZSI6IjIwMTQtMTItMTVUMDA6NTQ6NDMuODk3WiIsIm1lbWJl\nckNyZWF0b3IiOnsiaWQiOiI1NDhhNjY5NmIzYjk5MThiZWIxNDRiMDciLCJh\ndmF0YXJIYXNoIjoiY2IwZGY0NTA1NWJhYzg0ZTdjNWZiNzI4ZTAwZTIwMTUi\nLCJmdWxsTmFtZSI6IlRhY28gS2l0IiwiaW5pdGlhbHMiOiJUSyIsInVzZXJu\nYW1lIjoidGFjb2tpdCJ9fQ==\n"},"http_version":null},"recorded_at":"Tue, 16 Dec 2014 13:52:16 GMT"}],"recorded_with":"VCR 2.9.3"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"get","uri":"https://api.trello.com/1/actions/548e3153ea7ca8f9cd3cb77b/data?key=<TRELLO_APP_KEY>&token=<TRELLO_APP_TOKEN>","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"User-Agent":["TacoKit 0.0.1"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Cache-Control":["max-age=0, must-revalidate, no-cache, no-store"],"X-Content-Type-Options":["nosniff"],"Strict-Transport-Security":["max-age=15768000"],"X-Xss-Protection":["1; mode=block"],"X-Frame-Options":["DENY"],"X-Trello-Version":["1.268.2"],"X-Trello-Environment":["Production"],"Set-Cookie":["dsc=4da0cf780b6ad37767961e0b7aa2ccdadcf6f255ebd157c0a36dd0af7e7c8aee; Path=/; Expires=Sat, 20 Dec 2014 03:46:06 GMT; Secure","incap_ses_220_168562=90OLR7qXjjAy/OYYNZkNA338kFQAAAAAHW5jJ5J31c5dpAKyHzsdAg==; path=/; Domain=.trello.com","visid_incap_168562=aqlMo/j+S8a7/2DHGOcvdn38kFQAAAAAQUIPAAAAAACFVbK9hlUuuriX97xLs7rC; expires=Thu, 15 Dec 2016 12:28:10 GMT; path=/; Domain=.trello.com"],"X-Server-Time":["1418787966825"],"Expires":["Thu, 01 Jan 1970 00:00:00"],"Content-Type":["application/json"],"Access-Control-Allow-Origin":["*"],"Access-Control-Allow-Methods":["GET, PUT, POST, DELETE"],"Content-Length":["157"],"Vary":["Accept-Encoding"],"Date":["Wed, 17 Dec 2014 03:46:06 GMT"],"X-Iinfo":["9-73492312-73480854 PNNY RT(1418787965741 49) q(0 0 0 -1) r(1 1) U10000"],"X-Cdn":["Incapsula"]},"body":{"encoding":"UTF-8","base64_string":"eyJvcmdhbml6YXRpb24iOnsibmFtZSI6IlRlYW0gVGFjb2tpdCIsImlkIjoi\nNTQ4ZTMwZTk2ODNlMTkyM2Y2NzZiYTIwIn0sImJvYXJkIjp7InNob3J0TGlu\nayI6InN3ZXpROVhTIiwibmFtZSI6IlRlc3QgQm9hcmQiLCJpZCI6IjU0OGE2\nNzU1ODFkMWQ2NjljOWU4MTg0ZSJ9fQ==\n"},"http_version":null},"recorded_at":"Wed, 17 Dec 2014 03:46:09 GMT"}],"recorded_with":"VCR 2.9.3"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"get","uri":"https://api.trello.com/1/actions/548e3153ea7ca8f9cd3cb77b/data?key=<TRELLO_APP_KEY>&token=<TRELLO_APP_TOKEN>","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"User-Agent":["TacoKit 0.0.1"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Cache-Control":["max-age=0, must-revalidate, no-cache, no-store"],"X-Content-Type-Options":["nosniff"],"Strict-Transport-Security":["max-age=15768000"],"X-Xss-Protection":["1; mode=block"],"X-Frame-Options":["DENY"],"X-Trello-Version":["1.269.0"],"X-Trello-Environment":["Production"],"Set-Cookie":["___utmvaDOussFI=RoC\u0001WSpO; path=/; Max-Age=900","___utmvbDOussFI=vZn XmhOnalB: CtV; path=/; Max-Age=900","___utmvmDOussFI=kGNOGgLayQa; path=/; Max-Age=900","dsc=bbd14c9092f3af7bf28436bf3dd6571e0b030b2693159600acef7b7bd7a8d77c; Path=/; Expires=Mon, 22 Dec 2014 14:34:39 GMT; Secure","incap_ses_220_168562=ZQcOcnWsRWtua1McNZkNA343lFQAAAAApQHlrgZLMIqlGQhNGULd0A==; path=/; Domain=.trello.com","visid_incap_168562=ctQjgUpyRDCYjTPRtFvyhn43lFQAAAAAQUIPAAAAAAA86u1b8C8pAYrOcUyF2INw; expires=Sun, 18 Dec 2016 12:28:13 GMT; path=/; Domain=.trello.com"],"X-Server-Time":["1418999679825"],"Expires":["Thu, 01 Jan 1970 00:00:00"],"Content-Type":["application/json"],"Access-Control-Allow-Origin":["*"],"Access-Control-Allow-Methods":["GET, PUT, POST, DELETE"],"Content-Length":["157"],"Vary":["Accept-Encoding"],"Date":["Fri, 19 Dec 2014 14:34:39 GMT"],"X-Iinfo":["9-104106285-104077929 PNNY RT(1418999678738 44) q(0 0 0 0) r(1 1)"],"X-Cdn":["Incapsula"]},"body":{"encoding":"UTF-8","base64_string":"eyJvcmdhbml6YXRpb24iOnsibmFtZSI6IlRlYW0gVGFjb2tpdCIsImlkIjoi\nNTQ4ZTMwZTk2ODNlMTkyM2Y2NzZiYTIwIn0sImJvYXJkIjp7InNob3J0TGlu\nayI6InN3ZXpROVhTIiwibmFtZSI6IlRlc3QgQm9hcmQiLCJpZCI6IjU0OGE2\nNzU1ODFkMWQ2NjljOWU4MTg0ZSJ9fQ==\n"},"http_version":null},"recorded_at":"Fri, 19 Dec 2014 14:34:40 GMT"}],"recorded_with":"VCR 2.9.3"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"get","uri":"https://api.trello.com/1/actions/548e3153ea7ca8f9cd3cb77b/type?key=<TRELLO_APP_KEY>&token=<TRELLO_APP_TOKEN>","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"User-Agent":["TacoKit 0.0.1"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Cache-Control":["max-age=0, must-revalidate, no-cache, no-store"],"X-Content-Type-Options":["nosniff"],"Strict-Transport-Security":["max-age=15768000"],"X-Xss-Protection":["1; mode=block"],"X-Frame-Options":["DENY"],"X-Trello-Version":["1.268.2"],"X-Trello-Environment":["Production"],"Set-Cookie":["dsc=10e1e8c467eb55984f3829b80b112bd7cd3a48bf5b4790bcc8aff60334d4fb0c; Path=/; Expires=Sat, 20 Dec 2014 03:46:06 GMT; Secure","incap_ses_220_168562=esrRe8j9LFn4++YYNZkNA338kFQAAAAA+bqMloQmibXhxjKTl3nsWA==; path=/; Domain=.trello.com","visid_incap_168562=6W/9IkfeQyinI7gdYrH7A338kFQAAAAAQUIPAAAAAAC59TB9owaJKiR81wIPOJw4; expires=Thu, 15 Dec 2016 12:28:10 GMT; path=/; Domain=.trello.com"],"X-Server-Time":["1418787966649"],"Expires":["Thu, 01 Jan 1970 00:00:00"],"Content-Type":["application/json"],"Access-Control-Allow-Origin":["*"],"Access-Control-Allow-Methods":["GET, PUT, POST, DELETE"],"Content-Length":["36"],"Vary":["Accept-Encoding"],"Date":["Wed, 17 Dec 2014 03:46:06 GMT"],"X-Iinfo":["9-73492284-73351768 PNNY RT(1418787965575 45) q(0 0 0 -1) r(0 0) U10000"],"X-Cdn":["Incapsula"]},"body":{"encoding":"UTF-8","base64_string":"eyJfdmFsdWUiOiJhZGRUb09yZ2FuaXphdGlvbkJvYXJkIn0K\n"},"http_version":null},"recorded_at":"Wed, 17 Dec 2014 03:46:09 GMT"}],"recorded_with":"VCR 2.9.3"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"get","uri":"https://api.trello.com/1/actions/548e3153ea7ca8f9cd3cb77b/board?key=<TRELLO_APP_KEY>&token=<TRELLO_APP_TOKEN>","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"User-Agent":["TacoKit 0.0.1"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Cache-Control":["max-age=0, must-revalidate, no-cache, no-store"],"X-Content-Type-Options":["nosniff"],"Strict-Transport-Security":["max-age=15768000"],"X-Xss-Protection":["1; mode=block"],"X-Frame-Options":["DENY"],"X-Trello-Version":["1.268.2"],"X-Trello-Environment":["Production"],"Set-Cookie":["dsc=3d273d677d6becaed96721cb25c08bd42dbcb15d4e08047bccb9e85b4e208d32; Path=/; Expires=Sat, 20 Dec 2014 03:47:24 GMT; Secure","incap_ses_220_168562=t1izSkeBjzfHSucYNZkNA8v8kFQAAAAAhwZZHK1pKyc1SAfPxiTNdA==; path=/; Domain=.trello.com","visid_incap_168562=N3lSKlYdTcKR+P9rPLik2Mv8kFQAAAAAQUIPAAAAAABANwgSyGxq0Bd8AjJgA8/o; expires=Thu, 15 Dec 2016 12:28:11 GMT; path=/; Domain=.trello.com"],"X-Server-Time":["1418788044449"],"Expires":["Thu, 01 Jan 1970 00:00:00"],"Content-Type":["application/json"],"Access-Control-Allow-Origin":["*"],"Access-Control-Allow-Methods":["GET, PUT, POST, DELETE"],"Etag":["\"-930428495\""],"Vary":["Accept-Encoding"],"Date":["Wed, 17 Dec 2014 03:47:24 GMT"],"Transfer-Encoding":["chunked"],"X-Iinfo":["5-12771859-12765964 PNNY RT(1418788043333 54) q(0 0 0 -1) r(1 1)"],"X-Cdn":["Incapsula"]},"body":{"encoding":"UTF-8","base64_string":"eyJpZCI6IjU0OGE2NzU1ODFkMWQ2NjljOWU4MTg0ZSIsIm5hbWUiOiJUZXN0\nIEJvYXJkIiwiZGVzYyI6IiIsImRlc2NEYXRhIjpudWxsLCJjbG9zZWQiOmZh\nbHNlLCJpZE9yZ2FuaXphdGlvbiI6IjU0OGUzMGU5NjgzZTE5MjNmNjc2YmEy\nMCIsImludml0ZWQiOmZhbHNlLCJwaW5uZWQiOmZhbHNlLCJzdGFycmVkIjp0\ncnVlLCJ1cmwiOiJodHRwczovL3RyZWxsby5jb20vYi9zd2V6UTlYUy90ZXN0\nLWJvYXJkIiwicHJlZnMiOnsicGVybWlzc2lvbkxldmVsIjoicHVibGljIiwi\ndm90aW5nIjoiZGlzYWJsZWQiLCJjb21tZW50cyI6Im1lbWJlcnMiLCJpbnZp\ndGF0aW9ucyI6Im1lbWJlcnMiLCJzZWxmSm9pbiI6ZmFsc2UsImNhcmRDb3Zl\ncnMiOnRydWUsImNhcmRBZ2luZyI6InJlZ3VsYXIiLCJjYWxlbmRhckZlZWRF\nbmFibGVkIjpmYWxzZSwiYmFja2dyb3VuZCI6ImdyZWVuIiwiYmFja2dyb3Vu\nZENvbG9yIjoiIzFFOUY0OSIsImJhY2tncm91bmRJbWFnZSI6bnVsbCwiYmFj\na2dyb3VuZEltYWdlU2NhbGVkIjpudWxsLCJiYWNrZ3JvdW5kVGlsZSI6ZmFs\nc2UsImJhY2tncm91bmRCcmlnaHRuZXNzIjoidW5rbm93biIsImNhbkJlUHVi\nbGljIjp0cnVlLCJjYW5CZU9yZyI6dHJ1ZSwiY2FuQmVQcml2YXRlIjp0cnVl\nLCJjYW5JbnZpdGUiOnRydWV9LCJpbnZpdGF0aW9ucyI6W10sIm1lbWJlcnNo\naXBzIjpbeyJpZCI6IjU0OGE2NzU1ODFkMWQ2NjljOWU4MTg0ZiIsImlkTWVt\nYmVyIjoiNTQ4YTY2OTZiM2I5OTE4YmViMTQ0YjA3IiwibWVtYmVyVHlwZSI6\nImFkbWluIiwidW5jb25maXJtZWQiOmZhbHNlLCJkZWFjdGl2YXRlZCI6ZmFs\nc2V9LHsiaWQiOiI1NDhhNjc2ZWU3Y2MzNzlkZWJiOGQ5YzYiLCJpZE1lbWJl\nciI6IjRmMDc5YWRjNzM2NjhiMjQ0YjFjMDk5YSIsIm1lbWJlclR5cGUiOiJu\nb3JtYWwiLCJ1bmNvbmZpcm1lZCI6ZmFsc2UsImRlYWN0aXZhdGVkIjpmYWxz\nZX1dLCJzaG9ydExpbmsiOiJzd2V6UTlYUyIsInN1YnNjcmliZWQiOmZhbHNl\nLCJsYWJlbE5hbWVzIjp7ImdyZWVuIjoiTGFiZWwgMSIsInllbGxvdyI6Ikxh\nYmVsIDIiLCJvcmFuZ2UiOiJMYWJlbCAzIiwicmVkIjoiTGFiZWwgNCIsInB1\ncnBsZSI6IkxhYmVsIDUiLCJibHVlIjoiTGFiZWwgNiIsInNreSI6IiIsImxp\nbWUiOiIiLCJwaW5rIjoiIiwiYmxhY2siOiIifSwicG93ZXJVcHMiOltdLCJk\nYXRlTGFzdEFjdGl2aXR5IjoiMjAxNC0xMi0xNlQxNDowMzowOS4wMjRaIiwi\nZGF0ZUxhc3RWaWV3IjoiMjAxNC0xMi0xN1QwMzo0NjoyNi4yMTZaIiwic2hv\ncnRVcmwiOiJodHRwczovL3RyZWxsby5jb20vYi9zd2V6UTlYUyJ9\n"},"http_version":null},"recorded_at":"Wed, 17 Dec 2014 03:47:27 GMT"}],"recorded_with":"VCR 2.9.3"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"get","uri":"https://api.trello.com/1/actions/548e3153ea7ca8f9cd3cb77b/entities?key=<TRELLO_APP_KEY>&token=<TRELLO_APP_TOKEN>","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"User-Agent":["TacoKit 0.0.1"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Cache-Control":["max-age=0, must-revalidate, no-cache, no-store"],"X-Content-Type-Options":["nosniff"],"Strict-Transport-Security":["max-age=15768000"],"X-Xss-Protection":["1; mode=block"],"X-Frame-Options":["DENY"],"X-Trello-Version":["1.268.2"],"X-Trello-Environment":["Production"],"Set-Cookie":["dsc=829be8472614423c121a9cd9255c176bf48493b2c04ee04359de7c0d7e88bdfb; Path=/; Expires=Sat, 20 Dec 2014 03:49:04 GMT; Secure","incap_ses_220_168562=AYt4XYq9WgJhrecYNZkNAzD9kFQAAAAAscZMmVrcnYCk3mASStrXaQ==; path=/; Domain=.trello.com","visid_incap_168562=46d52Y5vScK4xIFVjHleezD9kFQAAAAAQUIPAAAAAACaFN3yqSbZXZ0x8urmo3YG; expires=Thu, 15 Dec 2016 12:28:10 GMT; path=/; Domain=.trello.com"],"X-Server-Time":["1418788145000"],"Expires":["Thu, 01 Jan 1970 00:00:00"],"Content-Type":["application/json"],"Access-Control-Allow-Origin":["*"],"Access-Control-Allow-Methods":["GET, PUT, POST, DELETE"],"Content-Length":["319"],"Vary":["Accept-Encoding"],"Date":["Wed, 17 Dec 2014 03:49:05 GMT"],"X-Iinfo":["7-32069398-32054462 PNNY RT(1418788143913 50) q(0 0 0 -1) r(1 1)"],"X-Cdn":["Incapsula"]},"body":{"encoding":"UTF-8","base64_string":"W3sidHlwZSI6Im1lbWJlciIsImlkIjoiNTQ4YTY2OTZiM2I5OTE4YmViMTQ0\nYjA3IiwidXNlcm5hbWUiOiJ0YWNva2l0IiwidGV4dCI6IlRhY28gS2l0In0s\neyJ0eXBlIjoidGV4dCIsInRleHQiOiJhZGRlZCJ9LHsidHlwZSI6ImJvYXJk\nIiwiaWQiOiI1NDhhNjc1NTgxZDFkNjY5YzllODE4NGUiLCJ0ZXh0IjoiVGVz\ndCBCb2FyZCIsInNob3J0TGluayI6InN3ZXpROVhTIn0seyJ0eXBlIjoidGV4\ndCIsInRleHQiOiJ0byJ9LHsidHlwZSI6Im9yZ2FuaXphdGlvbiIsImlkIjoi\nNTQ4ZTMwZTk2ODNlMTkyM2Y2NzZiYTIwIiwidGV4dCI6IlRlYW0gVGFjb2tp\ndCJ9XQ==\n"},"http_version":null},"recorded_at":"Wed, 17 Dec 2014 03:49:07 GMT"}],"recorded_with":"VCR 2.9.3"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"get","uri":"https://api.trello.com/1/actions/548e3153ea7ca8f9cd3cb77b/memberships?key=<TRELLO_APP_KEY>&token=<TRELLO_APP_TOKEN>","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"User-Agent":["TacoKit 0.0.1"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":404,"message":"Not Found"},"headers":{"Cache-Control":["no-store, no-cache"],"X-Content-Type-Options":["nosniff"],"Strict-Transport-Security":["max-age=15768000"],"X-Xss-Protection":["1; mode=block"],"X-Frame-Options":["DENY"],"X-Trello-Version":["1.268.2"],"X-Trello-Environment":["Production"],"Set-Cookie":["dsc=12dfdfc63265f31acd91daba2d836e5cbb28688da4a29e92d1b3beb650415f8c; Path=/; Expires=Sat, 20 Dec 2014 03:47:24 GMT; Secure","incap_ses_220_168562=JS+qTaKTZiOTSucYNZkNA8v8kFQAAAAA/nhlLS1ERrpsFoK2TKx16A==; path=/; Domain=.trello.com","visid_incap_168562=wjPHkkzpSxWNTGapYm/gNsv8kFQAAAAAQUIPAAAAAADyduhl1rbfoeyxc1z83Q51; expires=Thu, 15 Dec 2016 12:27:58 GMT; path=/; Domain=.trello.com"],"Content-Type":["text/plain"],"Content-Length":["166"],"Vary":["Accept-Encoding"],"Date":["Wed, 17 Dec 2014 03:47:24 GMT"],"X-Iinfo":["8-49701494-49699342 PNNY RT(1418788043197 56) q(0 0 0 -1) r(0 0) U11"],"X-Cdn":["Incapsula"]},"body":{"encoding":"UTF-8","base64_string":"Q2Fubm90IEdFVCAvMS9hY3Rpb25zLzU0OGUzMTUzZWE3Y2E4ZjljZDNjYjc3\nYi9tZW1iZXJzaGlwcz9rZXk9PFRSRUxMT19BUFBfS0VZPiZ0b2tlbj08VFJF\nTExPX0FQUF9UT0tFTj4=\n"},"http_version":null},"recorded_at":"Wed, 17 Dec 2014 03:47:27 GMT"}],"recorded_with":"VCR 2.9.3"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"post","uri":"https://api.trello.com/1/cards/548dd95c8ca25ac9d0d9ce71/actions/comments?key=<TRELLO_APP_KEY>&token=<TRELLO_APP_TOKEN>","body":{"encoding":"UTF-8","base64_string":"dGV4dD1EZWxldGUrYWN0aW9uK3Rlc3QuK0Jvb3lhJTIx\n"},"headers":{"User-Agent":["TacoKit 0.0.1"],"Content-Type":["application/x-www-form-urlencoded"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Cache-Control":["max-age=0, must-revalidate, no-cache, no-store"],"X-Content-Type-Options":["nosniff"],"Strict-Transport-Security":["max-age=15768000"],"X-Xss-Protection":["1; mode=block"],"X-Frame-Options":["DENY"],"X-Trello-Version":["1.269.0"],"X-Trello-Environment":["Production"],"Set-Cookie":["___utmvaDOussFI=OLW\u0001xJoI; path=/; Max-Age=900","___utmvbDOussFI=lZM XSvOualp: PtV; path=/; Max-Age=900","___utmvmDOussFI=tpZMNsnDguo; path=/; Max-Age=900","dsc=a411335f0f0e5574c44d204420b440217d73e4e9012cdbe69bdc77a81c1c2811; Path=/; Expires=Sun, 21 Dec 2014 03:59:22 GMT; Secure","incap_ses_220_168562=fN60UrARH04ZsF8aNZkNAxlRklQAAAAA1hzcA37H78nj15IehMFaYA==; path=/; Domain=.trello.com","visid_incap_168562=9i16CkRARYO8poidefTyrBlRklQAAAAAQUIPAAAAAACf6q8SWztPjRPBrhXr/M3b; expires=Fri, 16 Dec 2016 12:28:11 GMT; path=/; Domain=.trello.com"],"X-Server-Time":["1418875162781"],"Expires":["Thu, 01 Jan 1970 00:00:00"],"Content-Type":["application/json"],"Access-Control-Allow-Origin":["*"],"Access-Control-Allow-Methods":["GET, PUT, POST, DELETE"],"Content-Length":["1000"],"Vary":["Accept-Encoding"],"Date":["Thu, 18 Dec 2014 03:59:22 GMT"],"X-Iinfo":["10-109214540-109204979 PNNY RT(1418875161645 66) q(0 0 0 -1) r(0 0) U6"],"X-Cdn":["Incapsula"]},"body":{"encoding":"UTF-8","base64_string":"eyJpZCI6IjU0OTI1MTFhNDcyNDUyMTVlYWFjOTI4OSIsImlkTWVtYmVyQ3Jl\nYXRvciI6IjU0OGE2Njk2YjNiOTkxOGJlYjE0NGIwNyIsImRhdGEiOnsidGV4\ndCI6IkRlbGV0ZSBhY3Rpb24gdGVzdC4gQm9veWEhIiwidGV4dERhdGEiOnsi\nZW1vamkiOnt9fSwiY2FyZCI6eyJpZCI6IjU0OGRkOTVjOGNhMjVhYzlkMGQ5\nY2U3MSIsIm5hbWUiOiJDYXJkIDEiLCJpZFNob3J0IjoxLCJzaG9ydExpbmsi\nOiJrN0dISmo3USJ9LCJib2FyZCI6eyJpZCI6IjU0OGE2NzU1ODFkMWQ2Njlj\nOWU4MTg0ZSIsIm5hbWUiOiJUZXN0IEJvYXJkIiwic2hvcnRMaW5rIjoic3dl\nelE5WFMifSwibGlzdCI6eyJpZCI6IjU0OGRkOTQ4ZmZkMzc0MjIxOTI2YjRj\nOCIsIm5hbWUiOiJUZXN0IExpc3QgMSJ9fSwidHlwZSI6ImNvbW1lbnRDYXJk\nIiwiZGF0ZSI6IjIwMTQtMTItMThUMDM6NTk6MjIuNzQ2WiIsIm1lbWJlckNy\nZWF0b3IiOnsiaWQiOiI1NDhhNjY5NmIzYjk5MThiZWIxNDRiMDciLCJhdmF0\nYXJIYXNoIjoiY2IwZGY0NTA1NWJhYzg0ZTdjNWZiNzI4ZTAwZTIwMTUiLCJm\ndWxsTmFtZSI6IlRhY28gS2l0IiwiaW5pdGlhbHMiOiJUSyIsInVzZXJuYW1l\nIjoidGFjb2tpdCJ9LCJlbnRpdGllcyI6W3sidHlwZSI6Im1lbWJlciIsImlk\nIjoiNTQ4YTY2OTZiM2I5OTE4YmViMTQ0YjA3IiwidXNlcm5hbWUiOiJ0YWNv\na2l0IiwidGV4dCI6IlRhY28gS2l0In0seyJ0eXBlIjoidGV4dCIsInRleHQi\nOiJvbiIsImhpZGVJZkNvbnRleHQiOnRydWUsImlkQ29udGV4dCI6IjU0OGRk\nOTVjOGNhMjVhYzlkMGQ5Y2U3MSJ9LHsidHlwZSI6ImNhcmQiLCJoaWRlSWZD\nb250ZXh0Ijp0cnVlLCJzaG9ydExpbmsiOiJrN0dISmo3USIsImlkIjoiNTQ4\nZGQ5NWM4Y2EyNWFjOWQwZDljZTcxIiwidGV4dCI6IkNhcmQgMSJ9LHsidHlw\nZSI6ImNvbW1lbnQiLCJ0ZXh0IjoiRGVsZXRlIGFjdGlvbiB0ZXN0LiBCb295\nYSEiLCJ0ZXh0SHRtbCI6IjxwPkRlbGV0ZSBhY3Rpb24gdGVzdC4gQm9veWEh\nPC9wPlxuIn1dfQ==\n"},"http_version":null},"recorded_at":"Thu, 18 Dec 2014 03:59:26 GMT"},{"request":{"method":"delete","uri":"https://api.trello.com/1/actions/5492511a47245215eaac9289?key=<TRELLO_APP_KEY>&token=<TRELLO_APP_TOKEN>","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"User-Agent":["TacoKit 0.0.1"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Cache-Control":["max-age=0, must-revalidate, no-cache, no-store"],"X-Content-Type-Options":["nosniff"],"Strict-Transport-Security":["max-age=15768000"],"X-Xss-Protection":["1; mode=block"],"X-Frame-Options":["DENY"],"X-Trello-Version":["1.269.0"],"X-Trello-Environment":["Production"],"Set-Cookie":["___utmvaDOussFI=otP\u0001iaoE; path=/; Max-Age=900","___utmvbDOussFI=EZy XAoOTalB: MtN; path=/; Max-Age=900","___utmvmDOussFI=NhEIqOfhQBN; path=/; Max-Age=900","dsc=d7f7677023c06dd3e9e8bad15a8cbbb06da2e54cc407c8ef3fe4be6d565ae1fc; Path=/; Expires=Sun, 21 Dec 2014 03:59:22 GMT; Secure","incap_ses_220_168562=xcS/eRsGoFpdsF8aNZkNAxpRklQAAAAAUTEFBWzdOoegSLiLwl2eCw==; path=/; Domain=.trello.com","visid_incap_168562=y275kCsjQFubetSh1YvHgxpRklQAAAAAQUIPAAAAAAC6/UGnEDgNcGb661wraS7E; expires=Fri, 16 Dec 2016 12:28:11 GMT; path=/; Domain=.trello.com"],"X-Server-Time":["1418875162993"],"Expires":["Thu, 01 Jan 1970 00:00:00"],"Content-Type":["application/json"],"Access-Control-Allow-Origin":["*"],"Access-Control-Allow-Methods":["GET, PUT, POST, DELETE"],"Content-Length":["2"],"Vary":["Accept-Encoding"],"Date":["Thu, 18 Dec 2014 03:59:22 GMT"],"X-Iinfo":["10-109214573-109204979 PNNY RT(1418875161853 60) q(0 0 0 -1) r(1 1) U6"],"X-Cdn":["Incapsula"]},"body":{"encoding":"UTF-8","base64_string":"e30=\n"},"http_version":null},"recorded_at":"Thu, 18 Dec 2014 03:59:26 GMT"},{"request":{"method":"get","uri":"https://api.trello.com/1/actions/5492511a47245215eaac9289?key=<TRELLO_APP_KEY>&token=<TRELLO_APP_TOKEN>","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"User-Agent":["TacoKit 0.0.1"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":404,"message":"Not Found"},"headers":{"Cache-Control":["max-age=0, must-revalidate, no-cache, no-store"],"X-Content-Type-Options":["nosniff"],"Strict-Transport-Security":["max-age=15768000"],"X-Xss-Protection":["1; mode=block"],"X-Frame-Options":["DENY"],"X-Trello-Version":["1.269.0"],"X-Trello-Environment":["Production"],"Set-Cookie":["___utmvaDOussFI=Qbm\u0001dlAA; path=/; Max-Age=900","___utmvbDOussFI=DZp XnYOSalv: dtA; path=/; Max-Age=900","___utmvmDOussFI=SIfvtUEOSrT; path=/; Max-Age=900","dsc=3163ec45a867fa819ab952b6a47334c03dedb3866f20a226950853744f885490; Path=/; Expires=Sun, 21 Dec 2014 03:59:23 GMT; Secure","incap_ses_220_168562=oMTocmE/zl+BsF8aNZkNAxpRklQAAAAAUOJ4hRo49PwnTc0BIVFpBQ==; path=/; Domain=.trello.com","visid_incap_168562=WZbj8T4hQsCx9zxW+biePxpRklQAAAAAQUIPAAAAAAAQNCEDdfIvXBcxtIe3JgGP; expires=Fri, 16 Dec 2016 12:27:59 GMT; path=/; Domain=.trello.com"],"Content-Type":["text/plain"],"Expires":["Thu, 01 Jan 1970 00:00:00"],"Access-Control-Allow-Origin":["*"],"Access-Control-Allow-Methods":["GET, PUT, POST, DELETE"],"Content-Length":["38"],"Vary":["Accept-Encoding"],"Date":["Thu, 18 Dec 2014 03:59:23 GMT"],"X-Iinfo":["8-59209254-59195803 PNNY RT(1418875162064 51) q(0 0 0 -1) r(0 0) U11"],"X-Cdn":["Incapsula"]},"body":{"encoding":"UTF-8","base64_string":"VGhlIHJlcXVlc3RlZCByZXNvdXJjZSB3YXMgbm90IGZvdW5kLgo=\n"},"http_version":null},"recorded_at":"Thu, 18 Dec 2014 03:59:26 GMT"}],"recorded_with":"VCR 2.9.3"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"put","uri":"https://api.trello.com/1/actions/549102431b607566bafc93a9?key=<TRELLO_APP_KEY>&token=<TRELLO_APP_TOKEN>","body":{"encoding":"UTF-8","base64_string":"dGV4dD0lNDB0YWNva2l0K1RoYW5rcytmb3IrdGhlK2ludml0ZSUyQytidWQ=\n"},"headers":{"User-Agent":["TacoKit 0.0.1"],"Content-Type":["application/x-www-form-urlencoded"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Cache-Control":["max-age=0, must-revalidate, no-cache, no-store"],"X-Content-Type-Options":["nosniff"],"Strict-Transport-Security":["max-age=15768000"],"X-Xss-Protection":["1; mode=block"],"X-Frame-Options":["DENY"],"X-Trello-Version":["1.269.0"],"X-Trello-Environment":["Production"],"Set-Cookie":["dsc=54698d9815b5f4ebeac69c61c70895b20fcc8e4c656466962669dfa3d778fd6a; Path=/; Expires=Sat, 20 Dec 2014 23:35:12 GMT; Secure","incap_ses_156_168562=m4Kndr35gAx+AyZocjoqAi8TklQAAAAAWqVQM0+MzBJxgY93pmqVZg==; path=/; Domain=.trello.com","visid_incap_168562=+eRzWbRrSzeKfytIgmkkWS8TklQAAAAAQUIPAAAAAAA2sLTsDvRbfV4uYulVTl72; expires=Fri, 16 Dec 2016 12:25:16 GMT; path=/; Domain=.trello.com"],"X-Server-Time":["1418859312603"],"Expires":["Thu, 01 Jan 1970 00:00:00"],"Content-Type":["application/json"],"Access-Control-Allow-Origin":["*"],"Access-Control-Allow-Methods":["GET, PUT, POST, DELETE"],"Content-Length":["654"],"Vary":["Accept-Encoding"],"Date":["Wed, 17 Dec 2014 23:35:12 GMT"],"X-Iinfo":["7-46857832-46723435 PNNY RT(1418859311683 41) q(0 0 0 -1) r(2 2) U6"],"X-Cdn":["Incapsula"]},"body":{"encoding":"UTF-8","base64_string":"eyJpZCI6IjU0OTEwMjQzMWI2MDc1NjZiYWZjOTNhOSIsImlkTWVtYmVyQ3Jl\nYXRvciI6IjRmMDc5YWRjNzM2NjhiMjQ0YjFjMDk5YSIsImRhdGEiOnsiZGF0\nZUxhc3RFZGl0ZWQiOiIyMDE0LTEyLTE3VDIzOjM1OjEyLjU1NFoiLCJ0ZXh0\nRGF0YSI6eyJlbW9qaSI6e319LCJ0ZXh0IjoiQHRhY29raXQgVGhhbmtzIGZv\nciB0aGUgaW52aXRlLCBidWQiLCJjYXJkIjp7ImlkIjoiNTQ4ZGQ5NWM4Y2Ey\nNWFjOWQwZDljZTcxIiwibmFtZSI6IkNhcmQgMSIsImlkU2hvcnQiOjEsInNo\nb3J0TGluayI6Ims3R0hKajdRIn0sImJvYXJkIjp7ImlkIjoiNTQ4YTY3NTU4\nMWQxZDY2OWM5ZTgxODRlIiwibmFtZSI6IlRlc3QgQm9hcmQiLCJzaG9ydExp\nbmsiOiJzd2V6UTlYUyJ9LCJsaXN0Ijp7ImlkIjoiNTQ4ZGQ5NDhmZmQzNzQy\nMjE5MjZiNGM4IiwibmFtZSI6Ikxpc3QgMSJ9fSwidHlwZSI6ImNvbW1lbnRD\nYXJkIiwiZGF0ZSI6IjIwMTQtMTItMTdUMDQ6MTA6NDMuODI4WiIsIm1lbWJl\nckNyZWF0b3IiOnsiaWQiOiI0ZjA3OWFkYzczNjY4YjI0NGIxYzA5OWEiLCJh\ndmF0YXJIYXNoIjoiNzA2ZTk1ZTQyN2Y5MTY3MGJmMjFlZWU2YWZjY2VlOTAi\nLCJmdWxsTmFtZSI6IlJvc3MgS2FmZmVuYmVyZ2VyIiwiaW5pdGlhbHMiOiJS\nSyIsInVzZXJuYW1lIjoicm9zc3RhIn19\n"},"http_version":null},"recorded_at":"Wed, 17 Dec 2014 23:35:23 GMT"}],"recorded_with":"VCR 2.9.3"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"post","uri":"https://api.trello.com/1/cards/548dd95c8ca25ac9d0d9ce71/actions/comments?key=<TRELLO_APP_KEY>&token=<TRELLO_APP_TOKEN>","body":{"encoding":"UTF-8","base64_string":"dGV4dD1VcGRhdGUrYWN0aW9uK3Rlc3QuK0Jvb3lhJTIx\n"},"headers":{"User-Agent":["TacoKit 0.0.1"],"Content-Type":["application/x-www-form-urlencoded"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Cache-Control":["max-age=0, must-revalidate, no-cache, no-store"],"X-Content-Type-Options":["nosniff"],"Strict-Transport-Security":["max-age=15768000"],"X-Xss-Protection":["1; mode=block"],"X-Frame-Options":["DENY"],"X-Trello-Version":["1.269.0"],"X-Trello-Environment":["Production"],"Set-Cookie":["___utmvaDOussFI=fgJ\u0001kucG; path=/; Max-Age=900","___utmvbDOussFI=sZl XtmOEalK: KtU; path=/; Max-Age=900","___utmvmDOussFI=PvapyjxXjFp; path=/; Max-Age=900","dsc=c66ac2851c9d60fe36692d5b1dcacc0687988e2b91425bf0c88ec97d4ea8d139; Path=/; Expires=Sun, 21 Dec 2014 04:00:04 GMT; Secure","incap_ses_220_168562=68QFHbrc3zCM2F8aNZkNA0NRklQAAAAAFVAJ3j7/R41Y5nJfLjIbyA==; path=/; Domain=.trello.com","visid_incap_168562=MCFEMEojREaeSvC9y39S4kNRklQAAAAAQUIPAAAAAADYuqrLJ0FVlo6vIYqb5Vf8; expires=Fri, 16 Dec 2016 12:28:12 GMT; path=/; Domain=.trello.com"],"X-Server-Time":["1418875204532"],"Expires":["Thu, 01 Jan 1970 00:00:00"],"Content-Type":["application/json"],"Access-Control-Allow-Origin":["*"],"Access-Control-Allow-Methods":["GET, PUT, POST, DELETE"],"Content-Length":["1000"],"Vary":["Accept-Encoding"],"Date":["Thu, 18 Dec 2014 04:00:04 GMT"],"X-Iinfo":["5-15127153-15126891 PNNY RT(1418875203361 67) q(0 0 0 -1) r(1 1) U6"],"X-Cdn":["Incapsula"]},"body":{"encoding":"UTF-8","base64_string":"eyJpZCI6IjU0OTI1MTQ0N2NiNWVkNDMzOTc4M2M1ZSIsImlkTWVtYmVyQ3Jl\nYXRvciI6IjU0OGE2Njk2YjNiOTkxOGJlYjE0NGIwNyIsImRhdGEiOnsidGV4\ndCI6IlVwZGF0ZSBhY3Rpb24gdGVzdC4gQm9veWEhIiwidGV4dERhdGEiOnsi\nZW1vamkiOnt9fSwiY2FyZCI6eyJpZCI6IjU0OGRkOTVjOGNhMjVhYzlkMGQ5\nY2U3MSIsIm5hbWUiOiJDYXJkIDEiLCJpZFNob3J0IjoxLCJzaG9ydExpbmsi\nOiJrN0dISmo3USJ9LCJib2FyZCI6eyJpZCI6IjU0OGE2NzU1ODFkMWQ2Njlj\nOWU4MTg0ZSIsIm5hbWUiOiJUZXN0IEJvYXJkIiwic2hvcnRMaW5rIjoic3dl\nelE5WFMifSwibGlzdCI6eyJpZCI6IjU0OGRkOTQ4ZmZkMzc0MjIxOTI2YjRj\nOCIsIm5hbWUiOiJUZXN0IExpc3QgMSJ9fSwidHlwZSI6ImNvbW1lbnRDYXJk\nIiwiZGF0ZSI6IjIwMTQtMTItMThUMDQ6MDA6MDQuNDg1WiIsIm1lbWJlckNy\nZWF0b3IiOnsiaWQiOiI1NDhhNjY5NmIzYjk5MThiZWIxNDRiMDciLCJhdmF0\nYXJIYXNoIjoiY2IwZGY0NTA1NWJhYzg0ZTdjNWZiNzI4ZTAwZTIwMTUiLCJm\ndWxsTmFtZSI6IlRhY28gS2l0IiwiaW5pdGlhbHMiOiJUSyIsInVzZXJuYW1l\nIjoidGFjb2tpdCJ9LCJlbnRpdGllcyI6W3sidHlwZSI6Im1lbWJlciIsImlk\nIjoiNTQ4YTY2OTZiM2I5OTE4YmViMTQ0YjA3IiwidXNlcm5hbWUiOiJ0YWNv\na2l0IiwidGV4dCI6IlRhY28gS2l0In0seyJ0eXBlIjoidGV4dCIsInRleHQi\nOiJvbiIsImhpZGVJZkNvbnRleHQiOnRydWUsImlkQ29udGV4dCI6IjU0OGRk\nOTVjOGNhMjVhYzlkMGQ5Y2U3MSJ9LHsidHlwZSI6ImNhcmQiLCJoaWRlSWZD\nb250ZXh0Ijp0cnVlLCJzaG9ydExpbmsiOiJrN0dISmo3USIsImlkIjoiNTQ4\nZGQ5NWM4Y2EyNWFjOWQwZDljZTcxIiwidGV4dCI6IkNhcmQgMSJ9LHsidHlw\nZSI6ImNvbW1lbnQiLCJ0ZXh0IjoiVXBkYXRlIGFjdGlvbiB0ZXN0LiBCb295\nYSEiLCJ0ZXh0SHRtbCI6IjxwPlVwZGF0ZSBhY3Rpb24gdGVzdC4gQm9veWEh\nPC9wPlxuIn1dfQ==\n"},"http_version":null},"recorded_at":"Thu, 18 Dec 2014 04:00:08 GMT"},{"request":{"method":"put","uri":"https://api.trello.com/1/actions/549251447cb5ed4339783c5e?key=<TRELLO_APP_KEY>&token=<TRELLO_APP_TOKEN>","body":{"encoding":"UTF-8","base64_string":"dGV4dD0lNDB0YWNva2l0K1RoYW5rcytmb3IrdGhlK2ludml0ZSUyQytidWQ=\n"},"headers":{"User-Agent":["TacoKit 0.0.1"],"Content-Type":["application/x-www-form-urlencoded"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Cache-Control":["max-age=0, must-revalidate, no-cache, no-store"],"X-Content-Type-Options":["nosniff"],"Strict-Transport-Security":["max-age=15768000"],"X-Xss-Protection":["1; mode=block"],"X-Frame-Options":["DENY"],"X-Trello-Version":["1.269.0"],"X-Trello-Environment":["Production"],"Set-Cookie":["___utmvaDOussFI=YaZ\u0001sQLT; path=/; Max-Age=900","___utmvbDOussFI=QZa XvuOwals: otE; path=/; Max-Age=900","___utmvmDOussFI=mtAcBDUKues; path=/; Max-Age=900","dsc=f967d7d0d881008392ab899b690c27fac41cc046eec33f819dfb1e3503793489; Path=/; Expires=Sun, 21 Dec 2014 04:00:04 GMT; Secure","incap_ses_220_168562=t4UnCkx9bWzl2F8aNZkNA0NRklQAAAAAO/qkvtt3uavf/Dul3on7dA==; path=/; Domain=.trello.com","visid_incap_168562=4zoiDuyBQYiKOI4IpGXqEUNRklQAAAAAQUIPAAAAAABixpcaDcwbshRhouLSJWyq; expires=Fri, 16 Dec 2016 12:28:12 GMT; path=/; Domain=.trello.com"],"X-Server-Time":["1418875204801"],"Expires":["Thu, 01 Jan 1970 00:00:00"],"Content-Type":["application/json"],"Access-Control-Allow-Origin":["*"],"Access-Control-Allow-Methods":["GET, PUT, POST, DELETE"],"Content-Length":["651"],"Vary":["Accept-Encoding"],"Date":["Thu, 18 Dec 2014 04:00:04 GMT"],"X-Iinfo":["5-15127158-15126165 PNNY RT(1418875203612 59) q(0 0 0 -1) r(2 2) U6"],"X-Cdn":["Incapsula"]},"body":{"encoding":"UTF-8","base64_string":"eyJpZCI6IjU0OTI1MTQ0N2NiNWVkNDMzOTc4M2M1ZSIsImlkTWVtYmVyQ3Jl\nYXRvciI6IjU0OGE2Njk2YjNiOTkxOGJlYjE0NGIwNyIsImRhdGEiOnsibGlz\ndCI6eyJuYW1lIjoiVGVzdCBMaXN0IDEiLCJpZCI6IjU0OGRkOTQ4ZmZkMzc0\nMjIxOTI2YjRjOCJ9LCJib2FyZCI6eyJzaG9ydExpbmsiOiJzd2V6UTlYUyIs\nIm5hbWUiOiJUZXN0IEJvYXJkIiwiaWQiOiI1NDhhNjc1NTgxZDFkNjY5Yzll\nODE4NGUifSwiY2FyZCI6eyJzaG9ydExpbmsiOiJrN0dISmo3USIsImlkU2hv\ncnQiOjEsIm5hbWUiOiJDYXJkIDEiLCJpZCI6IjU0OGRkOTVjOGNhMjVhYzlk\nMGQ5Y2U3MSJ9LCJ0ZXh0IjoiQHRhY29raXQgVGhhbmtzIGZvciB0aGUgaW52\naXRlLCBidWQiLCJ0ZXh0RGF0YSI6eyJlbW9qaSI6e319LCJkYXRlTGFzdEVk\naXRlZCI6IjIwMTQtMTItMThUMDQ6MDA6MDQuNzU2WiJ9LCJ0eXBlIjoiY29t\nbWVudENhcmQiLCJkYXRlIjoiMjAxNC0xMi0xOFQwNDowMDowNC40ODVaIiwi\nbWVtYmVyQ3JlYXRvciI6eyJpZCI6IjU0OGE2Njk2YjNiOTkxOGJlYjE0NGIw\nNyIsImF2YXRhckhhc2giOiJjYjBkZjQ1MDU1YmFjODRlN2M1ZmI3MjhlMDBl\nMjAxNSIsImZ1bGxOYW1lIjoiVGFjbyBLaXQiLCJpbml0aWFscyI6IlRLIiwi\ndXNlcm5hbWUiOiJ0YWNva2l0In19\n"},"http_version":null},"recorded_at":"Thu, 18 Dec 2014 04:00:08 GMT"},{"request":{"method":"delete","uri":"https://api.trello.com/1/actions/549251447cb5ed4339783c5e?key=<TRELLO_APP_KEY>&token=<TRELLO_APP_TOKEN>","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"User-Agent":["TacoKit 0.0.1"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Cache-Control":["max-age=0, must-revalidate, no-cache, no-store"],"X-Content-Type-Options":["nosniff"],"Strict-Transport-Security":["max-age=15768000"],"X-Xss-Protection":["1; mode=block"],"X-Frame-Options":["DENY"],"X-Trello-Version":["1.269.0"],"X-Trello-Environment":["Production"],"Set-Cookie":["___utmvaDOussFI=Cau\u0001jRGQ; path=/; Max-Age=900","___utmvbDOussFI=zZU XRiODali: lte; path=/; Max-Age=900","___utmvmDOussFI=fkPwhGrCARY; path=/; Max-Age=900","dsc=34d42e52b3ddbe5765f21bba4e698b879526134421181784ad94f4bf8af643e0; Path=/; Expires=Sun, 21 Dec 2014 04:00:04 GMT; Secure","incap_ses_220_168562=r0LyDTyyiQMg2V8aNZkNA0RRklQAAAAAvsZyD/cN1CSwrfbx74YWdw==; path=/; Domain=.trello.com","visid_incap_168562=nlys9kKJRbCfISxUqsIPBERRklQAAAAAQUIPAAAAAACuH/Pe0hYDKZcb8aw/8D+5; expires=Fri, 16 Dec 2016 12:28:11 GMT; path=/; Domain=.trello.com"],"X-Server-Time":["1418875205050"],"Expires":["Thu, 01 Jan 1970 00:00:00"],"Content-Type":["application/json"],"Access-Control-Allow-Origin":["*"],"Access-Control-Allow-Methods":["GET, PUT, POST, DELETE"],"Content-Length":["2"],"Vary":["Accept-Encoding"],"Date":["Thu, 18 Dec 2014 04:00:05 GMT"],"X-Iinfo":["10-109221498-109220455 PNNY RT(1418875203877 55) q(0 0 0 -1) r(1 1) U6"],"X-Cdn":["Incapsula"]},"body":{"encoding":"UTF-8","base64_string":"e30=\n"},"http_version":null},"recorded_at":"Thu, 18 Dec 2014 04:00:08 GMT"}],"recorded_with":"VCR 2.9.3"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"post","uri":"https://api.trello.com/1/cards/548dd95c8ca25ac9d0d9ce71/actions/comments?key=<TRELLO_APP_KEY>&token=<TRELLO_APP_TOKEN>","body":{"encoding":"UTF-8","base64_string":"eyJ0ZXh0IjoiVXBkYXRlIGFjdGlvbiB0ZXN0LiBCb295YSEifQ==\n"},"headers":{"User-Agent":["TacoKit 0.0.1"],"Content-Type":["application/json"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Cache-Control":["max-age=0, must-revalidate, no-cache, no-store"],"X-Content-Type-Options":["nosniff"],"Strict-Transport-Security":["max-age=15768000"],"X-Xss-Protection":["1; mode=block"],"X-Frame-Options":["DENY"],"X-Trello-Version":["1.272.0"],"X-Trello-Environment":["Production"],"Set-Cookie":["___utmvaDOussFI=jPo\u0001TOfC; path=/; Max-Age=900","___utmvbDOussFI=TZk XXZOqalj: qtU; path=/; Max-Age=900","___utmvmDOussFI=JBCRZqITvkU; path=/; Max-Age=900","dsc=b120a923f36e99bcb7b4d52cdfb2e08901c2decb939e286bda1863e5a684a8b1; Path=/; Expires=Thu, 01 Jan 2015 14:36:42 GMT; Secure","incap_ses_220_168562=ffuQGkupehE4U4NqN5kNA/lmoVQAAAAA/ci0UTDWNh4sFxUIyOEwMA==; path=/; Domain=.trello.com","visid_incap_168562=CbDfq/sYQjiMLFxMxvzeXPlmoVQAAAAAQUIPAAAAAADC7hNmq/CJVhHb9/e3I3Mj; expires=Tue, 27 Dec 2016 15:42:52 GMT; path=/; Domain=.trello.com"],"X-Server-Time":["1419863802811"],"Expires":["Thu, 01 Jan 1970 00:00:00"],"Content-Type":["application/json"],"Access-Control-Allow-Origin":["*"],"Access-Control-Allow-Methods":["GET, PUT, POST, DELETE"],"Content-Length":["1000"],"Vary":["Accept-Encoding"],"Date":["Mon, 29 Dec 2014 14:36:42 GMT"],"X-Iinfo":["8-39760871-39756685 PNNY RT(1419863801693 61) q(0 0 0 -1) r(1 1) U6"],"X-Cdn":["Incapsula"]},"body":{"encoding":"UTF-8","base64_string":"eyJpZCI6IjU0YTE2NmZhMTA3NTk5NjRkYzUxY2RkNyIsImlkTWVtYmVyQ3Jl\nYXRvciI6IjU0OGE2Njk2YjNiOTkxOGJlYjE0NGIwNyIsImRhdGEiOnsidGV4\ndCI6IlVwZGF0ZSBhY3Rpb24gdGVzdC4gQm9veWEhIiwidGV4dERhdGEiOnsi\nZW1vamkiOnt9fSwiY2FyZCI6eyJpZCI6IjU0OGRkOTVjOGNhMjVhYzlkMGQ5\nY2U3MSIsIm5hbWUiOiJDYXJkIDEiLCJpZFNob3J0IjoxLCJzaG9ydExpbmsi\nOiJrN0dISmo3USJ9LCJib2FyZCI6eyJpZCI6IjU0OGE2NzU1ODFkMWQ2Njlj\nOWU4MTg0ZSIsIm5hbWUiOiJUZXN0IEJvYXJkIiwic2hvcnRMaW5rIjoic3dl\nelE5WFMifSwibGlzdCI6eyJpZCI6IjU0OGRkOTQ4ZmZkMzc0MjIxOTI2YjRj\nOCIsIm5hbWUiOiJUZXN0IExpc3QgMSJ9fSwidHlwZSI6ImNvbW1lbnRDYXJk\nIiwiZGF0ZSI6IjIwMTQtMTItMjlUMTQ6MzY6NDIuNzg2WiIsIm1lbWJlckNy\nZWF0b3IiOnsiaWQiOiI1NDhhNjY5NmIzYjk5MThiZWIxNDRiMDciLCJhdmF0\nYXJIYXNoIjoiY2IwZGY0NTA1NWJhYzg0ZTdjNWZiNzI4ZTAwZTIwMTUiLCJm\ndWxsTmFtZSI6IlRhY28gS2l0IiwiaW5pdGlhbHMiOiJUSyIsInVzZXJuYW1l\nIjoidGFjb2tpdCJ9LCJlbnRpdGllcyI6W3sidHlwZSI6Im1lbWJlciIsImlk\nIjoiNTQ4YTY2OTZiM2I5OTE4YmViMTQ0YjA3IiwidXNlcm5hbWUiOiJ0YWNv\na2l0IiwidGV4dCI6IlRhY28gS2l0In0seyJ0eXBlIjoidGV4dCIsInRleHQi\nOiJvbiIsImhpZGVJZkNvbnRleHQiOnRydWUsImlkQ29udGV4dCI6IjU0OGRk\nOTVjOGNhMjVhYzlkMGQ5Y2U3MSJ9LHsidHlwZSI6ImNhcmQiLCJoaWRlSWZD\nb250ZXh0Ijp0cnVlLCJzaG9ydExpbmsiOiJrN0dISmo3USIsImlkIjoiNTQ4\nZGQ5NWM4Y2EyNWFjOWQwZDljZTcxIiwidGV4dCI6IkNhcmQgMSJ9LHsidHlw\nZSI6ImNvbW1lbnQiLCJ0ZXh0IjoiVXBkYXRlIGFjdGlvbiB0ZXN0LiBCb295\nYSEiLCJ0ZXh0SHRtbCI6IjxwPlVwZGF0ZSBhY3Rpb24gdGVzdC4gQm9veWEh\nPC9wPlxuIn1dfQ==\n"},"http_version":null},"recorded_at":"Mon, 29 Dec 2014 14:36:42 GMT"},{"request":{"method":"put","uri":"https://api.trello.com/1/actions/54a166fa10759964dc51cdd7/text?key=<TRELLO_APP_KEY>&token=<TRELLO_APP_TOKEN>","body":{"encoding":"UTF-8","base64_string":"eyJ2YWx1ZSI6IkB0YWNva2l0IFRoYW5rcyBmb3IgdGhlIGludml0ZSwgYnVk\nIn0=\n"},"headers":{"User-Agent":["TacoKit 0.0.1"],"Content-Type":["application/json"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Cache-Control":["max-age=0, must-revalidate, no-cache, no-store"],"X-Content-Type-Options":["nosniff"],"Strict-Transport-Security":["max-age=15768000"],"X-Xss-Protection":["1; mode=block"],"X-Frame-Options":["DENY"],"X-Trello-Version":["1.272.0"],"X-Trello-Environment":["Production"],"Set-Cookie":["___utmvaDOussFI=tqd\u0001XGAT; path=/; Max-Age=900","___utmvbDOussFI=XZy XXjORalU: etU; path=/; Max-Age=900","___utmvmDOussFI=WJPzFtJGgYi; path=/; Max-Age=900","dsc=cab0ef75b5d107231c8e6c8d5b00c16a356e1161e222c7fa355b158a13239edd; Path=/; Expires=Thu, 01 Jan 2015 14:36:42 GMT; Secure","incap_ses_220_168562=WZcnK2b8IgiMU4NqN5kNA/pmoVQAAAAANDzo/Vuwec8TyPtGB7tV5g==; path=/; Domain=.trello.com","visid_incap_168562=W1bWVA03TI6L8PXJjmofOvpmoVQAAAAAQUIPAAAAAAAl2u4dTolN7o8PDJceanIq; expires=Tue, 27 Dec 2016 15:42:52 GMT; path=/; Domain=.trello.com"],"X-Server-Time":["1419863803095"],"Expires":["Thu, 01 Jan 1970 00:00:00"],"Content-Type":["application/json"],"Access-Control-Allow-Origin":["*"],"Access-Control-Allow-Methods":["GET, PUT, POST, DELETE"],"Content-Length":["651"],"Vary":["Accept-Encoding"],"Date":["Mon, 29 Dec 2014 14:36:43 GMT"],"X-Iinfo":["6-18243012-18235469 PNNY RT(1419863801897 57) q(0 0 0 -1) r(2 2) U6"],"X-Cdn":["Incapsula"]},"body":{"encoding":"UTF-8","base64_string":"eyJpZCI6IjU0YTE2NmZhMTA3NTk5NjRkYzUxY2RkNyIsImlkTWVtYmVyQ3Jl\nYXRvciI6IjU0OGE2Njk2YjNiOTkxOGJlYjE0NGIwNyIsImRhdGEiOnsibGlz\ndCI6eyJuYW1lIjoiVGVzdCBMaXN0IDEiLCJpZCI6IjU0OGRkOTQ4ZmZkMzc0\nMjIxOTI2YjRjOCJ9LCJib2FyZCI6eyJzaG9ydExpbmsiOiJzd2V6UTlYUyIs\nIm5hbWUiOiJUZXN0IEJvYXJkIiwiaWQiOiI1NDhhNjc1NTgxZDFkNjY5Yzll\nODE4NGUifSwiY2FyZCI6eyJzaG9ydExpbmsiOiJrN0dISmo3USIsImlkU2hv\ncnQiOjEsIm5hbWUiOiJDYXJkIDEiLCJpZCI6IjU0OGRkOTVjOGNhMjVhYzlk\nMGQ5Y2U3MSJ9LCJ0ZXh0IjoiQHRhY29raXQgVGhhbmtzIGZvciB0aGUgaW52\naXRlLCBidWQiLCJ0ZXh0RGF0YSI6eyJlbW9qaSI6e319LCJkYXRlTGFzdEVk\naXRlZCI6IjIwMTQtMTItMjlUMTQ6MzY6NDMuMDQzWiJ9LCJ0eXBlIjoiY29t\nbWVudENhcmQiLCJkYXRlIjoiMjAxNC0xMi0yOVQxNDozNjo0Mi43ODZaIiwi\nbWVtYmVyQ3JlYXRvciI6eyJpZCI6IjU0OGE2Njk2YjNiOTkxOGJlYjE0NGIw\nNyIsImF2YXRhckhhc2giOiJjYjBkZjQ1MDU1YmFjODRlN2M1ZmI3MjhlMDBl\nMjAxNSIsImZ1bGxOYW1lIjoiVGFjbyBLaXQiLCJpbml0aWFscyI6IlRLIiwi\ndXNlcm5hbWUiOiJ0YWNva2l0In19\n"},"http_version":null},"recorded_at":"Mon, 29 Dec 2014 14:36:43 GMT"},{"request":{"method":"delete","uri":"https://api.trello.com/1/actions/54a166fa10759964dc51cdd7?key=<TRELLO_APP_KEY>&token=<TRELLO_APP_TOKEN>","body":{"encoding":"UTF-8","base64_string":"e30=\n"},"headers":{"User-Agent":["TacoKit 0.0.1"],"Content-Type":["application/json"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Cache-Control":["max-age=0, must-revalidate, no-cache, no-store"],"X-Content-Type-Options":["nosniff"],"Strict-Transport-Security":["max-age=15768000"],"X-Xss-Protection":["1; mode=block"],"X-Frame-Options":["DENY"],"X-Trello-Version":["1.272.0"],"X-Trello-Environment":["Production"],"Set-Cookie":["___utmvaDOussFI=nHU\u0001wzaX; path=/; Max-Age=900","___utmvbDOussFI=BZu XLVOmalh: itA; path=/; Max-Age=900","___utmvmDOussFI=LNCCkhwUGSx; path=/; Max-Age=900","dsc=617569cabbfd6d3e621d2f95c74e99ce851e4b6ffc5f216f4fd4162b4df7314a; Path=/; Expires=Thu, 01 Jan 2015 14:36:43 GMT; Secure","incap_ses_220_168562=T/80Jl09vHTFU4NqN5kNA/pmoVQAAAAA9S66K8HHl1Afaozw92d5RA==; path=/; Domain=.trello.com","visid_incap_168562=Q47SbNT6Sg+KlJY1wTaYm/pmoVQAAAAAQUIPAAAAAADqtQ5JwIviFZj4XNhjVrjv; expires=Tue, 27 Dec 2016 15:42:52 GMT; path=/; Domain=.trello.com"],"X-Server-Time":["1419863803266"],"Expires":["Thu, 01 Jan 1970 00:00:00"],"Content-Type":["application/json"],"Access-Control-Allow-Origin":["*"],"Access-Control-Allow-Methods":["GET, PUT, POST, DELETE"],"Content-Length":["2"],"Vary":["Accept-Encoding"],"Date":["Mon, 29 Dec 2014 14:36:43 GMT"],"X-Iinfo":["6-18243042-18218302 PNNY RT(1419863802173 44) q(0 0 0 -1) r(0 0) U6"],"X-Cdn":["Incapsula"]},"body":{"encoding":"UTF-8","base64_string":"e30=\n"},"http_version":null},"recorded_at":"Mon, 29 Dec 2014 14:36:43 GMT"}],"recorded_with":"VCR 2.9.3"}