turba_kit 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (152) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +15 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +1 -0
  6. data/Rakefile +22 -0
  7. data/lib/turba_kit/arguments.rb +14 -0
  8. data/lib/turba_kit/authentication.rb +10 -0
  9. data/lib/turba_kit/client/categories.rb +41 -0
  10. data/lib/turba_kit/client/checkins.rb +14 -0
  11. data/lib/turba_kit/client/comments.rb +9 -0
  12. data/lib/turba_kit/client/contents.rb +26 -0
  13. data/lib/turba_kit/client/countries.rb +14 -0
  14. data/lib/turba_kit/client/crowd_table.rb +25 -0
  15. data/lib/turba_kit/client/links.rb +26 -0
  16. data/lib/turba_kit/client/migrations.rb +15 -0
  17. data/lib/turba_kit/client/notifications.rb +26 -0
  18. data/lib/turba_kit/client/organismes.rb +41 -0
  19. data/lib/turba_kit/client/phonenumbers.rb +26 -0
  20. data/lib/turba_kit/client/places.rb +26 -0
  21. data/lib/turba_kit/client/search.rb +9 -0
  22. data/lib/turba_kit/client/services.rb +41 -0
  23. data/lib/turba_kit/client/tips.rb +26 -0
  24. data/lib/turba_kit/client.rb +168 -0
  25. data/lib/turba_kit/configurable.rb +74 -0
  26. data/lib/turba_kit/default.rb +102 -0
  27. data/lib/turba_kit/error.rb +209 -0
  28. data/lib/turba_kit/response/raise_error.rb +20 -0
  29. data/lib/turba_kit/version.rb +3 -0
  30. data/lib/turba_kit.rb +27 -0
  31. data/spec/cassettes/TurbaKit_Client_Categories/_categories/handles_the_country_code_option.json +1 -0
  32. data/spec/cassettes/TurbaKit_Client_Categories/_category/returns_a_category.json +1 -0
  33. data/spec/cassettes/TurbaKit_Client_Categories/_create_category/creates_a_category.json +1 -0
  34. data/spec/cassettes/TurbaKit_Client_Categories/_delete_category/deletes_a_category_and_returns_true.json +1 -0
  35. data/spec/cassettes/TurbaKit_Client_Categories/_delete_category/returns_false_if_category_doesn_t_exist.json +1 -0
  36. data/spec/cassettes/TurbaKit_Client_Categories/_update_category/updates_a_category.json +1 -0
  37. data/spec/cassettes/TurbaKit_Client_Contents/_create_content/creates_a_content.json +1 -0
  38. data/spec/cassettes/TurbaKit_Client_Contents/_delete_content/deletes_a_content.json +1 -0
  39. data/spec/cassettes/TurbaKit_Client_Contents/_service_content/returns_a_content.json +1 -0
  40. data/spec/cassettes/TurbaKit_Client_Contents/_service_contents/lists_contents.json +1 -0
  41. data/spec/cassettes/TurbaKit_Client_Contents/_update_content/updates_a_content.json +1 -0
  42. data/spec/cassettes/TurbaKit_Client_Countries/_countries/returns_all_countries.json +1 -0
  43. data/spec/cassettes/TurbaKit_Client_Countries/_country/returns_a_country.json +1 -0
  44. data/spec/cassettes/TurbaKit_Client_Crowds/_create_crowd/creates_a_crowd.json +1 -0
  45. data/spec/cassettes/TurbaKit_Client_Crowds/_delete_crowd/deletes_a_crowd.json +1 -0
  46. data/spec/cassettes/TurbaKit_Client_Crowds/_service_crowd/returns_a_crowd.json +1 -0
  47. data/spec/cassettes/TurbaKit_Client_Crowds/_service_crowds/lists_crowds.json +1 -0
  48. data/spec/cassettes/TurbaKit_Client_Crowds/_update_crowd/updates_a_crowd.json +1 -0
  49. data/spec/cassettes/TurbaKit_Client_Links/_create_link/creates_a_link.json +1 -0
  50. data/spec/cassettes/TurbaKit_Client_Links/_delete_link/deletes_a_link.json +1 -0
  51. data/spec/cassettes/TurbaKit_Client_Links/_service_link/returns_a_link.json +1 -0
  52. data/spec/cassettes/TurbaKit_Client_Links/_service_links/lists_links.json +1 -0
  53. data/spec/cassettes/TurbaKit_Client_Links/_update_link/updates_a_link.json +1 -0
  54. data/spec/cassettes/TurbaKit_Client_Notifications/_create_notification/creates_a_notification.json +1 -0
  55. data/spec/cassettes/TurbaKit_Client_Notifications/_delete_notification/deletes_a_notification.json +1 -0
  56. data/spec/cassettes/TurbaKit_Client_Notifications/_service_notification/returns_a_notification.json +1 -0
  57. data/spec/cassettes/TurbaKit_Client_Notifications/_service_notifications/lists_notifications.json +1 -0
  58. data/spec/cassettes/TurbaKit_Client_Notifications/_update_notification/updates_a_notification.json +1 -0
  59. data/spec/cassettes/TurbaKit_Client_Organismes/_create_organisme/creates_an_organisme.json +1 -0
  60. data/spec/cassettes/TurbaKit_Client_Organismes/_delete_organisme/deletes_a_organisme_and_returns_true.json +1 -0
  61. data/spec/cassettes/TurbaKit_Client_Organismes/_delete_organisme/returns_false_if_organisme_doesn_t_exist.json +1 -0
  62. data/spec/cassettes/TurbaKit_Client_Organismes/_organisme/returns_a_organisme.json +1 -0
  63. data/spec/cassettes/TurbaKit_Client_Organismes/_organismes/handles_the_country_code_option.json +1 -0
  64. data/spec/cassettes/TurbaKit_Client_Organismes/_update_organisme/updates_an_organisme.json +1 -0
  65. data/spec/cassettes/TurbaKit_Client_Phonenumbers/_create_phonenumber/creates_a_phonenumber.json +1 -0
  66. data/spec/cassettes/TurbaKit_Client_Phonenumbers/_delete_phonenumber/deletes_a_phonenumber.json +1 -0
  67. data/spec/cassettes/TurbaKit_Client_Phonenumbers/_service_phonenumber/returns_a_phonenumber.json +1 -0
  68. data/spec/cassettes/TurbaKit_Client_Phonenumbers/_service_phonenumbers/lists_phonenumbers.json +1 -0
  69. data/spec/cassettes/TurbaKit_Client_Phonenumbers/_update_phonenumber/updates_a_phonenumber.json +1 -0
  70. data/spec/cassettes/TurbaKit_Client_Places/_create_place/creates_a_place.json +1 -0
  71. data/spec/cassettes/TurbaKit_Client_Places/_delete_place/deletes_a_place.json +1 -0
  72. data/spec/cassettes/TurbaKit_Client_Places/_service_place/returns_a_place.json +1 -0
  73. data/spec/cassettes/TurbaKit_Client_Places/_service_places/lists_places.json +1 -0
  74. data/spec/cassettes/TurbaKit_Client_Places/_update_place/updates_a_place.json +1 -0
  75. data/spec/cassettes/TurbaKit_Client_Services/_service/returns_a_service.json +1 -0
  76. data/spec/cassettes/TurbaKit_Client_Services/_services/handles_the_country_code_option.json +1 -0
  77. data/spec/cassettes/TurbaKit_Client_Tips/_create_tip/creates_a_tip.json +1 -0
  78. data/spec/cassettes/TurbaKit_Client_Tips/_delete_tip/deletes_a_tip.json +1 -0
  79. data/spec/cassettes/TurbaKit_Client_Tips/_service_tip/returns_a_tip.json +1 -0
  80. data/spec/cassettes/TurbaKit_Client_Tips/_service_tips/lists_tips.json +1 -0
  81. data/spec/cassettes/TurbaKit_Client_Tips/_update_tip/updates_a_tip.json +1 -0
  82. data/spec/cassettes/Turkit_Client_Categories/_categories/handles_the_country_code_option.json +1 -0
  83. data/spec/cassettes/Turkit_Client_Categories/_categories/returns_all_categories.json +1 -0
  84. data/spec/cassettes/Turkit_Client_Categories/_category/returns_a_category.json +1 -0
  85. data/spec/cassettes/Turkit_Client_Categories/_create_category/creates_a_category.json +1 -0
  86. data/spec/cassettes/Turkit_Client_Categories/_delete_category/deletes_a_category_and_returns_true.json +1 -0
  87. data/spec/cassettes/Turkit_Client_Categories/_delete_category/returns_false_if_category_doesn_t_exist.json +1 -0
  88. data/spec/cassettes/Turkit_Client_Categories/_search_category/returns_a_list_of_categories.json +1 -0
  89. data/spec/cassettes/Turkit_Client_Categories/_update_category/updates_a_category.json +1 -0
  90. data/spec/cassettes/Turkit_Client_Contents/_create_content/creates_a_content.json +1 -0
  91. data/spec/cassettes/Turkit_Client_Contents/_delete_content/deletes_a_content.json +1 -0
  92. data/spec/cassettes/Turkit_Client_Contents/_service_content/returns_a_content.json +1 -0
  93. data/spec/cassettes/Turkit_Client_Contents/_service_contents/lists_contents.json +1 -0
  94. data/spec/cassettes/Turkit_Client_Contents/_update_content/updates_a_content.json +1 -0
  95. data/spec/cassettes/Turkit_Client_Countries/_countries/returns_all_countries.json +1 -0
  96. data/spec/cassettes/Turkit_Client_Countries/_country/returns_a_country.json +1 -0
  97. data/spec/cassettes/Turkit_Client_Crowds/_create_crowd/creates_a_crowd.json +1 -0
  98. data/spec/cassettes/Turkit_Client_Crowds/_delete_crowd/deletes_a_crowd.json +1 -0
  99. data/spec/cassettes/Turkit_Client_Crowds/_service_crowd/returns_a_crowd.json +1 -0
  100. data/spec/cassettes/Turkit_Client_Crowds/_service_crowds/lists_crowds.json +1 -0
  101. data/spec/cassettes/Turkit_Client_Crowds/_update_crowd/updates_a_crowd.json +1 -0
  102. data/spec/cassettes/Turkit_Client_Links/_create_link/creates_a_link.json +1 -0
  103. data/spec/cassettes/Turkit_Client_Links/_delete_link/deletes_a_link.json +1 -0
  104. data/spec/cassettes/Turkit_Client_Links/_service_link/returns_a_link.json +1 -0
  105. data/spec/cassettes/Turkit_Client_Links/_service_links/lists_links.json +1 -0
  106. data/spec/cassettes/Turkit_Client_Links/_update_link/updates_a_link.json +1 -0
  107. data/spec/cassettes/Turkit_Client_Notifications/_create_notification/creates_a_notification.json +1 -0
  108. data/spec/cassettes/Turkit_Client_Notifications/_delete_notification/deletes_a_notification.json +1 -0
  109. data/spec/cassettes/Turkit_Client_Notifications/_service_notification/returns_a_notification.json +1 -0
  110. data/spec/cassettes/Turkit_Client_Notifications/_service_notifications/lists_notifications.json +1 -0
  111. data/spec/cassettes/Turkit_Client_Notifications/_update_notification/updates_a_notification.json +1 -0
  112. data/spec/cassettes/Turkit_Client_Organismes/_create_organisme/creates_an_organisme.json +1 -0
  113. data/spec/cassettes/Turkit_Client_Organismes/_delete_organisme/deletes_a_organisme_and_returns_true.json +1 -0
  114. data/spec/cassettes/Turkit_Client_Organismes/_delete_organisme/returns_false_if_organisme_doesn_t_exist.json +1 -0
  115. data/spec/cassettes/Turkit_Client_Organismes/_organisme/returns_a_organisme.json +1 -0
  116. data/spec/cassettes/Turkit_Client_Organismes/_organismes/handles_the_country_code_option.json +1 -0
  117. data/spec/cassettes/Turkit_Client_Organismes/_organismes/returns_all_organismes.json +1 -0
  118. data/spec/cassettes/Turkit_Client_Organismes/_search_organisme/returns_a_list_of_organismes.json +1 -0
  119. data/spec/cassettes/Turkit_Client_Organismes/_update_organisme/updates_an_organisme.json +1 -0
  120. data/spec/cassettes/Turkit_Client_Phonenumbers/_create_phonenumber/creates_a_phonenumber.json +1 -0
  121. data/spec/cassettes/Turkit_Client_Phonenumbers/_delete_phonenumber/deletes_a_phonenumber.json +1 -0
  122. data/spec/cassettes/Turkit_Client_Phonenumbers/_service_phonenumber/returns_a_phonenumber.json +1 -0
  123. data/spec/cassettes/Turkit_Client_Phonenumbers/_service_phonenumbers/lists_phonenumbers.json +1 -0
  124. data/spec/cassettes/Turkit_Client_Phonenumbers/_update_phonenumber/updates_a_phonenumber.json +1 -0
  125. data/spec/cassettes/Turkit_Client_Places/_create_place/creates_a_place.json +1 -0
  126. data/spec/cassettes/Turkit_Client_Places/_delete_place/deletes_a_place.json +1 -0
  127. data/spec/cassettes/Turkit_Client_Places/_service_place/returns_a_place.json +1 -0
  128. data/spec/cassettes/Turkit_Client_Places/_service_places/lists_places.json +1 -0
  129. data/spec/cassettes/Turkit_Client_Places/_update_place/updates_a_place.json +1 -0
  130. data/spec/cassettes/Turkit_Client_Services/_search_service/returns_a_list_of_services.json +1 -0
  131. data/spec/cassettes/Turkit_Client_Services/_service/returns_a_service.json +1 -0
  132. data/spec/cassettes/Turkit_Client_Services/_services/handles_the_country_code_option.json +1 -0
  133. data/spec/cassettes/Turkit_Client_Services/_services/returns_all_services.json +1 -0
  134. data/spec/cassettes/Turkit_Client_Tips/_create_tip/creates_a_tip.json +1 -0
  135. data/spec/cassettes/Turkit_Client_Tips/_delete_tip/deletes_a_tip.json +1 -0
  136. data/spec/cassettes/Turkit_Client_Tips/_service_tip/returns_a_tip.json +1 -0
  137. data/spec/cassettes/Turkit_Client_Tips/_service_tips/lists_tips.json +1 -0
  138. data/spec/cassettes/Turkit_Client_Tips/_update_tip/updates_a_tip.json +1 -0
  139. data/spec/lib/categories_spec.rb +64 -0
  140. data/spec/lib/contents_spec.rb +47 -0
  141. data/spec/lib/countries_spec.rb +23 -0
  142. data/spec/lib/crowds_spec.rb +47 -0
  143. data/spec/lib/links_spec.rb +47 -0
  144. data/spec/lib/notifications_spec.rb +47 -0
  145. data/spec/lib/organismes_spec.rb +64 -0
  146. data/spec/lib/phonenumbers_spec.rb +47 -0
  147. data/spec/lib/place_spec.rb +47 -0
  148. data/spec/lib/services_spec.rb +64 -0
  149. data/spec/lib/tips_spec.rb +47 -0
  150. data/spec/spec_helper.rb +34 -0
  151. data/turba_kit.gemspec +24 -0
  152. metadata +356 -0
@@ -0,0 +1,74 @@
1
+ module TurbaKit
2
+
3
+ # Configuration options for {Client}, defaulting to values
4
+ # in {Default}
5
+ module Configurable
6
+ # @return [String] Base URL for API requests. default: https://api.github.com/
7
+ # @!attribute auto_paginate
8
+ # @return [Boolean] Auto fetch next page of results until rate limit reached
9
+ # @!attribute default_media_type
10
+ # @see http://developer.github.com/v3/media/
11
+ # @return [String] Configure preferred media type (for API versioning, for example)
12
+ # @!attribute connection_options
13
+ # @see https://github.com/lostisland/faraday
14
+ # @return [Hash] Configure connection options for Faraday
15
+ # @!attribute middleware
16
+ # @see https://github.com/lostisland/faraday
17
+ # @return [Faraday::Builder or Faraday::RackBuilder] Configure middleware for Faraday
18
+ # @!attribute per_page
19
+ # @return [String] Configure page size for paginated results. API default: 30
20
+ # @!attribute proxy
21
+ # @see https://github.com/lostisland/faraday
22
+ # @return [String] URI for proxy server
23
+ # @!attribute user_agent
24
+ # @return [String] Configure User-Agent header for requests.
25
+
26
+ attr_accessor :auto_paginate, :default_media_type, :connection_options,
27
+ :middleware, :per_page, :user_agent, :api_key, :api_version
28
+ attr_writer :api_endpoint
29
+
30
+ class << self
31
+
32
+ # List of configurable keys for {TurbaKit::Client}
33
+ # @return [Array] of option keys
34
+ def keys
35
+ @keys ||= [
36
+ :api_key,
37
+ :api_version,
38
+ :api_endpoint,
39
+ :connection_options,
40
+ :auto_paginate,
41
+ :default_media_type,
42
+ :middleware,
43
+ :per_page,
44
+ :user_agent
45
+ ]
46
+ end
47
+ end
48
+
49
+ # Set configuration options using a block
50
+ def configure
51
+ yield self
52
+ end
53
+
54
+ # Reset configuration options to default values
55
+ def reset!
56
+ TurbaKit::Configurable.keys.each do |key|
57
+ instance_variable_set(:"@#{key}", TurbaKit::Default.options[key])
58
+ end
59
+ self
60
+ end
61
+ alias setup reset!
62
+
63
+ def api_endpoint
64
+ File.join(@api_endpoint, "")
65
+ end
66
+
67
+ private
68
+
69
+ def options
70
+ Hash[TurbaKit::Configurable.keys.map{|key| [key, instance_variable_get(:"@#{key}")]}]
71
+ end
72
+
73
+ end
74
+ end
@@ -0,0 +1,102 @@
1
+ require 'turba_kit/response/raise_error'
2
+ require 'turba_kit/version'
3
+
4
+ module TurbaKit
5
+
6
+ # Default configuration options for {Client}
7
+ module Default
8
+
9
+ # Default API endpoint
10
+ API_ENDPOINT = "http://api.dev".freeze
11
+
12
+ # Default API version
13
+ API_VERSION = "v2".freeze
14
+
15
+ # Default User Agent header string
16
+ USER_AGENT = "TurbaKit Ruby Gem #{TurbaKit::VERSION}".freeze
17
+
18
+ # Default media type
19
+ MEDIA_TYPE = "application/json; charset=utf-8"
20
+
21
+ # In Faraday 0.9, Faraday::Builder was renamed to Faraday::RackBuilder
22
+ RACK_BUILDER_CLASS = defined?(Faraday::RackBuilder) ? Faraday::RackBuilder : Faraday::Builder
23
+
24
+ # Default Faraday middleware stack
25
+ MIDDLEWARE = RACK_BUILDER_CLASS.new do |builder|
26
+ builder.use TurbaKit::Response::RaiseError
27
+ builder.adapter Faraday.default_adapter
28
+ end
29
+
30
+ class << self
31
+
32
+ # Configuration options
33
+ # @return [Hash]
34
+ def options
35
+ Hash[TurbaKit::Configurable.keys.map{|key| [key, send(key)]}]
36
+ end
37
+
38
+ # Default API endpoint from ENV or {API_ENDPOINT}
39
+ # @return [String]
40
+ def api_endpoint
41
+ ENV['TURKIT_API_ENDPOINT'] || API_ENDPOINT
42
+ end
43
+
44
+ # Default API version from ENV or {API_VERSION}
45
+ # @return [String]
46
+ def api_version
47
+ ENV['TURKIT_API_VERSION'] || API_VERSION
48
+ end
49
+
50
+ # Default API key from ENV or {API_KEY}
51
+ # @return [String]
52
+ def api_key
53
+ ENV['TURKIT_API_KEY'] || 'c33f24cr2l26lma9ue4210lp'
54
+ # ENV['TURKIT_API_KEY'] || 'x' * 42
55
+ end
56
+
57
+ # Default pagination preference from ENV
58
+ # @return [String]
59
+ def auto_paginate
60
+ ENV['TURKIT_AUTO_PAGINATE']
61
+ end
62
+
63
+ # Default options for Faraday::Connection
64
+ # @return [Hash]
65
+ def connection_options
66
+ {
67
+ :headers => {
68
+ :content_type => default_media_type,
69
+ :accept => default_media_type,
70
+ :user_agent => user_agent
71
+ }
72
+ }
73
+ end
74
+
75
+ # Default media type from ENV or {MEDIA_TYPE}
76
+ # @return [String]
77
+ def default_media_type
78
+ ENV['TURKIT_DEFAULT_MEDIA_TYPE'] || MEDIA_TYPE
79
+ end
80
+
81
+ # Default middleware stack for Faraday::Connection
82
+ # from {MIDDLEWARE}
83
+ # @return [String]
84
+ def middleware
85
+ MIDDLEWARE
86
+ end
87
+
88
+ # Default pagination page size from ENV
89
+ # @return [Fixnum] Page size
90
+ def per_page
91
+ page_size = ENV['TURKIT_PER_PAGE']
92
+ page_size.to_i if page_size
93
+ end
94
+
95
+ # Default User-Agent header string from ENV or {USER_AGENT}
96
+ # @return [String]
97
+ def user_agent
98
+ ENV['TURKIT_USER_AGENT'] || USER_AGENT
99
+ end
100
+ end
101
+ end
102
+ end
@@ -0,0 +1,209 @@
1
+ module TurbaKit
2
+ # Custom error class for rescuing from all Turba errors
3
+ class Error < StandardError
4
+ attr_accessor :hash_message
5
+
6
+ # Returns the appropriate TurbaKit::Error subclass based
7
+ # on status and response message
8
+ #
9
+ # @param [Hash] response HTTP response
10
+ # @return [TurbaKit::Error]
11
+ def self.from_response(response)
12
+ status = response[:status].to_i
13
+ body = response[:body].to_s
14
+ headers = response[:response_headers]
15
+
16
+ if klass = case status
17
+ when 400 then TurbaKit::BadRequest
18
+ when 401 then error_for_401(headers)
19
+ when 403 then error_for_403(body)
20
+ when 404 then TurbaKit::NotFound
21
+ when 406 then TurbaKit::NotAcceptable
22
+ when 409 then TurbaKit::Conflict
23
+ when 415 then TurbaKit::UnsupportedMediaType
24
+ when 422 then TurbaKit::UnprocessableEntity
25
+ when 400..499 then TurbaKit::ClientError
26
+ when 500 then TurbaKit::InternalServerError
27
+ when 501 then TurbaKit::NotImplemented
28
+ when 502 then TurbaKit::BadGateway
29
+ when 503 then TurbaKit::ServiceUnavailable
30
+ when 500..599 then TurbaKit::ServerError
31
+ end
32
+ klass.new(response)
33
+ end
34
+ end
35
+
36
+ def initialize(response=nil)
37
+ @response = response
38
+ super(build_error_message)
39
+ @status = @response[:status]
40
+ @hash_message = build_hash_message
41
+ end
42
+
43
+ # Documentation URL returned by the API for some errors
44
+ #
45
+ # @return [String]
46
+ def documentation_url
47
+ data[:documentation_url] if data.is_a? Hash
48
+ end
49
+
50
+ # Returns most appropriate error for 401 HTTP status code
51
+ # @private
52
+ def self.error_for_401(headers)
53
+ if TurbaKit::OneTimePasswordRequired.required_header(headers)
54
+ TurbaKit::OneTimePasswordRequired
55
+ else
56
+ TurbaKit::Unauthorized
57
+ end
58
+ end
59
+
60
+ # Returns most appropriate error for 403 HTTP status code
61
+ # @private
62
+ def self.error_for_403(body)
63
+ if body =~ /rate limit exceeded/i
64
+ TurbaKit::TooManyRequests
65
+ elsif body =~ /login attempts exceeded/i
66
+ TurbaKit::TooManyLoginAttempts
67
+ else
68
+ TurbaKit::Forbidden
69
+ end
70
+ end
71
+
72
+ # Array of validation errors
73
+ # @return [Array<Hash>] Error info
74
+ def errors
75
+ if data && data.is_a?(Hash)
76
+ data[:errors] || []
77
+ else
78
+ []
79
+ end
80
+ end
81
+
82
+ private
83
+
84
+ def data
85
+ @data ||=
86
+ if (body = @response[:body]) && !body.empty?
87
+ if body.is_a?(String) &&
88
+ @response[:response_headers] &&
89
+ @response[:response_headers][:content_type] =~ /json/
90
+
91
+ Sawyer::Agent.serializer.decode(body)
92
+ else
93
+ body
94
+ end
95
+ else
96
+ nil
97
+ end
98
+ end
99
+
100
+ def response_message
101
+ case data
102
+ when Hash
103
+ data[:message]
104
+ when String
105
+ data
106
+ end
107
+ end
108
+
109
+ def response_error
110
+ "Error: #{data[:error]}" if data.is_a?(Hash) && data[:error]
111
+ end
112
+
113
+ def response_error_summary
114
+ return nil unless data.is_a?(Hash) && !Array(data[:errors]).empty?
115
+ summary = "\nError summary:\n"
116
+ summary << data[:errors].map{|x| x}.join("\n")
117
+ summary
118
+ end
119
+
120
+ def build_hash_message
121
+ response = {}
122
+ return response if @response.nil?
123
+ response[:method] = @response[:method].to_s.upcase
124
+ response[:status] = @response[:status]
125
+ response[:message] = response_message unless response_message.nil?
126
+
127
+ data_array = data[:errors].map do |x|
128
+ x.is_a?(Hash) ? x[:message] : x
129
+ end unless data[:errors].blank?
130
+
131
+ response[:errors] = data_array
132
+ response[:documentation_url] = documentation_url unless documentation_url.nil?
133
+ response
134
+ end
135
+
136
+ def build_error_message
137
+ return nil if @response.nil?
138
+
139
+ message = "#{@response[:method].to_s.upcase} "
140
+ message << redact_url(@response[:url].to_s) + ": "
141
+ message << "#{@response[:status]} - "
142
+ message << "#{response_message}" unless response_message.nil?
143
+ message << "#{response_error}" unless response_error.nil?
144
+ message << "#{response_error_summary}" unless response_error_summary.nil?
145
+ message << " // See: #{documentation_url}" unless documentation_url.nil?
146
+ message
147
+ end
148
+
149
+ def redact_url(url_string)
150
+ %w[api_key].each do |token|
151
+ url_string.gsub!(/#{token}=\S+/, "#{token}=(redacted)") if url_string.include? token
152
+ end
153
+ url_string
154
+ end
155
+ end
156
+
157
+ # Raised on errors in the 400-499 range
158
+ class ClientError < Error; end
159
+
160
+ # Raised when Turba returns a 400 HTTP status code
161
+ class BadRequest < ClientError; end
162
+
163
+ # Raised when Turba returns a 401 HTTP status code
164
+ class Unauthorized < ClientError; end
165
+
166
+ # Raised when Turba returns a 403 HTTP status code
167
+ class Forbidden < ClientError; end
168
+
169
+ # Raised when Turba returns a 403 HTTP status code
170
+ # and body matches 'rate limit exceeded'
171
+ class TooManyRequests < Forbidden; end
172
+
173
+ # Raised when Turba returns a 403 HTTP status code
174
+ # and body matches 'login attempts exceeded'
175
+ class TooManyLoginAttempts < Forbidden; end
176
+
177
+ # Raised when Turba returns a 404 HTTP status code
178
+ class NotFound < ClientError; end
179
+
180
+ # Raised when Turba returns a 406 HTTP status code
181
+ class NotAcceptable < ClientError; end
182
+
183
+ # Raised when Turba returns a 409 HTTP status code
184
+ class Conflict < ClientError; end
185
+
186
+ # Raised when Turba returns a 414 HTTP status code
187
+ class UnsupportedMediaType < ClientError; end
188
+
189
+ # Raised when Turba returns a 422 HTTP status code
190
+ class UnprocessableEntity < ClientError; end
191
+
192
+ # Raised on errors in the 500-599 range
193
+ class ServerError < Error; end
194
+
195
+ # Raised when Turba returns a 500 HTTP status code
196
+ class InternalServerError < ServerError; end
197
+
198
+ # Raised when Turba returns a 501 HTTP status code
199
+ class NotImplemented < ServerError; end
200
+
201
+ # Raised when Turba returns a 502 HTTP status code
202
+ class BadGateway < ServerError; end
203
+
204
+ # Raised when Turba returns a 503 HTTP status code
205
+ class ServiceUnavailable < ServerError; end
206
+
207
+ # Raised when client fails to provide valid Content-Type
208
+ class MissingContentType < ArgumentError; end
209
+ end
@@ -0,0 +1,20 @@
1
+ require 'faraday'
2
+ require 'turba_kit/error'
3
+
4
+ module TurbaKit
5
+ # Faraday response middleware
6
+ module Response
7
+
8
+ # This class raises a TurbaKit-flavored exception based
9
+ # on HTTP status codes returned by the API
10
+ class RaiseError < Faraday::Response::Middleware
11
+ private
12
+
13
+ def on_complete(response)
14
+ if error = TurbaKit::Error.from_response(response)
15
+ raise error
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,3 @@
1
+ module TurbaKit
2
+ VERSION = '0.0.8'.freeze
3
+ end
data/lib/turba_kit.rb ADDED
@@ -0,0 +1,27 @@
1
+ require 'turba_kit/client'
2
+ require 'turba_kit/default'
3
+
4
+ # Ruby toolkit for the Turba API
5
+ module TurbaKit
6
+ class << self
7
+ include TurbaKit::Configurable
8
+ def client
9
+ @client = TurbaKit::Client.new(options) unless defined?(@client) && @client.same_options?(options)
10
+ @client
11
+ end
12
+
13
+ # @private
14
+ def respond_to_missing?(method_name, include_private=false); client.respond_to?(method_name, include_private); end if RUBY_VERSION >= "1.9"
15
+ # @private
16
+ def respond_to?(method_name, include_private=false); client.respond_to?(method_name, include_private) || super; end if RUBY_VERSION < "1.9"
17
+
18
+ private
19
+
20
+ def method_missing(method_name, *args, &block)
21
+ return super unless client.respond_to?(method_name)
22
+ client.send(method_name, *args, &block)
23
+ end
24
+ end
25
+ end
26
+
27
+ TurbaKit.setup
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"get","uri":"http://api.dev/v2/categories?country_code=BR","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"Content-Type":["application/json; charset=utf-8"],"Accept":["application/json; charset=utf-8"],"User-Agent":["TurbaKit Ruby Gem 0.0.3"],"X-Api-Key":["c33f24cr2l26lma9ue4210lp"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 09 Apr 2014 20:49:53 GMT"],"Status":["200 OK"],"Connection":["close"],"X-Frame-Options":["SAMEORIGIN"],"X-Xss-Protection":["1; mode=block"],"X-Content-Type-Options":["nosniff"],"X-Ua-Compatible":["chrome=1"],"Content-Type":["application/json; charset=utf-8"],"Etag":["\"12d8a8214449d7a7e3cfb0ff62cf7623\""],"Cache-Control":["max-age=0, private, must-revalidate"],"X-Request-Id":["180defa8-9164-4d9a-b02d-68639e53bf1f"],"X-Runtime":["0.077257"],"Transfer-Encoding":["chunked"]},"body":{"encoding":"ASCII-8BIT","base64_string":"eyJjYXRlZ29yaWVzIjpbeyJ0aXRsZSI6Ik11c2V1cyBlIE1vbnVtZW50b3Mi\nLCJjb3VudHJ5X2NvZGUiOiJCUiIsImh1bWFuX2VuZHBvaW50IjoiL211c2V1\ncy1tb251bWVudG9zIiwiaWQiOiI1MWY2MjcwMzY5ODIwMjBlZDEwMDAxMDEi\nLCJtYWNoaW5lX2VuZHBvaW50IjoiL2NhdGVnb3JpZXMvNTFmNjI3MDM2OTgy\nMDIwZWQxMDAwMTAxIiwicGVybWFsaW5rIjoiYnItbXVzZXVzLW1vbnVtZW50\nb3MiLCJzZWdtZW50IjoibXVzZXVzLW1vbnVtZW50b3MifSx7InRpdGxlIjoi\nQmFuY29zIGUgU2VndXJvcyIsImNvdW50cnlfY29kZSI6IkJSIiwiaHVtYW5f\nZW5kcG9pbnQiOiIvYmFuY29zLXNlZ3Vyb3MiLCJpZCI6IjUxZmE3NGMxZjUz\nMDE4OTYxMTAwMDAxYSIsIm1hY2hpbmVfZW5kcG9pbnQiOiIvY2F0ZWdvcmll\ncy81MWZhNzRjMWY1MzAxODk2MTEwMDAwMWEiLCJwZXJtYWxpbmsiOiJici1i\nYW5jb3Mtc2VndXJvcyIsInNlZ21lbnQiOiJiYW5jb3Mtc2VndXJvcyJ9LHsi\ndGl0bGUiOiJFLUNvbW1lcmNlIiwiY291bnRyeV9jb2RlIjoiQlIiLCJodW1h\nbl9lbmRwb2ludCI6Ii9lY29tbWVyY2UiLCJpZCI6IjUxZmE3NTE4ZjUzMDE4\nMmYwODAwMDAxNCIsIm1hY2hpbmVfZW5kcG9pbnQiOiIvY2F0ZWdvcmllcy81\nMWZhNzUxOGY1MzAxODJmMDgwMDAwMTQiLCJwZXJtYWxpbmsiOiJici1lY29t\nbWVyY2UiLCJzZWdtZW50IjoiZWNvbW1lcmNlIn0seyJ0aXRsZSI6IkVsZXRy\nb2RvbcOpc3RpY29zIiwiY291bnRyeV9jb2RlIjoiQlIiLCJodW1hbl9lbmRw\nb2ludCI6Ii9lbGV0cm9kb21lc3RpY29zIiwiaWQiOiI1MWZhNzUzM2Y1MzAx\nOGM4MTkwMDAwMWEiLCJtYWNoaW5lX2VuZHBvaW50IjoiL2NhdGVnb3JpZXMv\nNTFmYTc1MzNmNTMwMThjODE5MDAwMDFhIiwicGVybWFsaW5rIjoiYnItZWxl\ndHJvZG9tZXN0aWNvcyIsInNlZ21lbnQiOiJlbGV0cm9kb21lc3RpY29zIn0s\neyJ0aXRsZSI6IkludGVybmV0LCBUZWxlZm9uaWEgZSBUViBhIGNhYm8iLCJj\nb3VudHJ5X2NvZGUiOiJCUiIsImh1bWFuX2VuZHBvaW50IjoiL2ludGVybmV0\nLXRlbGVmb25pYS10diIsImlkIjoiNTFmYTc1YTM4OTEzMWQzMmVmMDAwMDEy\nIiwibWFjaGluZV9lbmRwb2ludCI6Ii9jYXRlZ29yaWVzLzUxZmE3NWEzODkx\nMzFkMzJlZjAwMDAxMiIsInBlcm1hbGluayI6ImJyLWludGVybmV0LXRlbGVm\nb25pYS10diIsInNlZ21lbnQiOiJpbnRlcm5ldC10ZWxlZm9uaWEtdHYifSx7\nInRpdGxlIjoiTGF6ZXIgZSBFbnRyZXRlbmltZW50byIsImNvdW50cnlfY29k\nZSI6IkJSIiwiaHVtYW5fZW5kcG9pbnQiOiIvbGF6ZXItZW50cmV0ZW5pbWVu\ndG8iLCJpZCI6IjUxZmE3NjVlZjUzMDE4YzgxOTAwMDAxYiIsIm1hY2hpbmVf\nZW5kcG9pbnQiOiIvY2F0ZWdvcmllcy81MWZhNzY1ZWY1MzAxOGM4MTkwMDAw\nMWIiLCJwZXJtYWxpbmsiOiJici1sYXplci1lbnRyZXRlbmltZW50byIsInNl\nZ21lbnQiOiJsYXplci1lbnRyZXRlbmltZW50byJ9LHsidGl0bGUiOiJNYXJj\nYXMgZSBWYXJlam8iLCJjb3VudHJ5X2NvZGUiOiJCUiIsImh1bWFuX2VuZHBv\naW50IjoiL21hcmNhcy12YXJlam8iLCJpZCI6IjUxZmE3NzM2ZjUzMDE4Yzgx\nOTAwMDAxYyIsIm1hY2hpbmVfZW5kcG9pbnQiOiIvY2F0ZWdvcmllcy81MWZh\nNzczNmY1MzAxOGM4MTkwMDAwMWMiLCJwZXJtYWxpbmsiOiJici1tYXJjYXMt\ndmFyZWpvIiwic2VnbWVudCI6Im1hcmNhcy12YXJlam8ifSx7InRpdGxlIjoi\nT3V0cm9zIiwiY291bnRyeV9jb2RlIjoiQlIiLCJodW1hbl9lbmRwb2ludCI6\nIi9vdXRyb3MiLCJpZCI6IjUxZmE3NzY0ODkxMzFkZWJiMzAwMDAxYSIsIm1h\nY2hpbmVfZW5kcG9pbnQiOiIvY2F0ZWdvcmllcy81MWZhNzc2NDg5MTMxZGVi\nYjMwMDAwMWEiLCJwZXJtYWxpbmsiOiJici1vdXRyb3MiLCJzZWdtZW50Ijoi\nb3V0cm9zIn0seyJ0aXRsZSI6IlByZXN0YWRvcmVzIGRlIHNlcnZpw6dvIiwi\nY291bnRyeV9jb2RlIjoiQlIiLCJodW1hbl9lbmRwb2ludCI6Ii9wcmVzdGFk\nb3Jlcy1zZXJ2aWNvIiwiaWQiOiI1MWZhNzc5ODFmZDhkMzNhY2UwMDAwMTQi\nLCJtYWNoaW5lX2VuZHBvaW50IjoiL2NhdGVnb3JpZXMvNTFmYTc3OTgxZmQ4\nZDMzYWNlMDAwMDE0IiwicGVybWFsaW5rIjoiYnItcHJlc3RhZG9yZXMtc2Vy\ndmljbyIsInNlZ21lbnQiOiJwcmVzdGFkb3Jlcy1zZXJ2aWNvIn0seyJ0aXRs\nZSI6IlJlc3RhdXJhbnRlcyBlIEJhcmVzIiwiY291bnRyeV9jb2RlIjoiQlIi\nLCJodW1hbl9lbmRwb2ludCI6Ii9yZXN0YXVyYW50ZXMtYmFyZXMiLCJpZCI6\nIjUxZmE3N2E5MWZkOGQzM2FjZTAwMDAxNSIsIm1hY2hpbmVfZW5kcG9pbnQi\nOiIvY2F0ZWdvcmllcy81MWZhNzdhOTFmZDhkMzNhY2UwMDAwMTUiLCJwZXJt\nYWxpbmsiOiJici1yZXN0YXVyYW50ZXMtYmFyZXMiLCJzZWdtZW50IjoicmVz\ndGF1cmFudGVzLWJhcmVzIn0seyJ0aXRsZSI6IlNlcnZpw6dvcyBQw7pibGlj\nb3MiLCJjb3VudHJ5X2NvZGUiOiJCUiIsImh1bWFuX2VuZHBvaW50IjoiL3Nl\ncnZpY29zLXB1YmxpY29zIiwiaWQiOiI1MWZhNzgwMzFmZDhkMzM3ODAwMDAw\nMWIiLCJtYWNoaW5lX2VuZHBvaW50IjoiL2NhdGVnb3JpZXMvNTFmYTc4MDMx\nZmQ4ZDMzNzgwMDAwMDFiIiwicGVybWFsaW5rIjoiYnItc2Vydmljb3MtcHVi\nbGljb3MiLCJzZWdtZW50Ijoic2Vydmljb3MtcHVibGljb3MifSx7InRpdGxl\nIjoiVHJhbnNwb3J0ZXMgZSBWaWFnZW5zIiwiY291bnRyeV9jb2RlIjoiQlIi\nLCJodW1hbl9lbmRwb2ludCI6Ii90cmFuc3BvcnRlcy12aWFnZW5zIiwiaWQi\nOiI1MWZhNzg1Y2Y1MzAxODJmMDgwMDAwMTYiLCJtYWNoaW5lX2VuZHBvaW50\nIjoiL2NhdGVnb3JpZXMvNTFmYTc4NWNmNTMwMTgyZjA4MDAwMDE2IiwicGVy\nbWFsaW5rIjoiYnItdHJhbnNwb3J0ZXMtdmlhZ2VucyIsInNlZ21lbnQiOiJ0\ncmFuc3BvcnRlcy12aWFnZW5zIn0seyJ0aXRsZSI6IkludGVybmFjaW9uYWwi\nLCJjb3VudHJ5X2NvZGUiOiJCUiIsImh1bWFuX2VuZHBvaW50IjoiL2ludGVy\nbmFjaW9uYWwiLCJpZCI6IjUyMGE1MzQ5NzBlZmU2MTZkMDAwMDAxZSIsIm1h\nY2hpbmVfZW5kcG9pbnQiOiIvY2F0ZWdvcmllcy81MjBhNTM0OTcwZWZlNjE2\nZDAwMDAwMWUiLCJwZXJtYWxpbmsiOiJici1pbnRlcm5hY2lvbmFsIiwic2Vn\nbWVudCI6ImludGVybmFjaW9uYWwifV19\n"},"http_version":null},"recorded_at":"Wed, 09 Apr 2014 20:49:53 GMT"}],"recorded_with":"VCR 2.8.0"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"get","uri":"http://api.dev/v2/categories/4e4bda69068e2c5b0e980300","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"Content-Type":["application/json; charset=utf-8"],"Accept":["application/json; charset=utf-8"],"User-Agent":["TurbaKit Ruby Gem 0.0.3"],"X-Api-Key":["c33f24cr2l26lma9ue4210lp"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 09 Apr 2014 20:49:52 GMT"],"Status":["200 OK"],"Connection":["close"],"X-Frame-Options":["SAMEORIGIN"],"X-Xss-Protection":["1; mode=block"],"X-Content-Type-Options":["nosniff"],"X-Ua-Compatible":["chrome=1"],"Content-Type":["application/json; charset=utf-8"],"Etag":["\"df3685844d4b79efe968a75490019f76\""],"Cache-Control":["max-age=0, private, must-revalidate"],"X-Request-Id":["bf894c87-328a-4c5b-b5ae-c719b0953d6d"],"X-Runtime":["0.298340"],"Transfer-Encoding":["chunked"]},"body":{"encoding":"UTF-8","base64_string":"eyJjYXRlZ29yeSI6eyJ0aXRsZSI6IkFyZ2VudCIsImNvdW50cnlfY29kZSI6\nIkZSIiwiaHVtYW5fZW5kcG9pbnQiOiIvYXJnZW50IiwiaWQiOiI0ZTRiZGE2\nOTA2OGUyYzViMGU5ODAzMDAiLCJtYWNoaW5lX2VuZHBvaW50IjoiL2NhdGVn\nb3JpZXMvNGU0YmRhNjkwNjhlMmM1YjBlOTgwMzAwIiwicGVybWFsaW5rIjoi\nZnItYXJnZW50Iiwic2VnbWVudCI6ImFyZ2VudCJ9fQ==\n"},"http_version":null},"recorded_at":"Wed, 09 Apr 2014 20:49:52 GMT"}],"recorded_with":"VCR 2.8.0"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"post","uri":"http://api.dev/v2/categories","body":{"encoding":"UTF-8","base64_string":"eyJhcGlfa2V5IjoiYzMzZjI0Y3IybDI2bG1hOXVlNDIxMGxwIiwiYXBpX3Zl\ncnNpb24iOiJ2MiIsImFwaV9lbmRwb2ludCI6Imh0dHA6Ly9hcGkuZGV2Iiwi\nYXV0b19wYWdpbmF0ZSI6bnVsbCwiY29ubmVjdGlvbl9vcHRpb25zIjp7Imhl\nYWRlcnMiOnsiY29udGVudF90eXBlIjoiYXBwbGljYXRpb24vanNvbjsgY2hh\ncnNldD11dGYtOCIsImFjY2VwdCI6ImFwcGxpY2F0aW9uL2pzb247IGNoYXJz\nZXQ9dXRmLTgiLCJ1c2VyX2FnZW50IjoiVHVyYmFLaXQgUnVieSBHZW0gMC4w\nLjMifSwiYnVpbGRlciI6IiM8RmFyYWRheTo6UmFja0J1aWxkZXI6MHgwMDdm\nOTM0YWI5ZDM4OD4ifSwiZGVmYXVsdF9tZWRpYV90eXBlIjoiYXBwbGljYXRp\nb24vanNvbjsgY2hhcnNldD11dGYtOCIsIm1pZGRsZXdhcmUiOiIjPEZhcmFk\nYXk6OlJhY2tCdWlsZGVyOjB4MDA3ZjkzNGFiOWQzODg+IiwicGVyX3BhZ2Ui\nOm51bGwsInVzZXJfYWdlbnQiOiJUdXJiYUtpdCBSdWJ5IEdlbSAwLjAuMyIs\nImNhdGVnb3J5Ijp7InRpdGxlIjoiTXkgdGVzdCBjYXRlZ29yeSIsInVybCI6\nIm15LXRlc3QtY2F0ZWdvcnkiLCJjb3VudHJ5X2NvZGUiOiJGUiJ9fQ==\n"},"headers":{"Content-Type":["application/json; charset=utf-8"],"Accept":["application/json; charset=utf-8"],"User-Agent":["TurbaKit Ruby Gem 0.0.3"],"X-Api-Key":["c33f24cr2l26lma9ue4210lp"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"]}},"response":{"status":{"code":201,"message":"Created"},"headers":{"Date":["Wed, 09 Apr 2014 20:49:53 GMT"],"Status":["201 Created"],"Connection":["close"],"X-Frame-Options":["SAMEORIGIN"],"X-Xss-Protection":["1; mode=block"],"X-Content-Type-Options":["nosniff"],"X-Ua-Compatible":["chrome=1"],"Location":["/categories/5345b2706a6f6604db000000"],"Content-Type":["application/json; charset=utf-8"],"Etag":["\"03c0825fbc67f2d1fa8a2206b71be274\""],"Cache-Control":["max-age=0, private, must-revalidate"],"X-Request-Id":["febb4ae1-0e07-48b8-8e2f-f4ca88e09fcd"],"X-Runtime":["0.136840"],"Transfer-Encoding":["chunked"]},"body":{"encoding":"UTF-8","base64_string":"eyJjYXRlZ29yeSI6eyJ0aXRsZSI6Ik15IHRlc3QgY2F0ZWdvcnkiLCJjb3Vu\ndHJ5X2NvZGUiOiJGUiIsImh1bWFuX2VuZHBvaW50IjoiL215LXRlc3QtY2F0\nZWdvcnkiLCJpZCI6IjUzNDViMjcwNmE2ZjY2MDRkYjAwMDAwMCIsIm1hY2hp\nbmVfZW5kcG9pbnQiOiIvY2F0ZWdvcmllcy81MzQ1YjI3MDZhNmY2NjA0ZGIw\nMDAwMDAiLCJwZXJtYWxpbmsiOiJmci1teS10ZXN0LWNhdGVnb3J5Iiwic2Vn\nbWVudCI6Im15LXRlc3QtY2F0ZWdvcnkifX0=\n"},"http_version":null},"recorded_at":"Wed, 09 Apr 2014 20:49:53 GMT"}],"recorded_with":"VCR 2.8.0"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"post","uri":"http://api.dev/v2/categories","body":{"encoding":"UTF-8","base64_string":"eyJhcGlfa2V5IjoiYzMzZjI0Y3IybDI2bG1hOXVlNDIxMGxwIiwiYXBpX3Zl\ncnNpb24iOiJ2MiIsImFwaV9lbmRwb2ludCI6Imh0dHA6Ly9hcGkuZGV2Iiwi\nYXV0b19wYWdpbmF0ZSI6bnVsbCwiY29ubmVjdGlvbl9vcHRpb25zIjp7Imhl\nYWRlcnMiOnsiY29udGVudF90eXBlIjoiYXBwbGljYXRpb24vanNvbjsgY2hh\ncnNldD11dGYtOCIsImFjY2VwdCI6ImFwcGxpY2F0aW9uL2pzb247IGNoYXJz\nZXQ9dXRmLTgiLCJ1c2VyX2FnZW50IjoiVHVyYmFLaXQgUnVieSBHZW0gMC4w\nLjMifSwiYnVpbGRlciI6IiM8RmFyYWRheTo6UmFja0J1aWxkZXI6MHgwMDdm\nOTM0YWI5ZDM4OD4ifSwiZGVmYXVsdF9tZWRpYV90eXBlIjoiYXBwbGljYXRp\nb24vanNvbjsgY2hhcnNldD11dGYtOCIsIm1pZGRsZXdhcmUiOiIjPEZhcmFk\nYXk6OlJhY2tCdWlsZGVyOjB4MDA3ZjkzNGFiOWQzODg+IiwicGVyX3BhZ2Ui\nOm51bGwsInVzZXJfYWdlbnQiOiJUdXJiYUtpdCBSdWJ5IEdlbSAwLjAuMyIs\nImNhdGVnb3J5Ijp7InRpdGxlIjoiQ2F0IHRlc3QiLCJ1cmwiOiJjYXQtdGVz\ndCIsImNvdW50cnlfY29kZSI6IkZSIn19\n"},"headers":{"Content-Type":["application/json; charset=utf-8"],"Accept":["application/json; charset=utf-8"],"User-Agent":["TurbaKit Ruby Gem 0.0.3"],"X-Api-Key":["c33f24cr2l26lma9ue4210lp"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"]}},"response":{"status":{"code":201,"message":"Created"},"headers":{"Date":["Wed, 09 Apr 2014 20:49:53 GMT"],"Status":["201 Created"],"Connection":["close"],"X-Frame-Options":["SAMEORIGIN"],"X-Xss-Protection":["1; mode=block"],"X-Content-Type-Options":["nosniff"],"X-Ua-Compatible":["chrome=1"],"Location":["/categories/5345b2716a6f6604dc000000"],"Content-Type":["application/json; charset=utf-8"],"Etag":["\"b8ea35029847e82811e83efd451aa6fb\""],"Cache-Control":["max-age=0, private, must-revalidate"],"X-Request-Id":["da8247bb-0063-4f2e-9046-b60677bc9b70"],"X-Runtime":["0.060870"],"Transfer-Encoding":["chunked"]},"body":{"encoding":"UTF-8","base64_string":"eyJjYXRlZ29yeSI6eyJ0aXRsZSI6IkNhdCB0ZXN0IiwiY291bnRyeV9jb2Rl\nIjoiRlIiLCJodW1hbl9lbmRwb2ludCI6Ii9jYXQtdGVzdCIsImlkIjoiNTM0\nNWIyNzE2YTZmNjYwNGRjMDAwMDAwIiwibWFjaGluZV9lbmRwb2ludCI6Ii9j\nYXRlZ29yaWVzLzUzNDViMjcxNmE2ZjY2MDRkYzAwMDAwMCIsInBlcm1hbGlu\nayI6ImZyLWNhdC10ZXN0Iiwic2VnbWVudCI6ImNhdC10ZXN0In19\n"},"http_version":null},"recorded_at":"Wed, 09 Apr 2014 20:49:53 GMT"},{"request":{"method":"delete","uri":"http://api.dev/v2/categories/fr-cat-test","body":{"encoding":"UTF-8","base64_string":"eyJhcGlfa2V5IjoiYzMzZjI0Y3IybDI2bG1hOXVlNDIxMGxwIiwiYXBpX3Zl\ncnNpb24iOiJ2MiIsImFwaV9lbmRwb2ludCI6Imh0dHA6Ly9hcGkuZGV2Iiwi\nYXV0b19wYWdpbmF0ZSI6bnVsbCwiY29ubmVjdGlvbl9vcHRpb25zIjp7Imhl\nYWRlcnMiOnsiY29udGVudF90eXBlIjoiYXBwbGljYXRpb24vanNvbjsgY2hh\ncnNldD11dGYtOCIsImFjY2VwdCI6ImFwcGxpY2F0aW9uL2pzb247IGNoYXJz\nZXQ9dXRmLTgiLCJ1c2VyX2FnZW50IjoiVHVyYmFLaXQgUnVieSBHZW0gMC4w\nLjMifSwiYnVpbGRlciI6IiM8RmFyYWRheTo6UmFja0J1aWxkZXI6MHgwMDdm\nOTM0YWI5ZDM4OD4ifSwiZGVmYXVsdF9tZWRpYV90eXBlIjoiYXBwbGljYXRp\nb24vanNvbjsgY2hhcnNldD11dGYtOCIsIm1pZGRsZXdhcmUiOiIjPEZhcmFk\nYXk6OlJhY2tCdWlsZGVyOjB4MDA3ZjkzNGFiOWQzODg+IiwicGVyX3BhZ2Ui\nOm51bGwsInVzZXJfYWdlbnQiOiJUdXJiYUtpdCBSdWJ5IEdlbSAwLjAuMyJ9\n"},"headers":{"Content-Type":["application/json; charset=utf-8"],"Accept":["application/json; charset=utf-8"],"User-Agent":["TurbaKit Ruby Gem 0.0.3"],"X-Api-Key":["c33f24cr2l26lma9ue4210lp"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"]}},"response":{"status":{"code":204,"message":"No Content"},"headers":{"Date":["Wed, 09 Apr 2014 20:49:53 GMT"],"Status":["204 No Content"],"Connection":["close"],"X-Frame-Options":["SAMEORIGIN"],"X-Xss-Protection":["1; mode=block"],"X-Content-Type-Options":["nosniff"],"X-Ua-Compatible":["chrome=1"],"Cache-Control":["no-cache"],"X-Request-Id":["e2cf8fc4-4b03-44d4-beed-60c7b4a9dce5"],"X-Runtime":["0.026549"]},"body":{"encoding":"UTF-8","base64_string":""},"http_version":null},"recorded_at":"Wed, 09 Apr 2014 20:49:53 GMT"}],"recorded_with":"VCR 2.8.0"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"delete","uri":"http://api.dev/v2/categories/fr-xxxxxx","body":{"encoding":"UTF-8","base64_string":"eyJhcGlfa2V5IjoiYzMzZjI0Y3IybDI2bG1hOXVlNDIxMGxwIiwiYXBpX3Zl\ncnNpb24iOiJ2MiIsImFwaV9lbmRwb2ludCI6Imh0dHA6Ly9hcGkuZGV2Iiwi\nYXV0b19wYWdpbmF0ZSI6bnVsbCwiY29ubmVjdGlvbl9vcHRpb25zIjp7Imhl\nYWRlcnMiOnsiY29udGVudF90eXBlIjoiYXBwbGljYXRpb24vanNvbjsgY2hh\ncnNldD11dGYtOCIsImFjY2VwdCI6ImFwcGxpY2F0aW9uL2pzb247IGNoYXJz\nZXQ9dXRmLTgiLCJ1c2VyX2FnZW50IjoiVHVyYmFLaXQgUnVieSBHZW0gMC4w\nLjMifSwiYnVpbGRlciI6IiM8RmFyYWRheTo6UmFja0J1aWxkZXI6MHgwMDdm\nOTM0YWI5ZDM4OD4ifSwiZGVmYXVsdF9tZWRpYV90eXBlIjoiYXBwbGljYXRp\nb24vanNvbjsgY2hhcnNldD11dGYtOCIsIm1pZGRsZXdhcmUiOiIjPEZhcmFk\nYXk6OlJhY2tCdWlsZGVyOjB4MDA3ZjkzNGFiOWQzODg+IiwicGVyX3BhZ2Ui\nOm51bGwsInVzZXJfYWdlbnQiOiJUdXJiYUtpdCBSdWJ5IEdlbSAwLjAuMyJ9\n"},"headers":{"Content-Type":["application/json; charset=utf-8"],"Accept":["application/json; charset=utf-8"],"User-Agent":["TurbaKit Ruby Gem 0.0.3"],"X-Api-Key":["c33f24cr2l26lma9ue4210lp"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"]}},"response":{"status":{"code":404,"message":"Not Found"},"headers":{"Date":["Wed, 09 Apr 2014 20:49:53 GMT"],"Status":["404 Not Found"],"Connection":["close"],"X-Frame-Options":["SAMEORIGIN"],"X-Xss-Protection":["1; mode=block"],"X-Content-Type-Options":["nosniff"],"X-Ua-Compatible":["chrome=1"],"Content-Type":["application/json; charset=utf-8"],"Cache-Control":["no-cache"],"X-Request-Id":["cdefe9f0-6504-4fd7-97c9-1ec445aae85d"],"X-Runtime":["0.355928"],"Transfer-Encoding":["chunked"]},"body":{"encoding":"ASCII-8BIT","base64_string":"eyJtZXNzYWdlIjoiNDA0IiwiZXJyb3JzIjpbIlNvcnJ5LCBjYW7igJl0IGZp\nbmQgdGhpcyBwYWdlLiJdfQ==\n"},"http_version":null},"recorded_at":"Wed, 09 Apr 2014 20:49:53 GMT"}],"recorded_with":"VCR 2.8.0"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"put","uri":"http://api.dev/v2/categories/4E4BDA6A068E2C5B0EAA0300","body":{"encoding":"UTF-8","base64_string":"eyJhcGlfa2V5IjoiYzMzZjI0Y3IybDI2bG1hOXVlNDIxMGxwIiwiYXBpX3Zl\ncnNpb24iOiJ2MiIsImFwaV9lbmRwb2ludCI6Imh0dHA6Ly9hcGkuZGV2Iiwi\nYXV0b19wYWdpbmF0ZSI6bnVsbCwiY29ubmVjdGlvbl9vcHRpb25zIjp7Imhl\nYWRlcnMiOnsiY29udGVudF90eXBlIjoiYXBwbGljYXRpb24vanNvbjsgY2hh\ncnNldD11dGYtOCIsImFjY2VwdCI6ImFwcGxpY2F0aW9uL2pzb247IGNoYXJz\nZXQ9dXRmLTgiLCJ1c2VyX2FnZW50IjoiVHVyYmFLaXQgUnVieSBHZW0gMC4w\nLjMifSwiYnVpbGRlciI6IiM8RmFyYWRheTo6UmFja0J1aWxkZXI6MHgwMDdm\nOTM0YWI5ZDM4OD4ifSwiZGVmYXVsdF9tZWRpYV90eXBlIjoiYXBwbGljYXRp\nb24vanNvbjsgY2hhcnNldD11dGYtOCIsIm1pZGRsZXdhcmUiOiIjPEZhcmFk\nYXk6OlJhY2tCdWlsZGVyOjB4MDA3ZjkzNGFiOWQzODg+IiwicGVyX3BhZ2Ui\nOm51bGwsInVzZXJfYWdlbnQiOiJUdXJiYUtpdCBSdWJ5IEdlbSAwLjAuMyIs\nImNhdGVnb3J5Ijp7InRpdGxlIjoiVm95YWdpc3RlIn19\n"},"headers":{"Content-Type":["application/json; charset=utf-8"],"Accept":["application/json; charset=utf-8"],"User-Agent":["TurbaKit Ruby Gem 0.0.3"],"X-Api-Key":["c33f24cr2l26lma9ue4210lp"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 09 Apr 2014 20:49:53 GMT"],"Status":["200 OK"],"Connection":["close"],"X-Frame-Options":["SAMEORIGIN"],"X-Xss-Protection":["1; mode=block"],"X-Content-Type-Options":["nosniff"],"X-Ua-Compatible":["chrome=1"],"Content-Type":["application/json; charset=utf-8"],"Etag":["\"36a421959c1ba6390ca06b35596835ef\""],"Cache-Control":["max-age=0, private, must-revalidate"],"X-Request-Id":["bc63404b-7bbd-4c35-8711-c00359186fcb"],"X-Runtime":["0.041325"],"Transfer-Encoding":["chunked"]},"body":{"encoding":"UTF-8","base64_string":"eyJjYXRlZ29yeSI6eyJ0aXRsZSI6IlZveWFnaXN0ZSIsImNvdW50cnlfY29k\nZSI6IkZSIiwiaHVtYW5fZW5kcG9pbnQiOiIvdm95YWdpc3RlcyIsImlkIjoi\nNGU0YmRhNmEwNjhlMmM1YjBlYWEwMzAwIiwibWFjaGluZV9lbmRwb2ludCI6\nIi9jYXRlZ29yaWVzLzRlNGJkYTZhMDY4ZTJjNWIwZWFhMDMwMCIsInBlcm1h\nbGluayI6ImZyLXZveWFnaXN0ZXMiLCJzZWdtZW50Ijoidm95YWdpc3RlcyJ9\nfQ==\n"},"http_version":null},"recorded_at":"Wed, 09 Apr 2014 20:49:53 GMT"}],"recorded_with":"VCR 2.8.0"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"post","uri":"http://api.dev/v2/services/51f22a8b047d55c170000043/contents","body":{"encoding":"UTF-8","base64_string":"eyJjb250ZW50Ijp7InR5cGUiOiJsaW5rIn19\n"},"headers":{"Content-Type":["application/json; charset=utf-8"],"Accept":["application/json; charset=utf-8"],"User-Agent":["TurbaKit Ruby Gem 0.0.3"],"X-Api-Key":["c33f24cr2l26lma9ue4210lp"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"]}},"response":{"status":{"code":201,"message":"Created"},"headers":{"Date":["Wed, 09 Apr 2014 20:49:53 GMT"],"Status":["201 Created"],"Connection":["close"],"X-Frame-Options":["SAMEORIGIN"],"X-Xss-Protection":["1; mode=block"],"X-Content-Type-Options":["nosniff"],"X-Ua-Compatible":["chrome=1"],"Location":["/services/51f22a8b047d55c170000043/contents/5345b2716a6f6604dd000000"],"Content-Type":["application/json; charset=utf-8"],"Etag":["\"57d58fd47f7ac5b8cc909d7b20fc340d\""],"Cache-Control":["max-age=0, private, must-revalidate"],"X-Request-Id":["af5f0c9a-abd8-4fc3-b266-036e8dc8a4e3"],"X-Runtime":["0.029162"],"Transfer-Encoding":["chunked"]},"body":{"encoding":"UTF-8","base64_string":"eyJjb250ZW50Ijp7InR5cGUiOiJsaW5rIiwiaWQiOiI1MzQ1YjI3MTZhNmY2\nNjA0ZGQwMDAwMDAiLCJ3ZWlnaHQiOjAsInRpdGxlIjpudWxsLCJ0ZXh0Ijpu\ndWxsfX0=\n"},"http_version":null},"recorded_at":"Wed, 09 Apr 2014 20:49:53 GMT"}],"recorded_with":"VCR 2.8.0"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"delete","uri":"http://api.dev/v2/services/4E4BDA5B068E2C5B0E570100/contents/4FDA5D46A13BCA7409BD0000","body":{"encoding":"UTF-8","base64_string":"eyJhcGlfa2V5IjoiYzMzZjI0Y3IybDI2bG1hOXVlNDIxMGxwIiwiYXBpX3Zl\ncnNpb24iOiJ2MiIsImFwaV9lbmRwb2ludCI6Imh0dHA6Ly9hcGkuZGV2Iiwi\nYXV0b19wYWdpbmF0ZSI6bnVsbCwiY29ubmVjdGlvbl9vcHRpb25zIjp7Imhl\nYWRlcnMiOnsiY29udGVudF90eXBlIjoiYXBwbGljYXRpb24vanNvbjsgY2hh\ncnNldD11dGYtOCIsImFjY2VwdCI6ImFwcGxpY2F0aW9uL2pzb247IGNoYXJz\nZXQ9dXRmLTgiLCJ1c2VyX2FnZW50IjoiVHVyYmFLaXQgUnVieSBHZW0gMC4w\nLjMifSwiYnVpbGRlciI6IiM8RmFyYWRheTo6UmFja0J1aWxkZXI6MHgwMDdm\nOTM0YWI5ZDM4OD4ifSwiZGVmYXVsdF9tZWRpYV90eXBlIjoiYXBwbGljYXRp\nb24vanNvbjsgY2hhcnNldD11dGYtOCIsIm1pZGRsZXdhcmUiOiIjPEZhcmFk\nYXk6OlJhY2tCdWlsZGVyOjB4MDA3ZjkzNGFiOWQzODg+IiwicGVyX3BhZ2Ui\nOm51bGwsInVzZXJfYWdlbnQiOiJUdXJiYUtpdCBSdWJ5IEdlbSAwLjAuMyJ9\n"},"headers":{"Content-Type":["application/json; charset=utf-8"],"Accept":["application/json; charset=utf-8"],"User-Agent":["TurbaKit Ruby Gem 0.0.3"],"X-Api-Key":["c33f24cr2l26lma9ue4210lp"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"]}},"response":{"status":{"code":204,"message":"No Content"},"headers":{"Date":["Wed, 09 Apr 2014 20:49:53 GMT"],"Status":["204 No Content"],"Connection":["close"],"X-Frame-Options":["SAMEORIGIN"],"X-Xss-Protection":["1; mode=block"],"X-Content-Type-Options":["nosniff"],"X-Ua-Compatible":["chrome=1"],"Cache-Control":["no-cache"],"X-Request-Id":["e041a5bd-eb8e-45c3-ba3a-762f188e225a"],"X-Runtime":["0.019147"]},"body":{"encoding":"UTF-8","base64_string":""},"http_version":null},"recorded_at":"Wed, 09 Apr 2014 20:49:53 GMT"}],"recorded_with":"VCR 2.8.0"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"get","uri":"http://api.dev/v2/services/51f22a8b047d55c170000043/contents/51F2A785E4F57BD62A000004","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"Content-Type":["application/json; charset=utf-8"],"Accept":["application/json; charset=utf-8"],"User-Agent":["TurbaKit Ruby Gem 0.0.3"],"X-Api-Key":["c33f24cr2l26lma9ue4210lp"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 09 Apr 2014 20:49:53 GMT"],"Status":["200 OK"],"Connection":["close"],"X-Frame-Options":["SAMEORIGIN"],"X-Xss-Protection":["1; mode=block"],"X-Content-Type-Options":["nosniff"],"X-Ua-Compatible":["chrome=1"],"Content-Type":["application/json; charset=utf-8"],"Etag":["\"3602a35a04c180211bd2420c8f4c8f9e\""],"Cache-Control":["max-age=0, private, must-revalidate"],"X-Request-Id":["54ea81eb-7d56-41e2-9fb8-c577a747f6df"],"X-Runtime":["0.026768"],"Transfer-Encoding":["chunked"]},"body":{"encoding":"UTF-8","base64_string":"eyJjb250ZW50Ijp7InR5cGUiOiJsaW5rIiwiaWQiOiI1MWYyYTc4NWU0ZjU3\nYmQ2MmEwMDAwMDQiLCJ3ZWlnaHQiOjIsInRpdGxlIjoiIiwidGV4dCI6bnVs\nbH19\n"},"http_version":null},"recorded_at":"Wed, 09 Apr 2014 20:49:53 GMT"}],"recorded_with":"VCR 2.8.0"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"get","uri":"http://api.dev/v2/services/4E4BDA5A068E2C5B0E510100/contents","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"Content-Type":["application/json; charset=utf-8"],"Accept":["application/json; charset=utf-8"],"User-Agent":["TurbaKit Ruby Gem 0.0.3"],"X-Api-Key":["c33f24cr2l26lma9ue4210lp"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 09 Apr 2014 20:49:53 GMT"],"Status":["200 OK"],"Connection":["close"],"X-Frame-Options":["SAMEORIGIN"],"X-Xss-Protection":["1; mode=block"],"X-Content-Type-Options":["nosniff"],"X-Ua-Compatible":["chrome=1"],"Content-Type":["application/json; charset=utf-8"],"Etag":["\"824aa33275d95d6420a57c3224a8320d\""],"Cache-Control":["max-age=0, private, must-revalidate"],"X-Request-Id":["55ef8bdb-7f5c-4fd0-8f3e-9c3244f531a2"],"X-Runtime":["0.028553"],"Transfer-Encoding":["chunked"]},"body":{"encoding":"ASCII-8BIT","base64_string":"eyJjb250ZW50cyI6W3sidHlwZSI6Im51bWJlciIsImlkIjoiNTAyNTEyMzdl\nOWI2Y2M1MjM3MDAwMGRhIiwid2VpZ2h0IjowLCJ0aXRsZSI6Ik51bcOpcm8g\nZGVzIENhdGFjb21iZXMgZGUgUGFyaXMiLCJ0ZXh0IjpudWxsfSx7InR5cGUi\nOiJ0YWJsZSIsImlkIjoiNGZkYTVkNDZhMTNiY2E3NDA5OWIwMDAwIiwid2Vp\nZ2h0IjoxLCJ0aXRsZSI6IkFmZmx1ZW5jZSBhdXggQ2F0YWNvbWJlcyBkZSBQ\nYXJpcyIsInRleHQiOm51bGx9LHsidHlwZSI6InBsYWNlIiwiaWQiOiI1MDI1\nMTJjOWU5YjZjYzUyMzcwMDAwZGYiLCJ3ZWlnaHQiOjIsInRpdGxlIjoiQWRy\nZXNzZSBkZXMgQ2F0YWNvbWJlcyBkZSBQYXJpcyIsInRleHQiOm51bGx9LHsi\ndHlwZSI6ImxpbmsiLCJpZCI6IjUxMmU0ZDY3ZTE0ODc2NDQ5YTAwMDNkYSIs\nIndlaWdodCI6MywidGl0bGUiOiIiLCJ0ZXh0IjpudWxsfV19\n"},"http_version":null},"recorded_at":"Wed, 09 Apr 2014 20:49:53 GMT"}],"recorded_with":"VCR 2.8.0"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"put","uri":"http://api.dev/v2/services/4E4BDA5B068E2C5B0E570100/contents/4FDA5D46A13BCA7409BB0000","body":{"encoding":"UTF-8","base64_string":"eyJjb250ZW50Ijp7ImFwaV9rZXkiOiJjMzNmMjRjcjJsMjZsbWE5dWU0MjEw\nbHAiLCJhcGlfdmVyc2lvbiI6InYyIiwiYXBpX2VuZHBvaW50IjoiaHR0cDov\nL2FwaS5kZXYiLCJhdXRvX3BhZ2luYXRlIjpudWxsLCJjb25uZWN0aW9uX29w\ndGlvbnMiOnsiaGVhZGVycyI6eyJjb250ZW50X3R5cGUiOiJhcHBsaWNhdGlv\nbi9qc29uOyBjaGFyc2V0PXV0Zi04IiwiYWNjZXB0IjoiYXBwbGljYXRpb24v\nanNvbjsgY2hhcnNldD11dGYtOCIsInVzZXJfYWdlbnQiOiJUdXJiYUtpdCBS\ndWJ5IEdlbSAwLjAuMyJ9LCJidWlsZGVyIjoiIzxGYXJhZGF5OjpSYWNrQnVp\nbGRlcjoweDAwN2Y5MzRhYjlkMzg4PiJ9LCJkZWZhdWx0X21lZGlhX3R5cGUi\nOiJhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04IiwibWlkZGxld2Fy\nZSI6IiM8RmFyYWRheTo6UmFja0J1aWxkZXI6MHgwMDdmOTM0YWI5ZDM4OD4i\nLCJwZXJfcGFnZSI6bnVsbCwidXNlcl9hZ2VudCI6IlR1cmJhS2l0IFJ1Ynkg\nR2VtIDAuMC4zIiwiZXh0ZW5kZWRfdGl0bGUiOiJBZmZsdWVuY2UgdGVzdCJ9\nfQ==\n"},"headers":{"Content-Type":["application/json; charset=utf-8"],"Accept":["application/json; charset=utf-8"],"User-Agent":["TurbaKit Ruby Gem 0.0.3"],"X-Api-Key":["c33f24cr2l26lma9ue4210lp"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 09 Apr 2014 20:49:53 GMT"],"Status":["200 OK"],"Connection":["close"],"X-Frame-Options":["SAMEORIGIN"],"X-Xss-Protection":["1; mode=block"],"X-Content-Type-Options":["nosniff"],"X-Ua-Compatible":["chrome=1"],"Content-Type":["application/json; charset=utf-8"],"Etag":["\"5ade7658f1753378a9ec236411ce1ec0\""],"Cache-Control":["max-age=0, private, must-revalidate"],"X-Request-Id":["0e78b7f6-d211-49b4-98d4-08c321725512"],"X-Runtime":["0.020487"],"Transfer-Encoding":["chunked"]},"body":{"encoding":"UTF-8","base64_string":"eyJjb250ZW50Ijp7InR5cGUiOiJ0YWJsZSIsImlkIjoiNGZkYTVkNDZhMTNi\nY2E3NDA5YmIwMDAwIiwid2VpZ2h0IjowLCJ0aXRsZSI6IkFmZmx1ZW5jZSB0\nZXN0IiwidGV4dCI6bnVsbH19\n"},"http_version":null},"recorded_at":"Wed, 09 Apr 2014 20:49:53 GMT"}],"recorded_with":"VCR 2.8.0"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"get","uri":"http://api.dev/v2/countries","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"Content-Type":["application/json; charset=utf-8"],"Accept":["application/json; charset=utf-8"],"User-Agent":["TurbaKit Ruby Gem 0.0.3"],"X-Api-Key":["c33f24cr2l26lma9ue4210lp"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 09 Apr 2014 20:49:53 GMT"],"Status":["200 OK"],"Connection":["close"],"X-Frame-Options":["SAMEORIGIN"],"X-Xss-Protection":["1; mode=block"],"X-Content-Type-Options":["nosniff"],"X-Ua-Compatible":["chrome=1"],"Content-Type":["application/json; charset=utf-8"],"Etag":["\"78c4022db37f85e240a418e49bd411ad\""],"Cache-Control":["max-age=0, private, must-revalidate"],"X-Request-Id":["7ec6cead-4595-4ddb-863d-1b576d10df3e"],"X-Runtime":["0.024878"],"Transfer-Encoding":["chunked"]},"body":{"encoding":"UTF-8","base64_string":"eyJjb3VudHJpZXMiOlt7ImlkIjoxLCJjb3VudHJ5X2NvZGUiOiJGUiIsIm5h\nbWUiOiJGcmFuY2UiLCJzZXJ2aWNlc19jb3VudCI6MjEwMiwib3JnYW5pc21l\nc19jb3VudCI6Nzc5LCJjYXRlZ29yaWVzX2NvdW50IjoyMH0seyJpZCI6Miwi\nY291bnRyeV9jb2RlIjoiREUiLCJuYW1lIjoiRGV1dHNjaGxhbmQiLCJzZXJ2\naWNlc19jb3VudCI6MTg3LCJvcmdhbmlzbWVzX2NvdW50Ijo5OCwiY2F0ZWdv\ncmllc19jb3VudCI6MTF9LHsiaWQiOjMsImNvdW50cnlfY29kZSI6IkdCIiwi\nbmFtZSI6IkdyZWF0LUJyaXRhaW4iLCJzZXJ2aWNlc19jb3VudCI6MjcyLCJv\ncmdhbmlzbWVzX2NvdW50IjoxNDksImNhdGVnb3JpZXNfY291bnQiOjE0fSx7\nImlkIjo0LCJjb3VudHJ5X2NvZGUiOiJCUiIsIm5hbWUiOiJCcmF6aWwiLCJz\nZXJ2aWNlc19jb3VudCI6MjgxLCJvcmdhbmlzbWVzX2NvdW50IjoxMzgsImNh\ndGVnb3JpZXNfY291bnQiOjEzfSx7ImlkIjo1LCJjb3VudHJ5X2NvZGUiOiJS\nVSIsIm5hbWUiOiJSdXNzaWEiLCJzZXJ2aWNlc19jb3VudCI6MSwib3JnYW5p\nc21lc19jb3VudCI6MSwiY2F0ZWdvcmllc19jb3VudCI6MX1dfQ==\n"},"http_version":null},"recorded_at":"Wed, 09 Apr 2014 20:49:53 GMT"}],"recorded_with":"VCR 2.8.0"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"get","uri":"http://api.dev/v2/countries","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"Content-Type":["application/json; charset=utf-8"],"Accept":["application/json; charset=utf-8"],"User-Agent":["TurbaKit Ruby Gem 0.0.3"],"X-Api-Key":["c33f24cr2l26lma9ue4210lp"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 09 Apr 2014 20:49:53 GMT"],"Status":["200 OK"],"Connection":["close"],"X-Frame-Options":["SAMEORIGIN"],"X-Xss-Protection":["1; mode=block"],"X-Content-Type-Options":["nosniff"],"X-Ua-Compatible":["chrome=1"],"Content-Type":["application/json; charset=utf-8"],"Etag":["\"78c4022db37f85e240a418e49bd411ad\""],"Cache-Control":["max-age=0, private, must-revalidate"],"X-Request-Id":["f36fd89b-eecf-4332-93a3-dfa6a122367d"],"X-Runtime":["0.028278"],"Transfer-Encoding":["chunked"]},"body":{"encoding":"UTF-8","base64_string":"eyJjb3VudHJpZXMiOlt7ImlkIjoxLCJjb3VudHJ5X2NvZGUiOiJGUiIsIm5h\nbWUiOiJGcmFuY2UiLCJzZXJ2aWNlc19jb3VudCI6MjEwMiwib3JnYW5pc21l\nc19jb3VudCI6Nzc5LCJjYXRlZ29yaWVzX2NvdW50IjoyMH0seyJpZCI6Miwi\nY291bnRyeV9jb2RlIjoiREUiLCJuYW1lIjoiRGV1dHNjaGxhbmQiLCJzZXJ2\naWNlc19jb3VudCI6MTg3LCJvcmdhbmlzbWVzX2NvdW50Ijo5OCwiY2F0ZWdv\ncmllc19jb3VudCI6MTF9LHsiaWQiOjMsImNvdW50cnlfY29kZSI6IkdCIiwi\nbmFtZSI6IkdyZWF0LUJyaXRhaW4iLCJzZXJ2aWNlc19jb3VudCI6MjcyLCJv\ncmdhbmlzbWVzX2NvdW50IjoxNDksImNhdGVnb3JpZXNfY291bnQiOjE0fSx7\nImlkIjo0LCJjb3VudHJ5X2NvZGUiOiJCUiIsIm5hbWUiOiJCcmF6aWwiLCJz\nZXJ2aWNlc19jb3VudCI6MjgxLCJvcmdhbmlzbWVzX2NvdW50IjoxMzgsImNh\ndGVnb3JpZXNfY291bnQiOjEzfSx7ImlkIjo1LCJjb3VudHJ5X2NvZGUiOiJS\nVSIsIm5hbWUiOiJSdXNzaWEiLCJzZXJ2aWNlc19jb3VudCI6MSwib3JnYW5p\nc21lc19jb3VudCI6MSwiY2F0ZWdvcmllc19jb3VudCI6MX1dfQ==\n"},"http_version":null},"recorded_at":"Wed, 09 Apr 2014 20:49:53 GMT"}],"recorded_with":"VCR 2.8.0"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"post","uri":"http://api.dev/v2/services/4E4BDA5B068E2C5B0EBB0100/crowds","body":{"encoding":"UTF-8","base64_string":"eyJjcm93ZCI6eyJ0aXRsZSI6IkFmZmx1ZW5jZSB0ZXN0IiwidHlwZSI6Indl\nZWtseSIsInNvdXJjZSI6IlNvdXJjZSB0ZXN0Iiwicm93cyI6W1t7InN0YXJ0\nIjoiMDc6MDAiLCJlbmQiOiIxMjowMCIsIm1vbiI6MywidHVlIjoxLCJ3ZWQi\nOjEsInRodSI6MSwiZnJpIjoxLCJzYXQiOjEsInN1biI6NiwiY2xvc2VkIjo2\nfV0sW3sic3RhcnQiOiIxMjowMCIsImVuZCI6IjE3OjMwIiwibW9uIjoxLCJ0\ndWUiOjEsIndlZCI6MSwidGh1IjoxLCJmcmkiOjEsInNhdCI6MSwic3VuIjo2\nLCJjbG9zZWQiOjZ9XV0sImxlZ2VuZHMiOlt7InRleHQiOiJQbHVzIGRlIDEw\nIG1pbnV0ZXMiLCJjb2xvciI6MX0seyJ0ZXh0IjoiIiwiY29sb3IiOjJ9LHsi\ndGV4dCI6IkZhaWJsZSIsImNvbG9yIjozfSx7InRleHQiOiIiLCJjb2xvciI6\nNH0seyJ0ZXh0IjoiIiwiY29sb3IiOjV9LHsidGV4dCI6IkZlcm3DqSIsImNv\nbG9yIjo2fSx7InRleHQiOiIiLCJjb2xvciI6N30seyJ0ZXh0IjoiIiwiY29s\nb3IiOjh9XX19\n"},"headers":{"Content-Type":["application/json; charset=utf-8"],"Accept":["application/json; charset=utf-8"],"User-Agent":["TurbaKit Ruby Gem 0.0.3"],"X-Api-Key":["c33f24cr2l26lma9ue4210lp"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"]}},"response":{"status":{"code":201,"message":"Created"},"headers":{"Date":["Wed, 09 Apr 2014 20:49:54 GMT"],"Status":["201 Created"],"Connection":["close"],"X-Frame-Options":["SAMEORIGIN"],"X-Xss-Protection":["1; mode=block"],"X-Content-Type-Options":["nosniff"],"X-Ua-Compatible":["chrome=1"],"Location":["/services/4E4BDA5B068E2C5B0EBB0100/crowds/5345b2726a6f6604dc010000"],"Content-Type":["application/json; charset=utf-8"],"Etag":["\"8273c7edca30f160c5b41de1b36a2c55\""],"Cache-Control":["max-age=0, private, must-revalidate"],"X-Request-Id":["ea92834f-fbee-4a27-a75f-44684b631ece"],"X-Runtime":["0.035248"],"Transfer-Encoding":["chunked"]},"body":{"encoding":"ASCII-8BIT","base64_string":"eyJjcm93ZCI6eyJ0eXBlIjoid2Vla2x5Iiwicm93cyI6W1t7InN0YXJ0Ijoi\nMDc6MDAiLCJlbmQiOiIxMjowMCIsIm1vbiI6MywidHVlIjoxLCJ3ZWQiOjEs\nInRodSI6MSwiZnJpIjoxLCJzYXQiOjEsInN1biI6NiwiY2xvc2VkIjo2fV0s\nW3sic3RhcnQiOiIxMjowMCIsImVuZCI6IjE3OjMwIiwibW9uIjoxLCJ0dWUi\nOjEsIndlZCI6MSwidGh1IjoxLCJmcmkiOjEsInNhdCI6MSwic3VuIjo2LCJj\nbG9zZWQiOjZ9XV0sInRpdGxlIjoiQWZmbHVlbmNlIHRlc3QiLCJzb3VyY2Ui\nOiJTb3VyY2UgdGVzdCIsImxlZ2VuZHMiOlt7ImNvbG9yIjoiMSIsInRleHQi\nOiIifSx7ImNvbG9yIjoiMiIsInRleHQiOiIifSx7ImNvbG9yIjoiMyIsInRl\neHQiOiIifSx7ImNvbG9yIjoiNCIsInRleHQiOiIifSx7ImNvbG9yIjoiNSIs\nInRleHQiOiIifSx7ImNvbG9yIjoiNiIsInRleHQiOiIifSx7ImNvbG9yIjoi\nNyIsInRleHQiOiIifSx7ImNvbG9yIjoiOCIsInRleHQiOiIifV0sImlkIjoi\nNTM0NWIyNzI2YTZmNjYwNGRjMDEwMDAwIiwic3RhcnQiOiIyMDE0LTA0LTA5\nIiwiZW5kIjoiIiwid2VpZ2h0IjowLCJvcGVuZWQiOmZhbHNlLCJ2aXNpYmxl\nIjp0cnVlLCJjdXJyZW50Ijp7ImNvbCI6Miwicm93IjotMiwiY29sb3IiOiI2\nIiwibGVnZW5kIjoiRmVybcOpIiwic3RhcnQiOiIxNzozMCIsImVuZCI6IjA3\nOjAwIn0sIm5leHQiOlt7ImNvbCI6Miwicm93IjoxLCJjb2xvciI6MSwibGVn\nZW5kIjpudWxsLCJzdGFydCI6IjEyOjAwIiwiZW5kIjoiMTc6MzAifSx7ImNv\nbCI6Miwicm93IjotMiwiY29sb3IiOiI2IiwibGVnZW5kIjoiRmVybcOpIiwi\nc3RhcnQiOiIxNzozMCIsImVuZCI6IjA3OjAwIn0seyJjb2wiOjMsInJvdyI6\nMCwiY29sb3IiOjEsImxlZ2VuZCI6bnVsbCwic3RhcnQiOiIwNzowMCIsImVu\nZCI6IjEyOjAwIn1dfX0=\n"},"http_version":null},"recorded_at":"Wed, 09 Apr 2014 20:49:54 GMT"}],"recorded_with":"VCR 2.8.0"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"delete","uri":"http://api.dev/v2/services/4E4BDA5B068E2C5B0EC40100/crowds/4FDA5D46A13BCA7409250300","body":{"encoding":"UTF-8","base64_string":"eyJhcGlfa2V5IjoiYzMzZjI0Y3IybDI2bG1hOXVlNDIxMGxwIiwiYXBpX3Zl\ncnNpb24iOiJ2MiIsImFwaV9lbmRwb2ludCI6Imh0dHA6Ly9hcGkuZGV2Iiwi\nYXV0b19wYWdpbmF0ZSI6bnVsbCwiY29ubmVjdGlvbl9vcHRpb25zIjp7Imhl\nYWRlcnMiOnsiY29udGVudF90eXBlIjoiYXBwbGljYXRpb24vanNvbjsgY2hh\ncnNldD11dGYtOCIsImFjY2VwdCI6ImFwcGxpY2F0aW9uL2pzb247IGNoYXJz\nZXQ9dXRmLTgiLCJ1c2VyX2FnZW50IjoiVHVyYmFLaXQgUnVieSBHZW0gMC4w\nLjMifSwiYnVpbGRlciI6IiM8RmFyYWRheTo6UmFja0J1aWxkZXI6MHgwMDdm\nOTM0YWI5ZDM4OD4ifSwiZGVmYXVsdF9tZWRpYV90eXBlIjoiYXBwbGljYXRp\nb24vanNvbjsgY2hhcnNldD11dGYtOCIsIm1pZGRsZXdhcmUiOiIjPEZhcmFk\nYXk6OlJhY2tCdWlsZGVyOjB4MDA3ZjkzNGFiOWQzODg+IiwicGVyX3BhZ2Ui\nOm51bGwsInVzZXJfYWdlbnQiOiJUdXJiYUtpdCBSdWJ5IEdlbSAwLjAuMyJ9\n"},"headers":{"Content-Type":["application/json; charset=utf-8"],"Accept":["application/json; charset=utf-8"],"User-Agent":["TurbaKit Ruby Gem 0.0.3"],"X-Api-Key":["c33f24cr2l26lma9ue4210lp"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"]}},"response":{"status":{"code":204,"message":"No Content"},"headers":{"Date":["Wed, 09 Apr 2014 20:49:54 GMT"],"Status":["204 No Content"],"Connection":["close"],"X-Frame-Options":["SAMEORIGIN"],"X-Xss-Protection":["1; mode=block"],"X-Content-Type-Options":["nosniff"],"X-Ua-Compatible":["chrome=1"],"Cache-Control":["no-cache"],"X-Request-Id":["7884e3bc-5c97-4e2a-bd97-9e4f9626317a"],"X-Runtime":["0.025434"]},"body":{"encoding":"UTF-8","base64_string":""},"http_version":null},"recorded_at":"Wed, 09 Apr 2014 20:49:54 GMT"}],"recorded_with":"VCR 2.8.0"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"get","uri":"http://api.dev/v2/services/4E4BDA5B068E2C5B0EBC0100/crowds/4FDA5D46A13BCA7409090300","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"Content-Type":["application/json; charset=utf-8"],"Accept":["application/json; charset=utf-8"],"User-Agent":["TurbaKit Ruby Gem 0.0.3"],"X-Api-Key":["c33f24cr2l26lma9ue4210lp"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 09 Apr 2014 20:49:53 GMT"],"Status":["200 OK"],"Connection":["close"],"X-Frame-Options":["SAMEORIGIN"],"X-Xss-Protection":["1; mode=block"],"X-Content-Type-Options":["nosniff"],"X-Ua-Compatible":["chrome=1"],"Content-Type":["application/json; charset=utf-8"],"Etag":["\"54b8f4722c8ea6b2cbb0318b8babf619\""],"Cache-Control":["max-age=0, private, must-revalidate"],"X-Request-Id":["657aa524-6001-4ad9-b3a5-788d0e7beaaf"],"X-Runtime":["0.025559"],"Transfer-Encoding":["chunked"]},"body":{"encoding":"ASCII-8BIT","base64_string":"eyJjcm93ZCI6eyJ0eXBlIjoid2Vla2x5Iiwicm93cyI6W1t7InN0YXJ0Ijoi\nMDg6MzAiLCJlbmQiOiIxMDowMCIsIm1vbiI6IjMiLCJ0dWUiOiIyIiwid2Vk\nIjoiMyIsInRodSI6IjIiLCJmcmkiOiI0Iiwic2F0IjoiNiIsInN1biI6IjYi\nLCJjbG9zZWQiOiI2In1dLFt7InN0YXJ0IjoiMTA6MDAiLCJlbmQiOiIxMTow\nMCIsIm1vbiI6IjMiLCJ0dWUiOiIxIiwid2VkIjoiMyIsInRodSI6IjEiLCJm\ncmkiOiI0Iiwic2F0IjoiNiIsInN1biI6IjYiLCJjbG9zZWQiOiI2In1dLFt7\nInN0YXJ0IjoiMTE6MDAiLCJlbmQiOiIxMjowMCIsIm1vbiI6IjIiLCJ0dWUi\nOiIxIiwid2VkIjoiMiIsInRodSI6IjEiLCJmcmkiOiIzIiwic2F0IjoiNiIs\nInN1biI6IjYiLCJjbG9zZWQiOiI2In1dLFt7InN0YXJ0IjoiMTI6MDAiLCJl\nbmQiOiIxMzozMCIsIm1vbiI6IjYiLCJ0dWUiOiI2Iiwid2VkIjoiNiIsInRo\ndSI6IjYiLCJmcmkiOiI2Iiwic2F0IjoiNiIsInN1biI6IjYiLCJjbG9zZWQi\nOiI2In1dLFt7InN0YXJ0IjoiMTM6MzAiLCJlbmQiOiIxNDowMCIsIm1vbiI6\nIjEiLCJ0dWUiOiIxIiwid2VkIjoiMiIsInRodSI6IjEiLCJmcmkiOiIzIiwi\nc2F0IjoiNiIsInN1biI6IjYiLCJjbG9zZWQiOiI2In1dLFt7InN0YXJ0Ijoi\nMTQ6MDAiLCJlbmQiOiIxNjozMCIsIm1vbiI6IjMiLCJ0dWUiOiIyIiwid2Vk\nIjoiMyIsInRodSI6IjIiLCJmcmkiOiI0Iiwic2F0IjoiNiIsInN1biI6IjYi\nLCJjbG9zZWQiOiI2In1dXSwidGl0bGUiOiJBZmZsdWVuY2UiLCJzb3VyY2Ui\nOiJQcsOpZmVjdHVyZSBkZSBsJ09pc2UiLCJsZWdlbmRzIjpbeyJjb2xvciI6\nIjEiLCJ0ZXh0IjoiVHLDqHMgZmFpYmxlIn0seyJjb2xvciI6IjIiLCJ0ZXh0\nIjoiRmFpYmxlIn0seyJjb2xvciI6IjMiLCJ0ZXh0IjoiTW95ZW5uZSJ9LHsi\nY29sb3IiOiI0IiwidGV4dCI6IkZvcnRlIn0seyJjb2xvciI6IjUiLCJ0ZXh0\nIjoiIn0seyJjb2xvciI6IjYiLCJ0ZXh0IjoiRmVybcOpIn0seyJjb2xvciI6\nIjciLCJ0ZXh0IjoiIn0seyJjb2xvciI6IjgiLCJ0ZXh0IjoiIn1dLCJpZCI6\nIjRmZGE1ZDQ2YTEzYmNhNzQwOTA5MDMwMCIsInN0YXJ0IjoiMjAxMi0wMi0y\nOSIsImVuZCI6IiIsIndlaWdodCI6MCwib3BlbmVkIjpmYWxzZSwidmlzaWJs\nZSI6dHJ1ZSwiY3VycmVudCI6eyJjb2wiOjIsInJvdyI6LTIsImNvbG9yIjoi\nNiIsImxlZ2VuZCI6IkZlcm3DqSIsInN0YXJ0IjoiMTY6MzAiLCJlbmQiOiIw\nODozMCJ9LCJuZXh0IjpbeyJjb2wiOjIsInJvdyI6NSwiY29sb3IiOiIzIiwi\nbGVnZW5kIjoiTW95ZW5uZSIsInN0YXJ0IjoiMTQ6MDAiLCJlbmQiOiIxNjoz\nMCJ9LHsiY29sIjoyLCJyb3ciOi0yLCJjb2xvciI6IjYiLCJsZWdlbmQiOiJG\nZXJtw6kiLCJzdGFydCI6IjE2OjMwIiwiZW5kIjoiMDg6MzAifSx7ImNvbCI6\nMywicm93IjowLCJjb2xvciI6IjIiLCJsZWdlbmQiOiJGYWlibGUiLCJzdGFy\ndCI6IjA4OjMwIiwiZW5kIjoiMTA6MDAifV19fQ==\n"},"http_version":null},"recorded_at":"Wed, 09 Apr 2014 20:49:53 GMT"}],"recorded_with":"VCR 2.8.0"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"get","uri":"http://api.dev/v2/services/4E4BDA5B068E2C5B0EBC0100/crowds","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"Content-Type":["application/json; charset=utf-8"],"Accept":["application/json; charset=utf-8"],"User-Agent":["TurbaKit Ruby Gem 0.0.3"],"X-Api-Key":["c33f24cr2l26lma9ue4210lp"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 09 Apr 2014 20:49:54 GMT"],"Status":["200 OK"],"Connection":["close"],"X-Frame-Options":["SAMEORIGIN"],"X-Xss-Protection":["1; mode=block"],"X-Content-Type-Options":["nosniff"],"X-Ua-Compatible":["chrome=1"],"Content-Type":["application/json; charset=utf-8"],"Etag":["\"10973a76d953f1d95c814715f401cefb\""],"Cache-Control":["max-age=0, private, must-revalidate"],"X-Request-Id":["3ad1ad01-aad6-4e4d-8c67-6b6b5416bb0c"],"X-Runtime":["0.030839"],"Transfer-Encoding":["chunked"]},"body":{"encoding":"ASCII-8BIT","base64_string":"eyJjcm93ZHMiOlt7InR5cGUiOiJ3ZWVrbHkiLCJyb3dzIjpbW3sic3RhcnQi\nOiIwODozMCIsImVuZCI6IjEwOjAwIiwibW9uIjoiMyIsInR1ZSI6IjIiLCJ3\nZWQiOiIzIiwidGh1IjoiMiIsImZyaSI6IjQiLCJzYXQiOiI2Iiwic3VuIjoi\nNiIsImNsb3NlZCI6IjYifV0sW3sic3RhcnQiOiIxMDowMCIsImVuZCI6IjEx\nOjAwIiwibW9uIjoiMyIsInR1ZSI6IjEiLCJ3ZWQiOiIzIiwidGh1IjoiMSIs\nImZyaSI6IjQiLCJzYXQiOiI2Iiwic3VuIjoiNiIsImNsb3NlZCI6IjYifV0s\nW3sic3RhcnQiOiIxMTowMCIsImVuZCI6IjEyOjAwIiwibW9uIjoiMiIsInR1\nZSI6IjEiLCJ3ZWQiOiIyIiwidGh1IjoiMSIsImZyaSI6IjMiLCJzYXQiOiI2\nIiwic3VuIjoiNiIsImNsb3NlZCI6IjYifV0sW3sic3RhcnQiOiIxMjowMCIs\nImVuZCI6IjEzOjMwIiwibW9uIjoiNiIsInR1ZSI6IjYiLCJ3ZWQiOiI2Iiwi\ndGh1IjoiNiIsImZyaSI6IjYiLCJzYXQiOiI2Iiwic3VuIjoiNiIsImNsb3Nl\nZCI6IjYifV0sW3sic3RhcnQiOiIxMzozMCIsImVuZCI6IjE0OjAwIiwibW9u\nIjoiMSIsInR1ZSI6IjEiLCJ3ZWQiOiIyIiwidGh1IjoiMSIsImZyaSI6IjMi\nLCJzYXQiOiI2Iiwic3VuIjoiNiIsImNsb3NlZCI6IjYifV0sW3sic3RhcnQi\nOiIxNDowMCIsImVuZCI6IjE2OjMwIiwibW9uIjoiMyIsInR1ZSI6IjIiLCJ3\nZWQiOiIzIiwidGh1IjoiMiIsImZyaSI6IjQiLCJzYXQiOiI2Iiwic3VuIjoi\nNiIsImNsb3NlZCI6IjYifV1dLCJ0aXRsZSI6IkFmZmx1ZW5jZSIsInNvdXJj\nZSI6IlByw6lmZWN0dXJlIGRlIGwnT2lzZSIsImxlZ2VuZHMiOlt7ImNvbG9y\nIjoiMSIsInRleHQiOiJUcsOocyBmYWlibGUifSx7ImNvbG9yIjoiMiIsInRl\neHQiOiJGYWlibGUifSx7ImNvbG9yIjoiMyIsInRleHQiOiJNb3llbm5lIn0s\neyJjb2xvciI6IjQiLCJ0ZXh0IjoiRm9ydGUifSx7ImNvbG9yIjoiNSIsInRl\neHQiOiIifSx7ImNvbG9yIjoiNiIsInRleHQiOiJGZXJtw6kifSx7ImNvbG9y\nIjoiNyIsInRleHQiOiIifSx7ImNvbG9yIjoiOCIsInRleHQiOiIifV0sImlk\nIjoiNGZkYTVkNDZhMTNiY2E3NDA5MDkwMzAwIiwic3RhcnQiOiIyMDEyLTAy\nLTI5IiwiZW5kIjoiIiwid2VpZ2h0IjowLCJvcGVuZWQiOmZhbHNlLCJ2aXNp\nYmxlIjp0cnVlLCJjdXJyZW50Ijp7ImNvbCI6Miwicm93IjotMiwiY29sb3Ii\nOiI2IiwibGVnZW5kIjoiRmVybcOpIiwic3RhcnQiOiIxNjozMCIsImVuZCI6\nIjA4OjMwIn0sIm5leHQiOlt7ImNvbCI6Miwicm93Ijo1LCJjb2xvciI6IjMi\nLCJsZWdlbmQiOiJNb3llbm5lIiwic3RhcnQiOiIxNDowMCIsImVuZCI6IjE2\nOjMwIn0seyJjb2wiOjIsInJvdyI6LTIsImNvbG9yIjoiNiIsImxlZ2VuZCI6\nIkZlcm3DqSIsInN0YXJ0IjoiMTY6MzAiLCJlbmQiOiIwODozMCJ9LHsiY29s\nIjozLCJyb3ciOjAsImNvbG9yIjoiMiIsImxlZ2VuZCI6IkZhaWJsZSIsInN0\nYXJ0IjoiMDg6MzAiLCJlbmQiOiIxMDowMCJ9XX1dfQ==\n"},"http_version":null},"recorded_at":"Wed, 09 Apr 2014 20:49:54 GMT"}],"recorded_with":"VCR 2.8.0"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"put","uri":"http://api.dev/v2/services/4E4BDA5B068E2C5B0EC00100/crowds/4FDA5D46A13BCA7409100300","body":{"encoding":"UTF-8","base64_string":"eyJjcm93ZCI6eyJhcGlfa2V5IjoiYzMzZjI0Y3IybDI2bG1hOXVlNDIxMGxw\nIiwiYXBpX3ZlcnNpb24iOiJ2MiIsImFwaV9lbmRwb2ludCI6Imh0dHA6Ly9h\ncGkuZGV2IiwiYXV0b19wYWdpbmF0ZSI6bnVsbCwiY29ubmVjdGlvbl9vcHRp\nb25zIjp7ImhlYWRlcnMiOnsiY29udGVudF90eXBlIjoiYXBwbGljYXRpb24v\nanNvbjsgY2hhcnNldD11dGYtOCIsImFjY2VwdCI6ImFwcGxpY2F0aW9uL2pz\nb247IGNoYXJzZXQ9dXRmLTgiLCJ1c2VyX2FnZW50IjoiVHVyYmFLaXQgUnVi\neSBHZW0gMC4wLjMifSwiYnVpbGRlciI6IiM8RmFyYWRheTo6UmFja0J1aWxk\nZXI6MHgwMDdmOTM0YWI5ZDM4OD4ifSwiZGVmYXVsdF9tZWRpYV90eXBlIjoi\nYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCIsIm1pZGRsZXdhcmUi\nOiIjPEZhcmFkYXk6OlJhY2tCdWlsZGVyOjB4MDA3ZjkzNGFiOWQzODg+Iiwi\ncGVyX3BhZ2UiOm51bGwsInVzZXJfYWdlbnQiOiJUdXJiYUtpdCBSdWJ5IEdl\nbSAwLjAuMyIsInRpdGxlIjoiQWZmbHVlbmNlIHRlc3QifX0=\n"},"headers":{"Content-Type":["application/json; charset=utf-8"],"Accept":["application/json; charset=utf-8"],"User-Agent":["TurbaKit Ruby Gem 0.0.3"],"X-Api-Key":["c33f24cr2l26lma9ue4210lp"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 09 Apr 2014 20:49:54 GMT"],"Status":["200 OK"],"Connection":["close"],"X-Frame-Options":["SAMEORIGIN"],"X-Xss-Protection":["1; mode=block"],"X-Content-Type-Options":["nosniff"],"X-Ua-Compatible":["chrome=1"],"Content-Type":["application/json; charset=utf-8"],"Etag":["\"355422d4aed3b741741bb61bad27b772\""],"Cache-Control":["max-age=0, private, must-revalidate"],"X-Request-Id":["27ced87f-bbc8-4463-8846-235b095e3a20"],"X-Runtime":["0.026798"],"Transfer-Encoding":["chunked"]},"body":{"encoding":"ASCII-8BIT","base64_string":"eyJjcm93ZCI6eyJ0eXBlIjoid2Vla2x5Iiwicm93cyI6W1t7InN0YXJ0Ijoi\nMDg6MzAiLCJlbmQiOiIxMDowMCIsIm1vbiI6IjMiLCJ0dWUiOiIyIiwid2Vk\nIjoiMyIsInRodSI6IjIiLCJmcmkiOiIxIiwic2F0IjoiNiIsInN1biI6IjYi\nLCJjbG9zZWQiOiI2In1dLFt7InN0YXJ0IjoiMTA6MDAiLCJlbmQiOiIxMTow\nMCIsIm1vbiI6IjQiLCJ0dWUiOiIzIiwid2VkIjoiNCIsInRodSI6IjMiLCJm\ncmkiOiIyIiwic2F0IjoiNiIsInN1biI6IjYiLCJjbG9zZWQiOiI2In1dLFt7\nInN0YXJ0IjoiMTE6MDAiLCJlbmQiOiIxMTozMCIsIm1vbiI6IjQiLCJ0dWUi\nOiI0Iiwid2VkIjoiNCIsInRodSI6IjQiLCJmcmkiOiIzIiwic2F0IjoiNiIs\nInN1biI6IjYiLCJjbG9zZWQiOiI2In1dLFt7InN0YXJ0IjoiMTE6MzAiLCJl\nbmQiOiIxMzozMCIsIm1vbiI6IjYiLCJ0dWUiOiI2Iiwid2VkIjoiNiIsInRo\ndSI6IjYiLCJmcmkiOiI2Iiwic2F0IjoiNiIsInN1biI6IjYiLCJjbG9zZWQi\nOiI2In1dLFt7InN0YXJ0IjoiMTM6MzAiLCJlbmQiOiIxNTowMCIsIm1vbiI6\nIjIiLCJ0dWUiOiIxIiwid2VkIjoiMiIsInRodSI6IjEiLCJmcmkiOiIxIiwi\nc2F0IjoiNiIsInN1biI6IjYiLCJjbG9zZWQiOiI2In1dLFt7InN0YXJ0Ijoi\nMTU6MDAiLCJlbmQiOiIxNjowMCIsIm1vbiI6IjMiLCJ0dWUiOiIyIiwid2Vk\nIjoiMyIsInRodSI6IjIiLCJmcmkiOiIxIiwic2F0IjoiNiIsInN1biI6IjYi\nLCJjbG9zZWQiOiI2In1dXSwidGl0bGUiOiJBZmZsdWVuY2UgdGVzdCIsInNv\ndXJjZSI6IlByw6lmZWN0dXJlIGRlIGwnT2lzZSIsImxlZ2VuZHMiOlt7ImNv\nbG9yIjoiMSIsInRleHQiOiJUcsOocyBmYWlibGUifSx7ImNvbG9yIjoiMiIs\nInRleHQiOiJGYWlibGUifSx7ImNvbG9yIjoiMyIsInRleHQiOiJNb3llbm5l\nIn0seyJjb2xvciI6IjQiLCJ0ZXh0IjoiRm9ydGUifSx7ImNvbG9yIjoiNSIs\nInRleHQiOiIifSx7ImNvbG9yIjoiNiIsInRleHQiOiJGZXJtw6kifSx7ImNv\nbG9yIjoiNyIsInRleHQiOiIifSx7ImNvbG9yIjoiOCIsInRleHQiOiIifV0s\nImlkIjoiNGZkYTVkNDZhMTNiY2E3NDA5MTAwMzAwIiwic3RhcnQiOiIyMDEy\nLTAyLTI5IiwiZW5kIjoiIiwid2VpZ2h0IjowLCJvcGVuZWQiOmZhbHNlLCJ2\naXNpYmxlIjp0cnVlLCJjdXJyZW50Ijp7ImNvbCI6Miwicm93IjotMiwiY29s\nb3IiOiI2IiwibGVnZW5kIjoiRmVybcOpIiwic3RhcnQiOiIxNjowMCIsImVu\nZCI6IjA4OjMwIn0sIm5leHQiOlt7ImNvbCI6Miwicm93Ijo1LCJjb2xvciI6\nIjMiLCJsZWdlbmQiOiJNb3llbm5lIiwic3RhcnQiOiIxNTowMCIsImVuZCI6\nIjE2OjAwIn0seyJjb2wiOjIsInJvdyI6LTIsImNvbG9yIjoiNiIsImxlZ2Vu\nZCI6IkZlcm3DqSIsInN0YXJ0IjoiMTY6MDAiLCJlbmQiOiIwODozMCJ9LHsi\nY29sIjozLCJyb3ciOjAsImNvbG9yIjoiMiIsImxlZ2VuZCI6IkZhaWJsZSIs\nInN0YXJ0IjoiMDg6MzAiLCJlbmQiOiIxMDowMCJ9XX19\n"},"http_version":null},"recorded_at":"Wed, 09 Apr 2014 20:49:54 GMT"}],"recorded_with":"VCR 2.8.0"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"post","uri":"http://api.dev/v2/services/4E4BDA5B068E2C5B0E760100/links","body":{"encoding":"UTF-8","base64_string":"eyJsaW5rIjp7InRleHQiOiJUZXN0IGxpbmsiLCJ1cmwiOiJodHRwOi8vd3d3\nLmdvb2dsZS5mciJ9fQ==\n"},"headers":{"Content-Type":["application/json; charset=utf-8"],"Accept":["application/json; charset=utf-8"],"User-Agent":["TurbaKit Ruby Gem 0.0.3"],"X-Api-Key":["c33f24cr2l26lma9ue4210lp"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"]}},"response":{"status":{"code":201,"message":"Created"},"headers":{"Date":["Wed, 09 Apr 2014 20:49:54 GMT"],"Status":["201 Created"],"Connection":["close"],"X-Frame-Options":["SAMEORIGIN"],"X-Xss-Protection":["1; mode=block"],"X-Content-Type-Options":["nosniff"],"X-Ua-Compatible":["chrome=1"],"Location":["/services/4E4BDA5B068E2C5B0E760100/links/5345b2726a6f6604db010000"],"Content-Type":["application/json; charset=utf-8"],"Etag":["\"2137ac1152da82ff88e1f9bf9bdea6e9\""],"Cache-Control":["max-age=0, private, must-revalidate"],"X-Request-Id":["8c15ce0f-74de-4be6-88a7-e2cbe183b974"],"X-Runtime":["0.031706"],"Transfer-Encoding":["chunked"]},"body":{"encoding":"UTF-8","base64_string":"eyJsaW5rIjp7InRleHQiOiJUZXN0IGxpbmsiLCJ1cmwiOiJodHRwOi8vd3d3\nLmdvb2dsZS5mciIsInR5cGUiOiJvdGhlciIsImlkIjoiNTM0NWIyNzI2YTZm\nNjYwNGRiMDEwMDAwIiwid2VpZ2h0IjowfX0=\n"},"http_version":null},"recorded_at":"Wed, 09 Apr 2014 20:49:54 GMT"}],"recorded_with":"VCR 2.8.0"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"delete","uri":"http://api.dev/v2/services/4E4BDA5B068E2C5B0E770100/links/515067CF9796B652A7000042","body":{"encoding":"UTF-8","base64_string":"eyJhcGlfa2V5IjoiYzMzZjI0Y3IybDI2bG1hOXVlNDIxMGxwIiwiYXBpX3Zl\ncnNpb24iOiJ2MiIsImFwaV9lbmRwb2ludCI6Imh0dHA6Ly9hcGkuZGV2Iiwi\nYXV0b19wYWdpbmF0ZSI6bnVsbCwiY29ubmVjdGlvbl9vcHRpb25zIjp7Imhl\nYWRlcnMiOnsiY29udGVudF90eXBlIjoiYXBwbGljYXRpb24vanNvbjsgY2hh\ncnNldD11dGYtOCIsImFjY2VwdCI6ImFwcGxpY2F0aW9uL2pzb247IGNoYXJz\nZXQ9dXRmLTgiLCJ1c2VyX2FnZW50IjoiVHVyYmFLaXQgUnVieSBHZW0gMC4w\nLjMifSwiYnVpbGRlciI6IiM8RmFyYWRheTo6UmFja0J1aWxkZXI6MHgwMDdm\nOTM0YWI5ZDM4OD4ifSwiZGVmYXVsdF9tZWRpYV90eXBlIjoiYXBwbGljYXRp\nb24vanNvbjsgY2hhcnNldD11dGYtOCIsIm1pZGRsZXdhcmUiOiIjPEZhcmFk\nYXk6OlJhY2tCdWlsZGVyOjB4MDA3ZjkzNGFiOWQzODg+IiwicGVyX3BhZ2Ui\nOm51bGwsInVzZXJfYWdlbnQiOiJUdXJiYUtpdCBSdWJ5IEdlbSAwLjAuMyJ9\n"},"headers":{"Content-Type":["application/json; charset=utf-8"],"Accept":["application/json; charset=utf-8"],"User-Agent":["TurbaKit Ruby Gem 0.0.3"],"X-Api-Key":["c33f24cr2l26lma9ue4210lp"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"]}},"response":{"status":{"code":204,"message":"No Content"},"headers":{"Date":["Wed, 09 Apr 2014 20:49:54 GMT"],"Status":["204 No Content"],"Connection":["close"],"X-Frame-Options":["SAMEORIGIN"],"X-Xss-Protection":["1; mode=block"],"X-Content-Type-Options":["nosniff"],"X-Ua-Compatible":["chrome=1"],"Cache-Control":["no-cache"],"X-Request-Id":["ebf3dbc0-dadc-4a75-ae00-47ca61bae314"],"X-Runtime":["0.016430"]},"body":{"encoding":"UTF-8","base64_string":""},"http_version":null},"recorded_at":"Wed, 09 Apr 2014 20:49:54 GMT"}],"recorded_with":"VCR 2.8.0"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"get","uri":"http://api.dev/v2/services/4E4BDA5B068E2C5B0E780100/links/511E53C9E9B6CCBB89000FC6","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"Content-Type":["application/json; charset=utf-8"],"Accept":["application/json; charset=utf-8"],"User-Agent":["TurbaKit Ruby Gem 0.0.3"],"X-Api-Key":["c33f24cr2l26lma9ue4210lp"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 09 Apr 2014 20:49:54 GMT"],"Status":["200 OK"],"Connection":["close"],"X-Frame-Options":["SAMEORIGIN"],"X-Xss-Protection":["1; mode=block"],"X-Content-Type-Options":["nosniff"],"X-Ua-Compatible":["chrome=1"],"Content-Type":["application/json; charset=utf-8"],"Etag":["\"24bfb961bffa215cbefc170c696eccba\""],"Cache-Control":["max-age=0, private, must-revalidate"],"X-Request-Id":["d6e43198-d600-4253-b5a7-5803f0c5be84"],"X-Runtime":["0.027398"],"Transfer-Encoding":["chunked"]},"body":{"encoding":"UTF-8","base64_string":"eyJsaW5rIjp7InRleHQiOiJMZSBndWlkZSBKJ2FpbWUgQXR0ZW5kcmUgZGVz\nIHBhcmNzIGRlIGxvaXNpcnMgc2FucyBwb2lyZWF1dGVyIiwidXJsIjoiaHR0\ncDovL2d1aWRlcy5qYWltZWF0dGVuZHJlLmNvbS9wYXJjcy1sb2lzaXJzP3V0\nbV9zb3VyY2U9Sk1BTGlua3NfUGFyYyZ1dG1fbWVkaXVtPUxpZW5zJnV0bV9j\nYW1wYWlnbj1BdXRvUHJvbW8iLCJ0eXBlIjoib3RoZXIiLCJpZCI6IjUxMWU1\nM2M5ZTliNmNjYmI4OTAwMGZjNiIsIndlaWdodCI6MH19\n"},"http_version":null},"recorded_at":"Wed, 09 Apr 2014 20:49:54 GMT"}],"recorded_with":"VCR 2.8.0"}