ticketevolution-ruby 0.7.3 → 0.7.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. data/README.markdown +8 -1
  2. data/lib/ticket_evolution.rb +8 -4
  3. data/lib/ticket_evolution/account.rb +1 -0
  4. data/lib/ticket_evolution/client.rb +1 -0
  5. data/lib/ticket_evolution/companies.rb +9 -0
  6. data/lib/ticket_evolution/company.rb +5 -0
  7. data/lib/ticket_evolution/core/endpoint/request_handler.rb +1 -1
  8. data/lib/ticket_evolution/core/model.rb +0 -25
  9. data/lib/ticket_evolution/core/model/parental_behavior.rb +25 -0
  10. data/lib/ticket_evolution/modules/create.rb +12 -5
  11. data/lib/ticket_evolution/modules/destroy.rb +31 -0
  12. data/lib/ticket_evolution/modules/show.rb +2 -2
  13. data/lib/ticket_evolution/rate_option.rb +5 -0
  14. data/lib/ticket_evolution/rate_options.rb +6 -0
  15. data/lib/ticket_evolution/track_detail.rb +5 -0
  16. data/lib/ticket_evolution/track_details.rb +6 -0
  17. data/lib/ticket_evolution/version.rb +1 -1
  18. data/spec/fixtures/fake.rb +3 -3
  19. data/spec/fixtures/net/core/connection.yml +124 -116
  20. data/spec/fixtures/net/endpoints/clients/create.yml +222 -178
  21. data/spec/fixtures/net/endpoints/clients/update_fail.yml +684 -605
  22. data/spec/fixtures/net/endpoints/clients/update_success.yml +604 -537
  23. data/spec/fixtures/net/endpoints/company/destroy_error.yml +120 -0
  24. data/spec/fixtures/net/endpoints/company/destroy_success.yml +284 -0
  25. data/spec/fixtures/net/endpoints/track_details/show.yml +58 -0
  26. data/spec/lib/ticket_evolution/account_spec.rb +1 -0
  27. data/spec/lib/ticket_evolution/client_spec.rb +1 -1
  28. data/spec/lib/ticket_evolution/companies_spec.rb +15 -0
  29. data/spec/lib/ticket_evolution/company_spec.rb +39 -0
  30. data/spec/lib/ticket_evolution/core/model_spec.rb +0 -18
  31. data/spec/lib/ticket_evolution/rate_option_spec.rb +8 -0
  32. data/spec/lib/ticket_evolution/rate_options_spec.rb +7 -0
  33. data/spec/lib/ticket_evolution/track_detail_spec.rb +8 -0
  34. data/spec/lib/ticket_evolution/track_details_spec.rb +32 -0
  35. data/spec/shared_examples/endpoints/create.rb +28 -8
  36. data/spec/shared_examples/endpoints/destroy.rb +67 -0
  37. data/spec/shared_examples/endpoints/show.rb +1 -1
  38. data/spec/shared_examples/models.rb +38 -0
  39. data/spec/spec_helper.rb +1 -0
  40. data/spec/support/stub_models.rb +20 -0
  41. data/ticketevolution-ruby.gemspec +1 -1
  42. metadata +55 -27
  43. data/lib/ticket_evolution/core/models/samples.rb +0 -11
  44. data/lib/ticket_evolution/core/samples.rb +0 -6
data/README.markdown CHANGED
@@ -164,6 +164,13 @@ Click on the links next to each endpoint for more detail.
164
164
  @client = @connection.clients.show(id)
165
165
  @client = @client.update_attributes(params)
166
166
 
167
+ **Company** - [http://developer.ticketevolution.com/endpoints/company](http://developer.ticketevolution.com/endpoints/company)
168
+
169
+ @company = @connection.company.create(params)
170
+ @company = @connection.company.list(params)
171
+ @company = @connection.company.show(id)
172
+ @company = @company.update_attributes(params)
173
+
167
174
  **Configurations** - [http://developer.ticketevolution.com/endpoints/configurations](http://developer.ticketevolution.com/endpoints/configurations)
168
175
 
169
176
  @configuration = @connection.configurations.list(params)
@@ -260,7 +267,7 @@ Click on the links next to each endpoint for more detail.
260
267
  @venue = @connection.venues.show(id)
261
268
 
262
269
 
263
- ######ticketevolution-ruby v0.7.3
270
+ ######ticketevolution-ruby v0.7.4
264
271
 
265
272
  License
266
273
  -------
@@ -48,12 +48,9 @@ c.req 'datum'
48
48
  c.req 'endpoint', 'request_handler'
49
49
  c.req 'endpoint'
50
50
  c.req 'model'
51
+ c.req 'model/parental_behavior'
51
52
  c.req 'time'
52
53
 
53
- # Sample classes for test support
54
- c.req 'models', 'samples'
55
- c.req 'samples'
56
-
57
54
  # Errors
58
55
  c.req 'api_error'
59
56
  i.req 'errors', 'connection_not_found'
@@ -64,6 +61,7 @@ i.req 'errors', 'method_unavailable_error'
64
61
  # Endpoint modules
65
62
  m.req 'create'
66
63
  m.req 'deleted'
64
+ m.req 'destroy'
67
65
  m.req 'list'
68
66
  m.req 'search'
69
67
  m.req 'show'
@@ -74,6 +72,7 @@ i.req 'account'
74
72
  i.req 'address'
75
73
  i.req 'brokerage'
76
74
  i.req 'category'
75
+ i.req 'company'
77
76
  i.req 'client'
78
77
  i.req 'configuration'
79
78
  i.req 'credit_card'
@@ -84,8 +83,10 @@ i.req 'order'
84
83
  i.req 'performer'
85
84
  i.req 'phone_number'
86
85
  i.req 'quote'
86
+ i.req 'rate_option'
87
87
  i.req 'shipment'
88
88
  i.req 'ticket_group'
89
+ i.req 'track_detail'
89
90
  i.req 'transaction'
90
91
  i.req 'user'
91
92
  i.req 'venue'
@@ -94,6 +95,7 @@ i.req 'venue'
94
95
  i.req 'accounts'
95
96
  i.req 'brokerages'
96
97
  i.req 'categories'
98
+ i.req 'companies'
97
99
  i.req 'clients'
98
100
  i.req 'configurations'
99
101
  i.req 'events'
@@ -101,8 +103,10 @@ i.req 'offices'
101
103
  i.req 'orders'
102
104
  i.req 'performers'
103
105
  i.req 'quotes'
106
+ i.req 'rate_options'
104
107
  i.req 'shipments'
105
108
  i.req 'ticket_groups'
109
+ i.req 'track_details'
106
110
  i.req 'transactions'
107
111
  i.req 'users'
108
112
  i.req 'venues'
@@ -1,4 +1,5 @@
1
1
  module TicketEvolution
2
2
  class Account < Model
3
+ include Model::ParentalBehavior
3
4
  end
4
5
  end
@@ -1,4 +1,5 @@
1
1
  module TicketEvolution
2
2
  class Client < Model
3
+ include Model::ParentalBehavior
3
4
  end
4
5
  end
@@ -0,0 +1,9 @@
1
+ module TicketEvolution
2
+ class Companies < Endpoint
3
+ include TicketEvolution::Modules::Create
4
+ include TicketEvolution::Modules::Destroy
5
+ include TicketEvolution::Modules::List
6
+ include TicketEvolution::Modules::Show
7
+ include TicketEvolution::Modules::Update
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ module TicketEvolution
2
+ class Company < Model
3
+ end
4
+ end
5
+
@@ -29,7 +29,7 @@ module TicketEvolution
29
29
  request.send(method)
30
30
  else
31
31
  request.send(method) do |req|
32
- req.body = MultiJson.encode(params)
32
+ req.body = MultiJson.encode(params) if params.present?
33
33
  end
34
34
  end
35
35
  end
@@ -41,31 +41,6 @@ module TicketEvolution
41
41
  end
42
42
  end
43
43
 
44
- def new_ostruct_member(name)
45
- begin
46
- name = super
47
- class << self; self; end.class_eval do
48
- define_method(name) do
49
- begin
50
- obj = @table[name]
51
- unless obj.nil?
52
- def obj.endpoint=(e); @endpoint = e; end
53
- def obj.method_missing(method, *args); @endpoint.send(method, *args); end
54
- named_endpoint = "#{self.plural_class_name}::#{name.to_s.camelize}".constantize
55
- obj.endpoint = named_endpoint.new(:parent => self.plural_class.new(:id => self.id, :parent => @connection))
56
- end
57
- obj
58
- rescue
59
- @table[name]
60
- end
61
- end
62
- end
63
- name
64
- rescue
65
- super
66
- end
67
- end
68
-
69
44
  private
70
45
 
71
46
  def process_datum(v)
@@ -0,0 +1,25 @@
1
+ module TicketEvolution
2
+ class Model
3
+ module ParentalBehavior
4
+ def new_ostruct_member(name)
5
+ ostruct_method = super
6
+
7
+ named_endpoint = "#{self.plural_class_name}::#{name.to_s.camelize}".constantize
8
+ class << self; self; end.class_eval do
9
+ define_method(name) do
10
+ obj = @table[name.to_sym]
11
+ unless obj.nil?
12
+ def obj.endpoint=(e); @endpoint = e; end
13
+ def obj.method_missing(method, *args); @endpoint.send(method, *args); end
14
+ obj.endpoint = named_endpoint.new(:parent => self.plural_class.new(:id => self.id, :parent => @connection))
15
+ end
16
+ obj
17
+ end
18
+ end
19
+ ostruct_method
20
+ rescue NameError => e
21
+ ostruct_method
22
+ end
23
+ end
24
+ end
25
+ end
@@ -8,11 +8,18 @@ module TicketEvolution
8
8
  end
9
9
 
10
10
  def build_for_create(response)
11
- singular_class.new(response.body[endpoint_name].first.merge({
12
- :status_code => response.response_code,
13
- :server_message => response.server_message,
14
- :connection => response.body[:connection]
15
- }))
11
+ entries = response.body[endpoint_name].collect do |body|
12
+ singular_class.new(body.merge({
13
+ :status_code => response.response_code,
14
+ :server_message => response.server_message,
15
+ :connection => response.body[:connection]
16
+ }))
17
+ end
18
+ if entries.size == 1
19
+ entries.first
20
+ else
21
+ TicketEvolution::Collection.new(:entries => entries, :code => response.response_code)
22
+ end
16
23
  end
17
24
  end
18
25
  end
@@ -0,0 +1,31 @@
1
+ module TicketEvolution
2
+ module Modules
3
+ module Destroy
4
+ def self.included(klass)
5
+ Class.new{extend SingularClass}.singular_class(klass.name).send(:include, Module.new{
6
+ def destroy
7
+ response = plural_class.new({:parent => @connection, :id => self.id}).destroy
8
+ if response === true
9
+ self.freeze
10
+ end
11
+
12
+ response
13
+ end
14
+
15
+ alias :delete :destroy
16
+ })
17
+ end
18
+
19
+ def destroy(&handler)
20
+ ensure_id
21
+ handler ||= method(:build_for_destroy)
22
+ request(:DELETE, nil, nil, &handler)
23
+ end
24
+
25
+ def build_for_destroy(response)
26
+ return true
27
+ end
28
+ end
29
+ end
30
+ end
31
+
@@ -1,9 +1,9 @@
1
1
  module TicketEvolution
2
2
  module Modules
3
3
  module Show
4
- def show(id, &handler)
4
+ def show(id, params=nil, &handler)
5
5
  handler ||= method(:build_for_show)
6
- request(:GET, "/#{id}", &handler)
6
+ request(:GET, "/#{id}", params, &handler)
7
7
  end
8
8
 
9
9
  alias :find :show
@@ -0,0 +1,5 @@
1
+ module TicketEvolution
2
+ class RateOption < Model
3
+ end
4
+ end
5
+
@@ -0,0 +1,6 @@
1
+ module TicketEvolution
2
+ class RateOptions < Endpoint
3
+ include TicketEvolution::Modules::Create
4
+ end
5
+ end
6
+
@@ -0,0 +1,5 @@
1
+ module TicketEvolution
2
+ class TrackDetail < Model
3
+ end
4
+ end
5
+
@@ -0,0 +1,6 @@
1
+ module TicketEvolution
2
+ class TrackDetails < Endpoint
3
+ include TicketEvolution::Modules::Show
4
+ end
5
+ end
6
+
@@ -1,3 +1,3 @@
1
1
  module TicketEvolution
2
- VERSION = '0.7.3'
2
+ VERSION = '0.7.4'
3
3
  end
@@ -79,11 +79,11 @@ class Fake
79
79
  r
80
80
  end
81
81
 
82
- def self.create_response(endpoint = nil, connection = Fake.connection)
82
+ def self.create_response(endpoint = nil, connection = Fake.connection, number = 1)
83
83
  r = self.response
84
84
  r.body = {
85
85
  :connection => connection,
86
- endpoint.to_s => [
86
+ endpoint.to_s => number.times.collect do
87
87
  {
88
88
  "url" => "/clients/2097",
89
89
  "email_addresses" => [],
@@ -93,7 +93,7 @@ class Fake
93
93
  "name"=>"Morris Moe Szyslak",
94
94
  "id"=>"2097"
95
95
  }
96
- ]
96
+ end
97
97
  }
98
98
  r
99
99
  end
@@ -1,192 +1,200 @@
1
- ---
2
- - !ruby/struct:VCR::HTTPInteraction
3
- request: !ruby/struct:VCR::Request
1
+ ---
2
+ - !ruby/struct:VCR::HTTPInteraction
3
+ request: !ruby/struct:VCR::Request
4
4
  method: :get
5
5
  uri: https://api.sandbox.ticketevolution.com:443/events?per_page=1
6
6
  body: !!null
7
- headers:
8
- accept:
7
+ str: ""
8
+ :@taguri: x-private:null
9
+ headers:
10
+ accept:
9
11
  - application/vnd.ticketevolution.api+json; version=8
10
- x-signature:
12
+ x-signature:
11
13
  - /hAF/kZM8++wnmzsVNPjMtsbrX09Vz4QeKNUeVGR3Dc=
12
- x-token:
14
+ x-token:
13
15
  - 621e8a816a4e31a4dcf9f450e6de150f
14
- response: !ruby/struct:VCR::Response
15
- status: !ruby/struct:VCR::ResponseStatus
16
+ response: !ruby/struct:VCR::Response
17
+ status: !ruby/struct:VCR::ResponseStatus
16
18
  code: 401
17
19
  message: Unauthorized
18
- headers:
19
- content-type:
20
+ headers:
21
+ content-type:
20
22
  - application/vnd.ticketevolution.api+json; version=8; charset=utf-8
21
- transfer-encoding:
23
+ transfer-encoding:
22
24
  - chunked
23
- connection:
25
+ connection:
24
26
  - keep-alive
25
- status:
26
- - '401'
27
- x-powered-by:
27
+ status:
28
+ - "401"
29
+ x-powered-by:
28
30
  - Phusion Passenger (mod_rails/mod_rack) 3.0.11
29
- x-ua-compatible:
31
+ x-ua-compatible:
30
32
  - IE=Edge,chrome=1
31
- x-runtime:
32
- - '0.562800'
33
- cache-control:
33
+ x-runtime:
34
+ - "0.562800"
35
+ cache-control:
34
36
  - no-cache
35
- strict-transport-security:
37
+ strict-transport-security:
36
38
  - max-age=31536000
37
- server:
39
+ server:
38
40
  - nginx/1.0.11 + Phusion Passenger 3.0.11 (mod_rails/mod_rack)
39
- body: ! '{"error":"Unauthorized"}'
40
- http_version: '1.1'
41
- - !ruby/struct:VCR::HTTPInteraction
42
- request: !ruby/struct:VCR::Request
41
+ body: "{\"error\":\"Unauthorized\"}"
42
+ http_version: "1.1"
43
+ - !ruby/struct:VCR::HTTPInteraction
44
+ request: !ruby/struct:VCR::Request
43
45
  method: :get
44
46
  uri: https://api.sandbox.ticketevolution.com:443/events?per_page=1
45
47
  body: !!null
46
- headers:
47
- accept:
48
+ str: ""
49
+ :@taguri: x-private:null
50
+ headers:
51
+ accept:
48
52
  - application/vnd.ticketevolution.api+json; version=8
49
- x-signature:
53
+ x-signature:
50
54
  - /hAF/kZM8++wnmzsVNPjMtsbrX09Vz4QeKNUeVGR3Dc=
51
- x-token:
55
+ x-token:
52
56
  - 621e8a816a4e31a4dcf9f450e6de150f
53
- response: !ruby/struct:VCR::Response
54
- status: !ruby/struct:VCR::ResponseStatus
57
+ response: !ruby/struct:VCR::Response
58
+ status: !ruby/struct:VCR::ResponseStatus
55
59
  code: 401
56
60
  message: Unauthorized
57
- headers:
58
- content-type:
61
+ headers:
62
+ content-type:
59
63
  - application/vnd.ticketevolution.api+json; version=8; charset=utf-8
60
- transfer-encoding:
64
+ transfer-encoding:
61
65
  - chunked
62
- connection:
66
+ connection:
63
67
  - keep-alive
64
- status:
65
- - '401'
66
- x-powered-by:
68
+ status:
69
+ - "401"
70
+ x-powered-by:
67
71
  - Phusion Passenger (mod_rails/mod_rack) 3.0.11
68
- x-ua-compatible:
72
+ x-ua-compatible:
69
73
  - IE=Edge,chrome=1
70
- x-runtime:
71
- - '0.562800'
72
- cache-control:
74
+ x-runtime:
75
+ - "0.562800"
76
+ cache-control:
73
77
  - no-cache
74
- strict-transport-security:
78
+ strict-transport-security:
75
79
  - max-age=31536000
76
- server:
80
+ server:
77
81
  - nginx/1.0.11 + Phusion Passenger 3.0.11 (mod_rails/mod_rack)
78
- body: ! '{"error":"Unauthorized"}'
79
- http_version: '1.1'
80
- - !ruby/struct:VCR::HTTPInteraction
81
- request: !ruby/struct:VCR::Request
82
+ body: "{\"error\":\"Unauthorized\"}"
83
+ http_version: "1.1"
84
+ - !ruby/struct:VCR::HTTPInteraction
85
+ request: !ruby/struct:VCR::Request
82
86
  method: :get
83
87
  uri: https://api.sandbox.ticketevolution.com:443/?
84
88
  body: !!null
85
- headers:
86
- accept:
89
+ str: ""
90
+ :@taguri: x-private:null
91
+ headers:
92
+ accept:
87
93
  - application/vnd.ticketevolution.api+json; version=8
88
- x-signature:
94
+ x-signature:
89
95
  - 6tWs3CIO4szKWCKxo8OkrtPCxTsdgjAT32LrpgZvr4M=
90
- x-token:
96
+ x-token:
91
97
  - 621e8a816a4e31a4dcf9f450e6de150f
92
- response: !ruby/struct:VCR::Response
93
- status: !ruby/struct:VCR::ResponseStatus
98
+ response: !ruby/struct:VCR::Response
99
+ status: !ruby/struct:VCR::ResponseStatus
94
100
  code: 301
95
101
  message: Moved Permanently
96
- headers:
97
- content-type:
102
+ headers:
103
+ content-type:
98
104
  - text/html
99
- connection:
105
+ connection:
100
106
  - keep-alive
101
- status:
102
- - '301'
103
- x-powered-by:
107
+ status:
108
+ - "301"
109
+ x-powered-by:
104
110
  - Phusion Passenger (mod_rails/mod_rack) 3.0.11
105
- x-ua-compatible:
111
+ x-ua-compatible:
106
112
  - IE=Edge,chrome=1
107
- location:
113
+ location:
108
114
  - http://developer.ticketevolution.com
109
- x-runtime:
110
- - '0.001729'
111
- content-length:
112
- - '102'
113
- server:
115
+ x-runtime:
116
+ - "0.001729"
117
+ content-length:
118
+ - "102"
119
+ server:
114
120
  - nginx/1.0.11 + Phusion Passenger 3.0.11 (mod_rails/mod_rack)
115
121
  body: <html><body>You are being <a href="http://developer.ticketevolution.com">redirected</a>.</body></html>
116
- http_version: '1.1'
117
- - !ruby/struct:VCR::HTTPInteraction
118
- request: !ruby/struct:VCR::Request
122
+ http_version: "1.1"
123
+ - !ruby/struct:VCR::HTTPInteraction
124
+ request: !ruby/struct:VCR::Request
119
125
  method: :get
120
126
  uri: https://api.sandbox.ticketevolution.com:443/?
121
127
  body: !!null
122
- headers:
123
- accept:
128
+ str: ""
129
+ :@taguri: x-private:null
130
+ headers:
131
+ accept:
124
132
  - application/vnd.ticketevolution.api+json; version=8
125
- x-signature:
133
+ x-signature:
126
134
  - 6tWs3CIO4szKWCKxo8OkrtPCxTsdgjAT32LrpgZvr4M=
127
- x-token:
135
+ x-token:
128
136
  - 621e8a816a4e31a4dcf9f450e6de150f
129
- response: !ruby/struct:VCR::Response
130
- status: !ruby/struct:VCR::ResponseStatus
137
+ response: !ruby/struct:VCR::Response
138
+ status: !ruby/struct:VCR::ResponseStatus
131
139
  code: 301
132
140
  message: Moved Permanently
133
- headers:
134
- content-type:
141
+ headers:
142
+ content-type:
135
143
  - text/html
136
- connection:
144
+ connection:
137
145
  - keep-alive
138
- status:
139
- - '301'
140
- x-powered-by:
146
+ status:
147
+ - "301"
148
+ x-powered-by:
141
149
  - Phusion Passenger (mod_rails/mod_rack) 3.0.11
142
- x-ua-compatible:
150
+ x-ua-compatible:
143
151
  - IE=Edge,chrome=1
144
- location:
152
+ location:
145
153
  - http://developer.ticketevolution.com
146
- x-runtime:
147
- - '0.001729'
148
- content-length:
149
- - '102'
150
- server:
154
+ x-runtime:
155
+ - "0.001729"
156
+ content-length:
157
+ - "102"
158
+ server:
151
159
  - nginx/1.0.11 + Phusion Passenger 3.0.11 (mod_rails/mod_rack)
152
160
  body: <html><body>You are being <a href="http://developer.ticketevolution.com">redirected</a>.</body></html>
153
- http_version: '1.1'
154
- - !ruby/struct:VCR::HTTPInteraction
155
- request: !ruby/struct:VCR::Request
161
+ http_version: "1.1"
162
+ - !ruby/struct:VCR::HTTPInteraction
163
+ request: !ruby/struct:VCR::Request
156
164
  method: :get
157
165
  uri: https://api.sandbox.ticketevolution.com:443/
158
- body: !!null
159
- headers:
160
- x-signature:
161
- - EHMCoxW80aA60GAi04x5zWHsthNwAijm8tu85Dw9mw0=
162
- x-token:
166
+ body:
167
+ headers:
168
+ x-signature:
169
+ - d/f1SDPcpxRpECi9Uu1bt6VpeN+zS+J3y3FJia5ZFEM=
170
+ x-token:
163
171
  - 621e8a816a4e31a4dcf9f450e6de150f
164
- accept:
172
+ accept:
165
173
  - application/vnd.ticketevolution.api+json; version=8
166
- accept-encoding:
174
+ accept-encoding:
167
175
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
168
- response: !ruby/struct:VCR::Response
169
- status: !ruby/struct:VCR::ResponseStatus
176
+ response: !ruby/struct:VCR::Response
177
+ status: !ruby/struct:VCR::ResponseStatus
170
178
  code: 301
171
179
  message: Moved Permanently
172
- headers:
173
- content-type:
180
+ headers:
181
+ content-type:
174
182
  - text/html
175
- connection:
183
+ connection:
176
184
  - keep-alive
177
- status:
178
- - '301'
179
- x-powered-by:
185
+ status:
186
+ - "301"
187
+ x-powered-by:
180
188
  - Phusion Passenger (mod_rails/mod_rack) 3.0.11
181
- x-ua-compatible:
189
+ x-runtime:
190
+ - "0.001224"
191
+ content-length:
192
+ - "102"
193
+ x-ua-compatible:
182
194
  - IE=Edge,chrome=1
183
- location:
195
+ location:
184
196
  - http://developer.ticketevolution.com
185
- x-runtime:
186
- - '0.002040'
187
- content-length:
188
- - '102'
189
- server:
197
+ server:
190
198
  - nginx/1.0.11 + Phusion Passenger 3.0.11 (mod_rails/mod_rack)
191
199
  body: <html><body>You are being <a href="http://developer.ticketevolution.com">redirected</a>.</body></html>
192
- http_version: '1.1'
200
+ http_version: "1.1"