staplegun 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/Gemfile ADDED
@@ -0,0 +1,11 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem "mechanize", "~> 2.7.1"
4
+
5
+ group :development do
6
+ gem "rspec", "~> 2.8.0"
7
+ gem "webmock", "~> 1.11.0"
8
+ gem "vcr"
9
+ gem "bundler"
10
+ gem "jeweler", "~> 1.8.4"
11
+ end
data/LICENSE.txt ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2013 Ben Sheldon
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,40 @@
1
+ # staplegun
2
+
3
+ Easily post new pins to your Pinterest boards
4
+
5
+ ## Installation
6
+
7
+ `$ gem install staplegun` or add it to your `Gemfile`:
8
+
9
+ ```ruby
10
+ gem 'staplegun'
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ ```ruby
16
+ require 'staplegun'
17
+
18
+ stapler = Staplegun.new :email => "your.pinterest.account@email.com", :password => "pinterest_password"
19
+ stapler.pin {
20
+ :board_id => "12345678910",
21
+ :link => "http://some-awesome-website.com",
22
+ :image_url => "http://some-awesome-website.com/badass-image.png",
23
+ :description => "Awesome & Badass!"
24
+ }
25
+ ```
26
+
27
+ ## Contributing to staplegun
28
+
29
+ * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
30
+ * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
31
+ * Fork the project.
32
+ * Start a feature/bugfix branch.
33
+ * Commit and push until you are happy with your contribution.
34
+ * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
35
+ * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
36
+
37
+ ## Copyright
38
+
39
+ Copyright (c) 2013 Ben Sheldon. See LICENSE.txt for further details.
40
+
data/Rakefile ADDED
@@ -0,0 +1,33 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+ require 'bundler'
5
+ begin
6
+ Bundler.setup(:default, :development)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
11
+ end
12
+ require 'rake'
13
+
14
+ require 'jeweler'
15
+ Jeweler::Tasks.new do |gem|
16
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
+ gem.name = "staplegun"
18
+ gem.homepage = "http://github.com/bensheldon/staplegun"
19
+ gem.license = "MIT"
20
+ gem.summary = %Q{Easily post new pins to your Pinterest boards}
21
+ gem.email = "bensheldon@gmail.com"
22
+ gem.authors = ["Ben Sheldon"]
23
+ # dependencies defined in Gemfile
24
+ end
25
+ Jeweler::RubygemsDotOrgTasks.new
26
+
27
+ require 'rspec/core'
28
+ require 'rspec/core/rake_task'
29
+ RSpec::Core::RakeTask.new(:spec) do |spec|
30
+ spec.pattern = FileList['spec/**/*_spec.rb']
31
+ end
32
+
33
+ task :default => :spec
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.0
data/lib/staplegun.rb ADDED
@@ -0,0 +1,130 @@
1
+ require 'open-uri'
2
+ require 'mechanize'
3
+ require 'json'
4
+
5
+ class Staplegun
6
+ def initialize(options={})
7
+ unless options[:email] || options[:password]
8
+ raise ArgumentError, "You must initialize with options[:email] and options[:password]."
9
+ end
10
+
11
+ @options = options
12
+
13
+ @agent = Mechanize.new { |agent|
14
+ agent.user_agent_alias = 'Mac Safari'
15
+ agent.follow_meta_refresh = true
16
+ }
17
+
18
+ end
19
+
20
+ def self.login!(options={})
21
+ instance = new(options)
22
+ instance.authenticate
23
+ end
24
+
25
+ def self.login(options={})
26
+ begin
27
+ self.login!(options)
28
+ rescue
29
+ false
30
+ end
31
+ end
32
+
33
+ def authenticate
34
+ @agent.get('https://pinterest.com/login')
35
+ @csrf_token = @agent.cookie_jar.jar['pinterest.com']['/']['csrftoken'].value
36
+
37
+ data = {
38
+ :options => {
39
+ :username_or_email => @options[:email],
40
+ :password => @options[:password]
41
+ },
42
+ :context => {
43
+ :app_version => @options[:app_version] || "783f800"
44
+ }
45
+ }
46
+
47
+ params = {
48
+ 'data' => JSON.generate(data),
49
+ 'source_url' => "/login/",
50
+ 'module_path' => "App()>LoginPage()>Login()>Button(class_name=primary, text=Log in, type=submit, tagName=button, size=large)"
51
+ }
52
+
53
+ @agent.post "https://pinterest.com/resource/UserSessionResource/create/",
54
+ params,
55
+ headers('Referer' => "https://pinterest.com/login/")
56
+
57
+ return self
58
+ end
59
+
60
+ def pin(pin)
61
+ @agent.get generate_pin_url(pin, :domain => true)
62
+
63
+ data = {
64
+ :options => {
65
+ :board_id => pin[:board_id],
66
+ :link => pin[:link],
67
+ :share_twitter => false,
68
+ :image_url => pin[:image_url],
69
+ :method => "button",
70
+ :is_video => nil
71
+ },
72
+ :context => {
73
+ :app_version => "783f800"
74
+ }
75
+ }
76
+
77
+ data[:options][:description] = pin[:description] if pin[:description]
78
+
79
+ params = {
80
+ :source_url => generate_pin_url(pin),
81
+ :data => JSON.generate(data),
82
+ :module_path => "App()>PinBookmarklet()>PinCreate()>PinForm()>Button(class_name=repinSmall pinIt, text=Pin it, disabled=false, has_icon=true, tagName=button, show_text=false, type=submit, color=primary)"
83
+ }
84
+
85
+ @agent.post 'http://pinterest.com/resource/PinResource/create/',
86
+ params,
87
+ headers('Referer' => generate_pin_url(pin, :domain => true))
88
+
89
+ return self
90
+ end
91
+
92
+ private
93
+
94
+ def generate_pin_url(pin, options={})
95
+ link = URI::encode pin[:link]
96
+ image_url = URI::encode pin[:image_url]
97
+
98
+ url = "/pin/create/button/?url=#{link}&media=#{image_url}"
99
+ url = "http://pinterest.com" + url if options[:domain]
100
+
101
+ if pin[:description]
102
+ description = URI::encode pin[:description]
103
+ url.concat"&description=#{description}"
104
+ end
105
+
106
+ return url
107
+ end
108
+
109
+ def headers(options={})
110
+ default = {
111
+ 'Accept' => 'application/json, text/javascript, */*; q=0.01',
112
+ 'Accept-Charset' => 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
113
+ 'Accept-Encoding' => 'gzip,deflate,sdch',
114
+ 'Accept-Language' => 'en-US,en;q=0.8',
115
+ 'Cache-Control' => 'no-cache',
116
+ 'Connection' => 'keep-alive',
117
+ 'Content-Type' => 'application/x-www-form-urlencoded; charset=UTF-8',
118
+ 'Host' => 'pinterest.com',
119
+ 'Origin' => 'http://pinterest.com',
120
+ 'Pragma' => 'no-cache',
121
+ 'Referer' => 'https://pinterest.com/',
122
+ 'X-CSRFToken' => @csrf_token,
123
+ 'X-NEW-APP' => '1',
124
+ 'X-Requested-With' => 'XMLHttpRequest'
125
+ }
126
+
127
+ default.merge! options
128
+ end
129
+
130
+ end
@@ -0,0 +1,367 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://pinterest.com/login
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - ! '*/*'
12
+ User-Agent:
13
+ - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/534.51.22 (KHTML,
14
+ like Gecko) Version/5.1.1 Safari/534.51.22
15
+ Accept-Encoding:
16
+ - gzip,deflate,identity
17
+ Accept-Charset:
18
+ - ISO-8859-1,utf-8;q=0.7,*;q=0.7
19
+ Accept-Language:
20
+ - en-us,en;q=0.5
21
+ Host:
22
+ - pinterest.com
23
+ Connection:
24
+ - keep-alive
25
+ Keep-Alive:
26
+ - 300
27
+ response:
28
+ status:
29
+ code: 200
30
+ message: !binary |-
31
+ T0s=
32
+ headers:
33
+ !binary "QWNjZXB0LVJhbmdlcw==":
34
+ - !binary |-
35
+ Ynl0ZXM=
36
+ !binary "QWdl":
37
+ - !binary |-
38
+ MA==
39
+ !binary "Q29udGVudC1FbmNvZGluZw==":
40
+ - !binary |-
41
+ Z3ppcA==
42
+ !binary "Q29udGVudC1UeXBl":
43
+ - !binary |-
44
+ dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
45
+ !binary "RGF0ZQ==":
46
+ - !binary |-
47
+ VHVlLCAxNiBKdWwgMjAxMyAyMjoyNTowOCBHTVQ=
48
+ !binary "RXRhZw==":
49
+ - !binary |-
50
+ ImU4YTg4ODJiNGQxMmIxMGE3ODJjOGZjYzk0ZTNmMmI3O2d6aXAi
51
+ !binary "UGludGVyZXN0LUJyZWVk":
52
+ - !binary |-
53
+ Q09SR0k=
54
+ !binary "UGludGVyZXN0LUdlbmVyYXRlZC1CeQ==":
55
+ - !binary |-
56
+ bmdhcHAtNDk5Mjg2NTM=
57
+ !binary "UGludGVyZXN0LVZlcnNpb24=":
58
+ - !binary |-
59
+ ZDU2YzViMg==
60
+ !binary "U2VydmVy":
61
+ - !binary |-
62
+ bmdpbngvMC44LjU0
63
+ !binary "U2V0LUNvb2tpZQ==":
64
+ - !binary |-
65
+ X3BpbnRlcmVzdF9zZXNzPWVKd3p6bkl0RG5UMXF3dzJNQWwyU2l3S1NneDNE
66
+ alRMdFVncktQZTF0WTh2eWN4TnRmVU44VFgyYzNHczhLMEtMZmQzdExWVksw
67
+ NHRMczVNc2ZYTThpeVBEUEhMamdvUE5Zb01DY3YxZHdtczhBOTNOZlhOQ3N1
68
+ SkN2YzBpY3J5TGZjTlNjbUpCTXA3cHR2YUFnQ0JZU09oOyBEb21haW49LnBp
69
+ bnRlcmVzdC5jb207IGV4cGlyZXM9RnJpLCAxMS1KdWwtMjAxNCAyMjoyNTow
70
+ OCBHTVQ7IE1heC1BZ2U9MzExMDM5OTk7IFBhdGg9Lw==
71
+ - !binary |-
72
+ Y3NyZnRva2VuPUJ5b0V5SHB5RGU1WGhFd0JUUHJOQU5EZGtDSVlRUzI2OyBE
73
+ b21haW49LnBpbnRlcmVzdC5jb207IGV4cGlyZXM9VHVlLCAxNS1KdWwtMjAx
74
+ NCAyMjoyNTowOCBHTVQ7IE1heC1BZ2U9MzE0NDk2MDA7IFBhdGg9Lw==
75
+ !binary "VmFyeQ==":
76
+ - !binary |-
77
+ Q29va2llLCBBY2NlcHQtRW5jb2Rpbmc=
78
+ !binary "Vmlh":
79
+ - !binary |-
80
+ MS4xIHZhcm5pc2g=
81
+ !binary "WC1WYXJuaXNo":
82
+ - !binary |-
83
+ MjEzNjg2MDg4Ng==
84
+ !binary "Q29udGVudC1MZW5ndGg=":
85
+ - !binary |-
86
+ NTk3Mg==
87
+ !binary "Q29ubmVjdGlvbg==":
88
+ - !binary |-
89
+ a2VlcC1hbGl2ZQ==
90
+ body:
91
+ encoding: ASCII-8BIT
92
+ string: !binary |-
93
+ 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
169
+ nyH75T9X7NRPM9AntIR280GQFr05aVdrzACBOvKvmyh6e5Uz4j5I07jMkEMa
170
+ 4lKgwnWU+faqXDY78FyqM0EQufaevSuGbhriuq2jD5NQwTN2VLmAeTpIr+tV
171
+ EFWRCN6tkROcb5VrNsUJ4eFQM6nAEqcr3HvWaBYAE47TrgHciF0uIzxTOKUu
172
+ H7PqCkKJBxMYNs2M98+Ux4bPfwJW1wu2L1Ghh55HR0Xahfpl4zTr3wK0/XRF
173
+ SdIEcLGXLmXdhOMBOLkkI7m2xNsAb8cAFgQ3SbE6+pDr5Z21jCqPtg8NGsdq
174
+ 5HS2nq5jdhMKP11lvYgFInEtKMjLdoiZhcZtGZGtU9oNRuH6bYfSsX67gfT2
175
+ wG1HMpsLLSUbhlJHksmcKaGQddHezGx0g6E6sZXNDFts5/2abI0AucJoB+Vq
176
+ DKi2FS2ULLygpshXLarApIkn2XZbMocP+S2LFjpvtQXMslwVr0NTXsbKRCAu
177
+ zg8wz4h8G6U6v3R8iUeWTfhYjnNm/p+ZY3JQgK5OX+uQigPrFZ+4dH3mFWIP
178
+ 8xDGmrAcKlPzjrp9f1qUjDDIwbnlHgiLMFqkJQMbjWI+yhUMQpCigGBAPOLi
179
+ jqcJMEyuKuS/lC1eILzzu7OFwPw4XJnPCryE5g5hrR/6NZRXfCS03ddNHxiP
180
+ bA+/RhaKDbBL1qLqxr8bikof1jZjaBo8KIL5HIK6secLCLUQaj6FlAmApapy
181
+ cetmDlspZnZp3qibIosx/irMSxj+OxOShi1JqTRsQUxLhTbbG2Zke6VW0G3j
182
+ Y3q+vYLEtT63Ck2o8fYqMk5RZbskb68oWfVlx3rQhZHFW5Op+qPfCtXykO+p
183
+ a8sRac3ZqVlp0ql+a16FeDhOXMBUlQn5zad7QIgOx9vLcOaWhpZotbiKcbZr
184
+ 9xFHOw75Lk5ymenoLTBspuXTUqR46g6TsRiFaaQ7NorwjiMtMIa1P8MVUHze
185
+ FE40ykWTld0gsqOMtqqTjYtbKTpTFQduIX80I9xVj6r4tsMya9+pW47ei35r
186
+ vHr/aKnZgk4EXNtXat2mZL6BVsEbSsod0RLKNnGtN2IXsOf2EWtaHAXUKhnZ
187
+ uBuxGNqYc8VSJ9CQEpp4u8ra+MLxKjOQrrS18h8zE0/TAJWFIoy1r4e6A9VQ
188
+ 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
226
+ http_version:
227
+ recorded_at: Tue, 16 Jul 2013 22:25:08 GMT
228
+ - request:
229
+ method: post
230
+ uri: https://pinterest.com/resource/UserSessionResource/create/
231
+ body:
232
+ encoding: US-ASCII
233
+ string: data=%7B%22options%22%3A%7B%22username_or_email%22%3A%22tester@test.com%22%2C%22password%22%3A%22correctpassword%22%7D%2C%22context%22%3A%7B%22app_version%22%3A%22783f800%22%7D%7D&source_url=%2Flogin%2F&module_path=App%28%29%3ELoginPage%28%29%3ELogin%28%29%3EButton%28class_name%3Dprimary%2C+text%3DLog+in%2C+type%3Dsubmit%2C+tagName%3Dbutton%2C+size%3Dlarge%29
234
+ headers:
235
+ Accept:
236
+ - application/json, text/javascript, */*; q=0.01
237
+ User-Agent:
238
+ - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.22 (KHTML,
239
+ like Gecko) Chrome/25.0.1364.155 Safari/537.22
240
+ Accept-Encoding:
241
+ - gzip,deflate,sdch
242
+ Accept-Charset:
243
+ - ISO-8859-1,utf-8;q=0.7,*;q=0.3
244
+ Accept-Language:
245
+ - en-US,en;q=0.8
246
+ Cookie:
247
+ - !binary |-
248
+ X3BpbnRlcmVzdF9zZXNzPWVKd3p6bkl0RG5UMXF3dzJNQWwyU2l3S1NneDNE
249
+ alRMdFVncktQZTF0WTh2eWN4TnRmVU44VFgyYzNHczhLMEtMZmQzdExWVksw
250
+ NHRMczVNc2ZYTThpeVBEUEhMamdvUE5Zb01DY3YxZHdtczhBOTNOZlhOQ3N1
251
+ SkN2YzBpY3J5TGZjTlNjbUpCTXA3cHR2YUFnQ0JZU09oOyBjc3JmdG9rZW49
252
+ QnlvRXlIcHlEZTVYaEV3QlRQck5BTkRka0NJWVFTMjY=
253
+ Host:
254
+ - pinterest.com
255
+ Referer:
256
+ - https://pinterest.com/login/
257
+ Content-Type:
258
+ - application/x-www-form-urlencoded; charset=UTF-8
259
+ Content-Length:
260
+ - '373'
261
+ Cache-Control:
262
+ - no-cache
263
+ Connection:
264
+ - keep-alive
265
+ Origin:
266
+ - http://pinterest.com
267
+ Pragma:
268
+ - no-cache
269
+ X-Csrftoken:
270
+ - ByoEyHpyDe5XhEwBTPrNANDdkCIYQS26
271
+ X-New-App:
272
+ - '1'
273
+ X-Requested-With:
274
+ - XMLHttpRequest
275
+ response:
276
+ status:
277
+ code: 200
278
+ message: !binary |-
279
+ T0s=
280
+ headers:
281
+ !binary "QWNjZXB0LVJhbmdlcw==":
282
+ - !binary |-
283
+ Ynl0ZXM=
284
+ !binary "QWdl":
285
+ - !binary |-
286
+ MA==
287
+ !binary "Q29udGVudC1FbmNvZGluZw==":
288
+ - !binary |-
289
+ Z3ppcA==
290
+ !binary "Q29udGVudC1UeXBl":
291
+ - !binary |-
292
+ YXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOA==
293
+ !binary "RGF0ZQ==":
294
+ - !binary |-
295
+ VHVlLCAxNiBKdWwgMjAxMyAyMjoyNTowOSBHTVQ=
296
+ !binary "RXRhZw==":
297
+ - !binary |-
298
+ IjBmMDEzNzQ1ZGJiYWY0MzQyZWE0MjJiYTJjYTliNWY5O2d6aXAi
299
+ !binary "UGludGVyZXN0LUJyZWVk":
300
+ - !binary |-
301
+ Q09SR0k=
302
+ !binary "UGludGVyZXN0LUdlbmVyYXRlZC1CeQ==":
303
+ - !binary |-
304
+ bmdhcHAtNDk0ZmNkNDQ=
305
+ !binary "UGludGVyZXN0LVZlcnNpb24=":
306
+ - !binary |-
307
+ ZDU2YzViMg==
308
+ !binary "U2VydmVy":
309
+ - !binary |-
310
+ bmdpbngvMC44LjU0
311
+ !binary "U2V0LUNvb2tpZQ==":
312
+ - !binary |-
313
+ X3BpbnRlcmVzdF9zZXNzPSJlSncxakZFTGdqQVlBUDlOcjZHcDBjTUl3UkVM
314
+ dm8zQlZPYUxrSzdZY2xDdTJ0eXZUNEplNzdnN2ZQSnJPZUNMRDN1VDI0SVBw
315
+ eUxaV3BhZG54azY5aW84OUt3Y0FzRTlGVGpRV0h2R0VkcjBMMjNWaW1GSHF6
316
+ TEFIenZsbkI0Uk1jUkxRZTlkVzZkU05KWlZQTEFXNTJDYXFXdEoxaG53SU1a
317
+ SnJwN2MxdTd0MU56L1FweXVzMGdqVG1tVUM0MndVRUVTMEFSOUFRSTZPVDg9
318
+ IjsgRG9tYWluPS5waW50ZXJlc3QuY29tOyBleHBpcmVzPUZyaSwgMTEtSnVs
319
+ LTIwMTQgMjI6MjU6MDkgR01UOyBNYXgtQWdlPTMxMTAzOTk5OyBQYXRoPS8=
320
+ !binary "VmFyeQ==":
321
+ - !binary |-
322
+ Q29va2llLCBBY2NlcHQtRW5jb2Rpbmc=
323
+ !binary "Vmlh":
324
+ - !binary |-
325
+ MS4xIHZhcm5pc2g=
326
+ !binary "WC1WYXJuaXNo":
327
+ - !binary |-
328
+ MjEzNjg2MTcxMA==
329
+ !binary "Q29udGVudC1MZW5ndGg=":
330
+ - !binary |-
331
+ MTE4NA==
332
+ !binary "Q29ubmVjdGlvbg==":
333
+ - !binary |-
334
+ a2VlcC1hbGl2ZQ==
335
+ body:
336
+ encoding: ASCII-8BIT
337
+ string: !binary |-
338
+ H4sIAEXI5VEC/51W227cNhD9FVboW+3VbSWt9qnoW4AGKBr0qWgEUhxpGVOk
339
+ QFJZbwL/e4eUtNY6Th3UCxgUOTOcc+bGr5EBqyfTQnQkXyNFB7+I/rJgPoC1
340
+ Qqs/1/M7EunR4Y71ok9P+D1oPslZ8+QGiQs1SYkHzgAsX15uvaPBxYgGZhVO
341
+ HQ0LYRsYRqkvQamj0gIqtVopaB3wxunmQk9abw4lta5Zvf1wAsm18h5yPVCh
342
+ ms9gRCeAbzQU7b3jf/+D605Lqc9C9U2rJ+Vwuz7gthhoD80AXExDMxmPB3G5
343
+ 0R7j2N77fXrf0vYE99Amu1EoMfS7Vg8x/YxQjI0ZKDv70qR5nqV1UtdZUxW7
344
+ T2MfhQtGKVrh5KWZXUBw7NIMW9jwOKLzAyhnZ5ZAfQHZTIpO7uQ9AkWZBJ5H
345
+ ntkTtc1IrT1r48E6M3kbHfJ+Zec3UGTD0AzSDhRF3sBY/jjGPLli9H5EaZkX
346
+ eZWWVZlVeVbgz591wmzCho5tQjb7suSPh2UBVKO0w0C2dM27lSXkyGpFpfgC
347
+ TWf00Oius8JBw4w+W4zshgzaAtP6oXHIqhQKmoXBZxELrQHXME0Nv6ZEMgfj
348
+ zYBJPbvnIUXb+2YmqqxKk6Io94EcxeFxe7Pw4TNOgdlY/O5V7jIG5iYsT28O
349
+ kDm5ULkE5dfe7/mIeYEzsMDKDbm3MLO72d4alef4RqFyMQVsoHgtHncWzoHZ
350
+ Jg/mzrIbUuXWxJWPW4Xz+bxbj17Rwmsbd5oGphCOVw3F+91UzbapWhWPVRED
351
+ iylHq7ignEFR5JzXVdW13b7I8g7yes/2eYqqS+Z+z3b6re0iiaGImV9AwYqs
352
+ gqTrsByKOi9YzdMDdEVb1V3+lu36Fds0zpKY+0WW8KJk7b5DwZRRxrsy3xd5
353
+ vu+y4kD/h200nLZx6RdpWxaQFmWXoe16D/ssz8oqO3S8PfDDW7YP39ret3Ga
354
+ xnWCixS7QslySGqaJjQr0i7Py7KtDpSxpVP4TKJMT24tmzWtxolJYU+bIr3W
355
+ vFDXDn4zHHqt+zCGlqLyubOmd5psU3A1bnFA0eGVO55LzxfJ9bpQaNupstyE
356
+ bYN6J2iA8V6rO5LW5D01BAnOSJYek/yYJuSXBP+i0CzOeGuPLdh3+BcdJ028
357
+ s1I8wE113mBdoWx82B4vLD6fOto/V/7c+yU1PbzV+7Mf7/3p/tr8ObBpc9/C
358
+ prnCKWrff7BjPrzsbn6YgTHabJ8NmB6A/dEjCu31Y7y+JOKj71fxcQB30jz+
359
+ OXqh7rPAYxWq02GMouD82ND98bYRIU60D9atTZODbY0Y157+x3pOhCXnEy7J
360
+ RU+k18RpwoVtNeYFUXAm7oSDxxKqOGkROQaFWDd1XZCXKLYj7+aPDgcBsdp7
361
+ jypEKz+XwsmZKucNs0lIfod29MMdflyINoTrO/JpQkfQJfIuiKGKISGL0Ai5
362
+ uvpTeK31x3VgLHNg2f0vgFSt3iAvwfButYVjEG7kl4OQVVtC8T0Czt7Th90N
363
+ t3EQtHEo+1jqXtv4d/y/G3Fc+3i/coPfbqXwtYJ57uDRhSDScfTVaBcE2CXb
364
+ gmXR09O/aC0n3NAKAAA=
365
+ http_version:
366
+ recorded_at: Tue, 16 Jul 2013 22:25:09 GMT
367
+ recorded_with: VCR 2.5.0