turba_kit 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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"}