ratis 3.1.0 → 3.1.1

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.
@@ -0,0 +1,115 @@
1
+ require 'spec_helper'
2
+
3
+ describe Ratis::Timetable do
4
+ before do
5
+ Ratis.reset
6
+ Ratis.configure do |config|
7
+ config.endpoint = 'http://soap.valleymetro.org/cgi-bin-soap-web-252/soap.cgi'
8
+ config.namespace = 'PX_WEB'
9
+ end
10
+ end
11
+
12
+ describe '#where' do
13
+
14
+ before do
15
+ @today = Time.now.strftime("%m/%d/%Y")
16
+ @conditions = {:route_short_name => '0',
17
+ :direction => 'N',
18
+ :service_type => 'W',
19
+ :date => @today}
20
+ end
21
+
22
+ it 'only makes one request' do
23
+ # false just to stop further processing of response
24
+ Ratis::Request.should_receive(:get).once.and_call_original
25
+ Ratis::Timetable.where(@conditions.dup)
26
+ end
27
+
28
+ it 'requests the correct SOAP action with correct args' do
29
+ Ratis::Request.should_receive(:get) do |action, options|
30
+ action.should eq('Timetable')
31
+ options["Route"].should eq('0')
32
+ options["Direction"].should eq('N')
33
+ options["Date"].should eq(@today)
34
+ options["Servicetype"].should be_nil
35
+
36
+ end.and_return(double('response', :success? => false))
37
+
38
+ Ratis::Timetable.where(@conditions.dup)
39
+ end
40
+
41
+ it 'should return a collection Timetable::Stop(s)' do
42
+
43
+ timetable = Ratis::Timetable.where(@conditions.dup)
44
+ timetable.timepoints.each do |obj|
45
+ expect(obj).to be_a(Ratis::Timetable::Stop)
46
+ end
47
+
48
+ end
49
+
50
+ it 'should return a collection Timetable::Stop(s)' do
51
+
52
+ timetable = Ratis::Timetable.where(@conditions.dup)
53
+ timetable.trips.each do |obj|
54
+ expect(obj).to be_a(Ratis::Timetable::Trip)
55
+ end
56
+ puts timetable.trips.size
57
+ end
58
+
59
+ it "should parse the timetable/stop/trip fields" do
60
+ timetable = Ratis::Timetable.where(@conditions.dup)
61
+
62
+ expect(timetable.route_short_name).to eq('0')
63
+ expect(timetable.direction).to eq('N')
64
+ expect(timetable.service_type).to eq('Weekday')
65
+ expect(timetable.operator).to eq('AP')
66
+ expect(timetable.effective).to eq('05/20/13')
67
+
68
+ stop = timetable.timepoints.first
69
+
70
+ expect(stop.ratis_stop_id).to eq(0)
71
+ expect(stop.atis_stop_id).to eq('3317')
72
+ expect(stop.stop_id).to eq('10050')
73
+ expect(stop.description).to eq('CENTRAL AVE & DOBBINS RD')
74
+ expect(stop.area).to eq('Phoenix')
75
+
76
+ trip = timetable.trips.first
77
+
78
+ expect(trip.ratis_stop_id).to eq(0)
79
+ expect(trip.times).to eq( ["05:10 AM", "05:14 AM", "05:22 AM", "05:35 AM", "05:43 AM", "05:51 AM", "05:59 AM", "06:10 AM"] )
80
+ expect(trip.comment).to eq('F')
81
+
82
+ end
83
+
84
+ it "should raise error for missing arg route_short_name" do
85
+ conditions = @conditions.dup
86
+ conditions.delete(:route_short_name)
87
+
88
+ expect do
89
+ Ratis::Timetable.where(conditions)
90
+ end.to raise_error(ArgumentError, 'You must provide a route_short_name')
91
+ end
92
+
93
+ it "should raise error for missing arg direction" do
94
+ conditions = @conditions.dup
95
+ conditions.delete(:direction)
96
+
97
+ expect do
98
+ Ratis::Timetable.where(conditions)
99
+ end.to raise_error(ArgumentError, 'You must provide a direction')
100
+ end
101
+
102
+ it "should raise error for missing arg date" do
103
+ conditions = @conditions.dup
104
+ conditions.delete(:date)
105
+ conditions.delete(:service_type)
106
+
107
+ expect do
108
+ Ratis::Timetable.where(conditions)
109
+ end.to raise_error(ArgumentError, 'You must provide either date or service_type')
110
+ end
111
+
112
+ end
113
+
114
+ end
115
+
@@ -0,0 +1,72 @@
1
+ require 'spec_helper'
2
+
3
+ describe Ratis::Walk do
4
+ before do
5
+ Ratis.reset
6
+ Ratis.configure do |config|
7
+ config.endpoint = 'http://example.com/soap.cgi'
8
+ config.namespace = 'TEST_NS'
9
+ end
10
+ end
11
+
12
+ describe 'walk to the pub' do
13
+
14
+ before do
15
+ stub_atis_request.to_return( atis_response 'Walkstop', '1.2', '0', <<-BODY )
16
+ <Walkinfo>
17
+ <Walkdistance>1.2</Walkdistance>
18
+ <Walkunits>miles</Walkunits>
19
+ <Walktime>22</Walktime>
20
+ </Walkinfo>
21
+ <Starttext>text of the starting point of the walk</Starttext>
22
+ <Endtext>text of the ending point of the walk</Endtext>
23
+ <Walk>
24
+ <Leg>Do some walking</Leg>
25
+ <Leg>Walk some more</Leg>
26
+ </Walk>
27
+ <Walkpoints>
28
+ <Walkpoint>33.45455, -112.07064</Walkpoint>
29
+ <Walkpoint>33.45454, -112.071263</Walkpoint>
30
+ <Walkpoint>33.45453, -112.07256</Walkpoint>
31
+ <Walkpoint>33.45586, -112.07255</Walkpoint>
32
+ </Walkpoints>
33
+ BODY
34
+
35
+ @walk = Ratis::Walk.walk_stop :start_latitude => '33.45455', :start_longitude => '-112.07064', :end_latitude => '33.45586', :end_longitude => '-112.07255'
36
+ end
37
+
38
+ describe '#walk_stop' do
39
+
40
+ it 'only makes one request' do
41
+ an_atis_request.should have_been_made.times 1
42
+ end
43
+
44
+ it 'requests the correct SOAP action' do
45
+ an_atis_request_for('Walkstop',
46
+ 'Startlat' => '33.45455', 'Startlong' => '-112.07064', 'Endlat' => '33.45586', 'Endlong' => '-112.07255'
47
+ ).should have_been_made
48
+ end
49
+
50
+ it 'parses out fields correctly' do
51
+ @walk.legs.should eql [ { :description => 'Do some walking' }, { :description => 'Walk some more' } ]
52
+ @walk.walk_distance.should eql '1.2'
53
+ @walk.walk_units.should eql 'miles'
54
+ @walk.walk_time.should eql '22'
55
+ end
56
+
57
+ end
58
+
59
+ describe '#to_hash' do
60
+
61
+ it 'returns only the correct keys' do
62
+ hash = { :legs => [ { :description => 'Do some walking' }, { :description => 'Walk some more' } ],
63
+ :walk_distance => '1.2', :walk_units => 'miles', :walk_time => '22' }
64
+ HashDiff.diff(@walk.to_hash, hash).should eql []
65
+ end
66
+
67
+ end
68
+
69
+ end
70
+
71
+ end
72
+
@@ -0,0 +1,45 @@
1
+ require 'simplecov'
2
+ SimpleCov.start
3
+
4
+ project_root = File.expand_path(File.dirname(__FILE__) + "/..")
5
+ $LOAD_PATH << "#{project_root}/lib"
6
+
7
+ require 'webmock/rspec'
8
+ require 'rspec'
9
+ require 'active_support/core_ext'
10
+ require 'hashdiff'
11
+ require 'ratis'
12
+ require 'vcr'
13
+ require 'chronic'
14
+
15
+ Dir[("#{project_root}/spec/support/**/*.rb")].each { |f| require f }
16
+
17
+ RSpec.configure do |config|
18
+ # config.color_enabled = true
19
+ config.include RatisHelpers
20
+ # config.extend VCR::RSpec::Macros
21
+ config.treat_symbols_as_metadata_keys_with_true_values = true
22
+ end
23
+
24
+ HTTPI.log = false
25
+ Savon.configure do |config|
26
+ config.log = false
27
+ end
28
+
29
+ Ratis.configure do |config|
30
+ config.endpoint = 'http://soap.valleymetro.org/cgi-bin-soap-web-252/soap.cgi'
31
+ config.namespace = 'PX_WEB'
32
+ config.timeout = 5
33
+ end
34
+
35
+ VCR.configure do |c|
36
+ c.hook_into :webmock
37
+ c.configure_rspec_metadata!
38
+ c.preserve_exact_body_bytes { true }
39
+ c.cassette_library_dir = "#{project_root}/spec/support/vcr_cassettes"
40
+ c.ignore_localhost = true
41
+ c.allow_http_connections_when_no_cassette = true
42
+ c.default_cassette_options = {
43
+ :re_record_interval => 1.month
44
+ }
45
+ end
@@ -0,0 +1,96 @@
1
+ module RatisHelpers
2
+
3
+ def stub_atis_request
4
+ stub_request :post, 'http://example.com/soap.cgi'
5
+ end
6
+
7
+ def an_atis_request
8
+ a_request :post, 'http://example.com/soap.cgi'
9
+ end
10
+
11
+ def an_atis_request_for(action, params = {})
12
+ an_atis_request.with do |request|
13
+ request.headers['Soapaction'] == %Q{"TEST_NS##{ action }"}
14
+
15
+ params_body = { action => params.merge( { 'xmlns' => 'TEST_NS' } ) }
16
+ request_body = Hash.from_xml(request.body)['Envelope']['Body']
17
+ HashDiff.diff(params_body, request_body).should eql []
18
+ end
19
+ end
20
+
21
+ def atis_response action, version, action_response_code, action_response_body
22
+ { :body => <<-BODY }
23
+ <?xml version="1.0" encoding="UTF-8"?>
24
+ <SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/1999/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
25
+ <SOAP-ENV:Body>
26
+ <namesp1:#{action}Response xmlns:namesp1="TEST_NS">
27
+ <Responsecode>#{ action_response_code }</Responsecode>
28
+ <Version>#{ version }</Version>
29
+ #{ action_response_body }
30
+ <Copyright>XML schema Copyright (c) 2011 Trapeze Software, Inc., all rights reserved.</Copyright>
31
+ <Soapversion>2.4.4 - 08/31/11</Soapversion>
32
+ </namesp1:#{action}Response>
33
+ </SOAP-ENV:Body>
34
+ </SOAP-ENV:Envelope>
35
+ BODY
36
+ end
37
+
38
+ def atis_error_response fault_code, fault_string
39
+ { :body => <<-BODY }
40
+ <?xml version="1.0" encoding="UTF-8"?>
41
+ <SOAP-ENV:Envelope xmlns:namesp1="http://namespaces.soaplite.com/perl" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
42
+ <SOAP-ENV:Body>
43
+ <SOAP-ENV:Fault>
44
+ <faultcode xsi:type="xsd:string">SOAP-ENV:#{ fault_code }</faultcode>
45
+ <faultstring xsi:type="xsd:string">#{ fault_string }</faultstring>
46
+ <detail>
47
+ <TEST_NS xsi:type="namesp1:TEST_NS">
48
+ <code xsi:type="xsd:int">#{ fault_code }</code>
49
+ </TEST_NS>
50
+ </detail>
51
+ </SOAP-ENV:Fault>
52
+ </SOAP-ENV:Body>
53
+ </SOAP-ENV:Envelope>
54
+ BODY
55
+ end
56
+
57
+ def atis_response_timetable params = {}
58
+ <<-BODY
59
+ <Headway>
60
+ <Route>#{params[:route] || '0' }</Route>
61
+ <Direction>#{ params[:direct] || 'N' }</Direction>
62
+ <Servicetype>#{ params[:service_type] || 'W' }</Servicetype>
63
+ <Signage>0 North to Road St.</Signage>
64
+ <Operator>#{ params[:operator] || 'OP' }</Operator>
65
+ <Effective>#{ params[:effective] || '01/15/2012' }</Effective>
66
+ <Timepoints>
67
+ <Stop>
68
+ <Atisstopid>1337</Atisstopid>
69
+ <Stopid>80085</Stopid>
70
+ <Description>ALPHA ST &amp; BETA RD</Description>
71
+ <Area>Townsville</Area>
72
+ </Stop>
73
+ </Timepoints>
74
+ <Times>
75
+ <Trip>
76
+ <Tripid>001-001</Tripid>
77
+ <Block>999</Block>
78
+ <Comment>My trip comment</Comment>
79
+ <Time>12:34 AM</Time>
80
+ <Calendarstartdate>#{ Time.now.strftime '%m/%d/%y' }</Calendarstartdate>
81
+ <Calendar>#{ 120.times.map{['y','n'].sample} }</Calendar>
82
+ <Commentcode>comment_code_trip</Commentcode>
83
+ </Trip>
84
+ </Times>
85
+ </Headway>
86
+ <Comments>
87
+ <Comment>
88
+ <Code>comment_code_request</Code>
89
+ <Text>My request comment</Text>
90
+ </Comment>
91
+ </Comments>
92
+ BODY
93
+ end
94
+
95
+ end
96
+
@@ -0,0 +1,200 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: http://example.com/soap.cgi
6
+ body:
7
+ base64_string: |
8
+ PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48ZW52OkVu
9
+ dmVsb3BlIHhtbG5zOndzZGw9IlRFU1RfTlMiIHhtbG5zOnhzZD0iaHR0cDov
10
+ L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDov
11
+ L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOmVu
12
+ dj0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZS8i
13
+ PjxlbnY6Qm9keT48UG9pbnQycG9pbnQgeG1sbnM9IlBYX1dFQiI+PERlc3Rp
14
+ bmF0aW9ubGF0PjMzLjQ0NzA5ODwvRGVzdGluYXRpb25sYXQ+PFJvdXRlc29u
15
+ bHk+WTwvUm91dGVzb25seT48U3RhcnR0aW1lPjE3MDA8L1N0YXJ0dGltZT48
16
+ RW5kdGltZT4xODAwPC9FbmR0aW1lPjxPcmlnaW5sb25nPi0xMTIuMDk3OTAz
17
+ PC9PcmlnaW5sb25nPjxPcmlnaW5sYXQ+MzMuNDQ2OTMxPC9PcmlnaW5sYXQ+
18
+ PERlc3RpbmF0aW9ubG9uZz4tMTEyLjA3NzIxMzwvRGVzdGluYXRpb25sb25n
19
+ PjxEYXRlPjA0LzExLzIwMTM8L0RhdGU+PFJvdXRlcz48L1JvdXRlcz48L1Bv
20
+ aW50MnBvaW50PjwvZW52OkJvZHk+PC9lbnY6RW52ZWxvcGU+
21
+
22
+ headers:
23
+ Accept:
24
+ - "*/*"
25
+ Soapaction:
26
+ - "\"PX_WEB#Point2point\""
27
+ Content-Length:
28
+ - "576"
29
+ Content-Type:
30
+ - text/xml;charset=UTF-8
31
+ response:
32
+ status:
33
+ code: 302
34
+ message: Found
35
+ headers:
36
+ Connection:
37
+ - Keep-Alive
38
+ Server:
39
+ - BigIP
40
+ Location:
41
+ - http://www.iana.org/domains/example/
42
+ Content-Length:
43
+ - "0"
44
+ body:
45
+ base64_string: ""
46
+ http_version:
47
+ recorded_at: Fri, 12 Apr 2013 01:39:08 GMT
48
+ - request:
49
+ method: post
50
+ uri: http://soap.valleymetro.org/cgi-bin-soap-web-252/soap.cgi
51
+ body:
52
+ base64_string: |
53
+ PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48ZW52OkVu
54
+ dmVsb3BlIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxT
55
+ Y2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxT
56
+ Y2hlbWEtaW5zdGFuY2UiIHhtbG5zOmVudj0iaHR0cDovL3NjaGVtYXMueG1s
57
+ c29hcC5vcmcvc29hcC9lbnZlbG9wZS8iIHhtbG5zOndzZGw9IlBYX1dFQiI+
58
+ PGVudjpCb2R5PjxQb2ludDJwb2ludCB4bWxucz0iUFhfV0VCIj48T3JpZ2lu
59
+ bG9uZz4tMTEyLjA5NzkwMzwvT3JpZ2lubG9uZz48Um91dGVzPjE8L1JvdXRl
60
+ cz48Um91dGVzb25seT5ZPC9Sb3V0ZXNvbmx5PjxEYXRlPjA2LzA2LzIwMTM8
61
+ L0RhdGU+PERlc3RpbmF0aW9ubGF0PjMzLjQ0NzA5ODwvRGVzdGluYXRpb25s
62
+ YXQ+PE9yaWdpbmxhdD4zMy40NDY5MzE8L09yaWdpbmxhdD48U3RhcnR0aW1l
63
+ PjE3MDA8L1N0YXJ0dGltZT48RW5kdGltZT4xODAwPC9FbmR0aW1lPjxEZXN0
64
+ aW5hdGlvbmxvbmc+LTExMi4wNzcyMTM8L0Rlc3RpbmF0aW9ubG9uZz48L1Bv
65
+ aW50MnBvaW50PjwvZW52OkJvZHk+PC9lbnY6RW52ZWxvcGU+
66
+
67
+ headers:
68
+ Accept:
69
+ - "*/*"
70
+ Soapaction:
71
+ - "\"PX_WEB#Point2point\""
72
+ Content-Length:
73
+ - "576"
74
+ Content-Type:
75
+ - text/xml;charset=UTF-8
76
+ response:
77
+ status:
78
+ code: 200
79
+ message: OK
80
+ headers:
81
+ Connection:
82
+ - close
83
+ Server:
84
+ - Apache/2.2.3 (CentOS)
85
+ Date:
86
+ - Thu, 06 Jun 2013 19:05:58 GMT
87
+ Soapserver:
88
+ - SOAP::Lite/Perl/0.55
89
+ Content-Length:
90
+ - "4558"
91
+ Content-Type:
92
+ - text/xml; charset=utf-8
93
+ body:
94
+ base64_string: |
95
+ PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48U09BUC1F
96
+ TlY6RW52ZWxvcGUgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
97
+ L1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM6U09BUC1FTkM9Imh0dHA6Ly9z
98
+ Y2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW5jb2RpbmcvIiB4bWxuczpTT0FQ
99
+ LUVOVj0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9w
100
+ ZS8iIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YTUxTY2hl
101
+ bWEiIFNPQVAtRU5WOmVuY29kaW5nU3R5bGU9Imh0dHA6Ly9zY2hlbWFzLnht
102
+ bHNvYXAub3JnL3NvYXAvZW5jb2RpbmcvIj48U09BUC1FTlY6Qm9keT48bmFt
103
+ ZXNwMTpQb2ludDJwb2ludFJlc3BvbnNlIHhtbG5zOm5hbWVzcDE9IlBYX1dF
104
+ QiI+Cgk8UmVzcG9uc2Vjb2RlPjA8L1Jlc3BvbnNlY29kZT4KCTxWZXJzaW9u
105
+ PjEuNTwvVmVyc2lvbj4KCTxSb3V0ZXM+CgkJPFNlcnZpY2U+CgkJCTxSb3V0
106
+ ZT41NjI8L1JvdXRlPgoJCQk8RGlyZWN0aW9uPk88L0RpcmVjdGlvbj4KCQkJ
107
+ PFNlcnZpY2V0eXBlPlc8L1NlcnZpY2V0eXBlPgoJCQk8U2lnbmFnZT41NjIg
108
+ R29vZHllYXIgVG8gR29vZHllYXI8L1NpZ25hZ2U+CgkJCTxSb3V0ZXR5cGU+
109
+ WDwvUm91dGV0eXBlPgoJCTwvU2VydmljZT4KCQk8U2VydmljZT4KCQkJPFJv
110
+ dXRlPjQ1MDwvUm91dGU+CgkJCTxEaXJlY3Rpb24+RTwvRGlyZWN0aW9uPgoJ
111
+ CQk8U2VydmljZXR5cGU+VzwvU2VydmljZXR5cGU+CgkJCTxTaWduYWdlPkkt
112
+ MTAgRUFTVCBSQVBJRCBUbyA0MCBTdC9QZWNvczwvU2lnbmFnZT4KCQkJPFJv
113
+ dXRldHlwZT5YPC9Sb3V0ZXR5cGU+CgkJPC9TZXJ2aWNlPgoJCTxTZXJ2aWNl
114
+ PgoJCQk8Um91dGU+NTcxPC9Sb3V0ZT4KCQkJPERpcmVjdGlvbj5PPC9EaXJl
115
+ Y3Rpb24+CgkJCTxTZXJ2aWNldHlwZT5XPC9TZXJ2aWNldHlwZT4KCQkJPFNp
116
+ Z25hZ2U+NTcxIFN1cnByaXNlIFRvIFN1cnByaXNlIFBOUjwvU2lnbmFnZT4K
117
+ CQkJPFJvdXRldHlwZT5YPC9Sb3V0ZXR5cGU+CgkJPC9TZXJ2aWNlPgoJCTxT
118
+ ZXJ2aWNlPgoJCQk8Um91dGU+NDYwPC9Sb3V0ZT4KCQkJPERpcmVjdGlvbj5X
119
+ PC9EaXJlY3Rpb24+CgkJCTxTZXJ2aWNldHlwZT5XPC9TZXJ2aWNldHlwZT4K
120
+ CQkJPFNpZ25hZ2U+SS0xMCBXRVNUIFJBUElEIHRvIERlc2VydCBTa3kgTWFs
121
+ bCBWaWEgNzlBdmUvSS0xMDwvU2lnbmFnZT4KCQkJPFJvdXRldHlwZT5YPC9S
122
+ b3V0ZXR5cGU+CgkJPC9TZXJ2aWNlPgoJCTxTZXJ2aWNlPgoJCQk8Um91dGU+
123
+ NTQxPC9Sb3V0ZT4KCQkJPERpcmVjdGlvbj5PPC9EaXJlY3Rpb24+CgkJCTxT
124
+ ZXJ2aWNldHlwZT5XPC9TZXJ2aWNldHlwZT4KCQkJPFNpZ25hZ2U+NTQxIENo
125
+ YW5kbGVyIFRvIEFyaXpvbmEvUmF5IFZpYSBXZXN0IE1lc2EgUE5SPC9TaWdu
126
+ YWdlPgoJCQk8Um91dGV0eXBlPlg8L1JvdXRldHlwZT4KCQk8L1NlcnZpY2U+
127
+ CgkJPFNlcnZpY2U+CgkJCTxSb3V0ZT41MzM8L1JvdXRlPgoJCQk8RGlyZWN0
128
+ aW9uPk88L0RpcmVjdGlvbj4KCQkJPFNlcnZpY2V0eXBlPlc8L1NlcnZpY2V0
129
+ eXBlPgoJCQk8U2lnbmFnZT41MzMgTWVzYSBUbyBTdXByc3RuIFNwcmcgUE5S
130
+ PC9TaWduYWdlPgoJCQk8Um91dGV0eXBlPlg8L1JvdXRldHlwZT4KCQk8L1Nl
131
+ cnZpY2U+CgkJPFNlcnZpY2U+CgkJCTxSb3V0ZT41MjI8L1JvdXRlPgoJCQk8
132
+ RGlyZWN0aW9uPk88L0RpcmVjdGlvbj4KCQkJPFNlcnZpY2V0eXBlPlc8L1Nl
133
+ cnZpY2V0eXBlPgoJCQk8U2lnbmFnZT41MjIgVGVtcGUgVG8gV2FybmVyL0ND
134
+ IFdheTwvU2lnbmFnZT4KCQkJPFJvdXRldHlwZT5YPC9Sb3V0ZXR5cGU+CgkJ
135
+ PC9TZXJ2aWNlPgoJCTxTZXJ2aWNlPgoJCQk8Um91dGU+NTIxPC9Sb3V0ZT4K
136
+ CQkJPERpcmVjdGlvbj5PPC9EaXJlY3Rpb24+CgkJCTxTZXJ2aWNldHlwZT5X
137
+ PC9TZXJ2aWNldHlwZT4KCQkJPFNpZ25hZ2U+NTIxIFRlbXBlIFRvIFByaWNl
138
+ L0Jhc2VsaW5lPC9TaWduYWdlPgoJCQk8Um91dGV0eXBlPlg8L1JvdXRldHlw
139
+ ZT4KCQk8L1NlcnZpY2U+CgkJPFNlcnZpY2U+CgkJCTxSb3V0ZT41MjA8L1Jv
140
+ dXRlPgoJCQk8RGlyZWN0aW9uPk88L0RpcmVjdGlvbj4KCQkJPFNlcnZpY2V0
141
+ eXBlPlc8L1NlcnZpY2V0eXBlPgoJCQk8U2lnbmFnZT41MjAgVGVtcGUgVG8g
142
+ UHJpY2UvQmR3eTwvU2lnbmFnZT4KCQkJPFJvdXRldHlwZT5YPC9Sb3V0ZXR5
143
+ cGU+CgkJPC9TZXJ2aWNlPgoJCTxTZXJ2aWNlPgoJCQk8Um91dGU+NTE0PC9S
144
+ b3V0ZT4KCQkJPERpcmVjdGlvbj5PPC9EaXJlY3Rpb24+CgkJCTxTZXJ2aWNl
145
+ dHlwZT5XPC9TZXJ2aWNldHlwZT4KCQkJPFNpZ25hZ2U+NTE0IFNjb3R0c2Rh
146
+ bGUgVG8gRm91bnRuIEhpbGxzPC9TaWduYWdlPgoJCQk8Um91dGV0eXBlPlg8
147
+ L1JvdXRldHlwZT4KCQk8L1NlcnZpY2U+CgkJPFNlcnZpY2U+CgkJCTxSb3V0
148
+ ZT5EQVNHPC9Sb3V0ZT4KCQkJPERpcmVjdGlvbj5LPC9EaXJlY3Rpb24+CgkJ
149
+ CTxTZXJ2aWNldHlwZT5XPC9TZXJ2aWNldHlwZT4KCQkJPFNpZ25hZ2U+REFT
150
+ SCBHdnJubW50IFRvIFN0YXRlIENhcGl0bDwvU2lnbmFnZT4KCQkJPFJvdXRl
151
+ dHlwZT5CPC9Sb3V0ZXR5cGU+CgkJPC9TZXJ2aWNlPgoJCTxTZXJ2aWNlPgoJ
152
+ CQk8Um91dGU+NTQyPC9Sb3V0ZT4KCQkJPERpcmVjdGlvbj5PPC9EaXJlY3Rp
153
+ b24+CgkJCTxTZXJ2aWNldHlwZT5XPC9TZXJ2aWNldHlwZT4KCQkJPFNpZ25h
154
+ Z2U+NTQyIENoYW5kbGVyIFRvIENoYW5kbGVyIFBOUjwvU2lnbmFnZT4KCQkJ
155
+ PFJvdXRldHlwZT5YPC9Sb3V0ZXR5cGU+CgkJPC9TZXJ2aWNlPgoJCTxTZXJ2
156
+ aWNlPgoJCQk8Um91dGU+NTM1PC9Sb3V0ZT4KCQkJPERpcmVjdGlvbj5PPC9E
157
+ aXJlY3Rpb24+CgkJCTxTZXJ2aWNldHlwZT5XPC9TZXJ2aWNldHlwZT4KCQkJ
158
+ PFNpZ25hZ2U+NTM1IE1lc2EgVG8gUG93ZXIgUmQgUE5SIFZpYSBHaWxiL01j
159
+ RHdsIFBOUjwvU2lnbmFnZT4KCQkJPFJvdXRldHlwZT5YPC9Sb3V0ZXR5cGU+
160
+ CgkJPC9TZXJ2aWNlPgoJCTxTZXJ2aWNlPgoJCQk8Um91dGU+NTMxPC9Sb3V0
161
+ ZT4KCQkJPERpcmVjdGlvbj5PPC9EaXJlY3Rpb24+CgkJCTxTZXJ2aWNldHlw
162
+ ZT5XPC9TZXJ2aWNldHlwZT4KCQkJPFNpZ25hZ2U+NTMxIE1lc2EvR2lsYnJ0
163
+ IFRvIERudG4gR2lsYmVydCBWaWEgV2VzdCBNZXNhIFBOUjwvU2lnbmFnZT4K
164
+ CQkJPFJvdXRldHlwZT5YPC9Sb3V0ZXR5cGU+CgkJPC9TZXJ2aWNlPgoJCTxT
165
+ ZXJ2aWNlPgoJCQk8Um91dGU+NTYzPC9Sb3V0ZT4KCQkJPERpcmVjdGlvbj5P
166
+ PC9EaXJlY3Rpb24+CgkJCTxTZXJ2aWNldHlwZT5XPC9TZXJ2aWNldHlwZT4K
167
+ CQkJPFNpZ25hZ2U+NTYzIEJ1Y2tleWUgVG8gQnVja2V5ZSBQJmFtcDtSIFZp
168
+ YSBHb29keWVhciBQJmFtcDtSPC9TaWduYWdlPgoJCQk8Um91dGV0eXBlPlg8
169
+ L1JvdXRldHlwZT4KCQk8L1NlcnZpY2U+CgkJPFNlcnZpY2U+CgkJCTxSb3V0
170
+ ZT4zPC9Sb3V0ZT4KCQkJPERpcmVjdGlvbj5FPC9EaXJlY3Rpb24+CgkJCTxT
171
+ ZXJ2aWNldHlwZT5XPC9TZXJ2aWNldHlwZT4KCQkJPFNpZ25hZ2U+MyBWQU4g
172
+ QlVSRU4gRWFzdCB0byA0OHRoIFN0LjwvU2lnbmFnZT4KCQkJPFJvdXRldHlw
173
+ ZT5CPC9Sb3V0ZXR5cGU+CgkJPC9TZXJ2aWNlPgoJCTxTZXJ2aWNlPgoJCQk8
174
+ Um91dGU+NDAwPC9Sb3V0ZT4KCQkJPERpcmVjdGlvbj5OPC9EaXJlY3Rpb24+
175
+ CgkJCTxTZXJ2aWNldHlwZT5XPC9TZXJ2aWNldHlwZT4KCQkJPFNpZ25hZ2U+
176
+ U1ItNTEgUkFQSUQgVG8gQmVsbC9TUi01MSBWaWEgU2hlYS9TUi01MTwvU2ln
177
+ bmFnZT4KCQkJPFJvdXRldHlwZT5YPC9Sb3V0ZXR5cGU+CgkJPC9TZXJ2aWNl
178
+ PgoJCTxTZXJ2aWNlPgoJCQk8Um91dGU+NTczPC9Sb3V0ZT4KCQkJPERpcmVj
179
+ dGlvbj5PPC9EaXJlY3Rpb24+CgkJCTxTZXJ2aWNldHlwZT5XPC9TZXJ2aWNl
180
+ dHlwZT4KCQkJPFNpZ25hZ2U+NTczIE4gR2xlbmRhbGUgNzUvQmVhcmRzbGV5
181
+ IFZpYSBJLTEwPC9TaWduYWdlPgoJCQk8Um91dGV0eXBlPlg8L1JvdXRldHlw
182
+ ZT4KCQk8L1NlcnZpY2U+CgkJPFNlcnZpY2U+CgkJCTxSb3V0ZT40NTE8L1Jv
183
+ dXRlPgoJCQk8RGlyZWN0aW9uPlM8L0RpcmVjdGlvbj4KCQkJPFNlcnZpY2V0
184
+ eXBlPlc8L1NlcnZpY2V0eXBlPgoJCQk8U2lnbmFnZT5DU00gUkFQSUQgVG8g
185
+ Mjd0aCBBdi9Cc2xuIFBOUjwvU2lnbmFnZT4KCQkJPFJvdXRldHlwZT5YPC9S
186
+ b3V0ZXR5cGU+CgkJPC9TZXJ2aWNlPgoJCTxTZXJ2aWNlPgoJCQk8Um91dGU+
187
+ MTwvUm91dGU+CgkJCTxEaXJlY3Rpb24+RTwvRGlyZWN0aW9uPgoJCQk8U2Vy
188
+ dmljZXR5cGU+VzwvU2VydmljZXR5cGU+CgkJCTxTaWduYWdlPjEgV0FTSElO
189
+ R1RPTiBFYXN0IFRvIFBob2VuaXggWm9vPC9TaWduYWdlPgoJCQk8Um91dGV0
190
+ eXBlPkI8L1JvdXRldHlwZT4KCQk8L1NlcnZpY2U+Cgk8L1JvdXRlcz4KCTxI
191
+ b3N0PnMtcnB0YS1zb2FwPC9Ib3N0PgoJPENvcHlyaWdodD5YTUwgc2NoZW1h
192
+ IENvcHlyaWdodCAoYykgMjAwMy0yMDEyIFRyYXBlemUgU29mdHdhcmUsIElu
193
+ Yy4sIGFsbCByaWdodHMgcmVzZXJ2ZWQuPC9Db3B5cmlnaHQ+Cgk8U29hcHZl
194
+ cnNpb24+Mi41LjIgLSAwNi8wNy8xMjwvU29hcHZlcnNpb24+CjwvbmFtZXNw
195
+ MTpQb2ludDJwb2ludFJlc3BvbnNlPjwvU09BUC1FTlY6Qm9keT48L1NPQVAt
196
+ RU5WOkVudmVsb3BlPg==
197
+
198
+ http_version:
199
+ recorded_at: Thu, 06 Jun 2013 19:05:58 GMT
200
+ recorded_with: VCR 2.4.0