bbk-http 0.1.0.200309

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: d3bffcd0e37e308bec5406e02061b8ddff74a4ae9315b1d82bc91b59bd095928
4
+ data.tar.gz: a69d33b569c997e79f5fa54bd575ff328fe7e16ad0f6f522cd8b032866d9133b
5
+ SHA512:
6
+ metadata.gz: 6d447ef1c9998314cdf0bba00ba136f614c78184737285f63b66d6f8ed8da977d144c0a79ca3332146814d1540a4ede137d523d444fa30b359e46be2c0031133
7
+ data.tar.gz: 55c64cdefe22ef90c95956b9a17c1633b7ac250b0ab2d1ed1a3db1b25a4edc15b063762b5a8900de1744519d3a2dc924a6379840bb1cf9d2cd85b7c0c63ce167
data/Gemfile ADDED
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ # Specify your gem's dependencies in bbk-http.gemspec
6
+ gemspec
7
+
8
+ gem 'rake', '~> 13.0'
9
+
10
+ gem 'rspec', '~> 3.0'
11
+
12
+ gem 'rubocop', '~> 1.21'
13
+
data/Gemfile.lock ADDED
@@ -0,0 +1,208 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ bbk-http (0.1.0.200309)
5
+ activesupport (>= 6.0)
6
+ bbk-utils (> 1.0.1)
7
+ faraday (~> 2.7.12)
8
+ oj (~> 3.16.2)
9
+
10
+ GEM
11
+ remote: https://rubygems.org/
12
+ specs:
13
+ activesupport (7.1.2)
14
+ base64
15
+ bigdecimal
16
+ concurrent-ruby (~> 1.0, >= 1.0.2)
17
+ connection_pool (>= 2.2.5)
18
+ drb
19
+ i18n (>= 1.6, < 2)
20
+ minitest (>= 5.1)
21
+ mutex_m
22
+ tzinfo (~> 2.0)
23
+ addressable (2.8.6)
24
+ public_suffix (>= 2.0.2, < 6.0)
25
+ amq-protocol (2.3.2)
26
+ ansi (1.5.0)
27
+ ast (2.4.2)
28
+ axiom-types (0.1.1)
29
+ descendants_tracker (~> 0.0.4)
30
+ ice_nine (~> 0.11.0)
31
+ thread_safe (~> 0.3, >= 0.3.1)
32
+ base64 (0.2.0)
33
+ bbk-app (1.1.0.200186)
34
+ activesupport
35
+ bbk-utils (> 1.0.1)
36
+ timeouter
37
+ bbk-utils (1.1.0.181866)
38
+ activesupport (>= 7.0)
39
+ russian
40
+ bigdecimal (3.1.4)
41
+ bunny (2.22.0)
42
+ amq-protocol (~> 2.3, >= 2.3.1)
43
+ sorted_set (~> 1, >= 1.0.2)
44
+ bunny-mock (1.7.0)
45
+ bunny (>= 1.7)
46
+ byebug (11.1.3)
47
+ coercible (1.0.0)
48
+ descendants_tracker (~> 0.0.1)
49
+ concurrent-ruby (1.2.2)
50
+ connection_pool (2.4.1)
51
+ crack (0.4.5)
52
+ rexml
53
+ daemons (1.4.1)
54
+ descendants_tracker (0.0.4)
55
+ thread_safe (~> 0.3, >= 0.3.1)
56
+ diff-lcs (1.5.0)
57
+ docile (1.4.0)
58
+ drb (2.2.0)
59
+ ruby2_keywords
60
+ erubi (1.12.0)
61
+ eventmachine (1.2.7)
62
+ faraday (2.7.12)
63
+ base64
64
+ faraday-net_http (>= 2.0, < 3.1)
65
+ ruby2_keywords (>= 0.0.4)
66
+ faraday-net_http (3.0.2)
67
+ flay (2.13.1)
68
+ erubi (~> 1.10)
69
+ path_expander (~> 1.0)
70
+ ruby_parser (~> 3.0)
71
+ sexp_processor (~> 4.0)
72
+ flog (4.8.0)
73
+ path_expander (~> 1.0)
74
+ ruby_parser (~> 3.1, > 3.1.0)
75
+ sexp_processor (~> 4.8)
76
+ hashdiff (1.0.1)
77
+ i18n (1.14.1)
78
+ concurrent-ruby (~> 1.0)
79
+ ice_nine (0.11.2)
80
+ json (2.7.1)
81
+ kwalify (0.7.2)
82
+ language_server-protocol (3.17.0.3)
83
+ launchy (2.5.2)
84
+ addressable (~> 2.8)
85
+ minitest (5.20.0)
86
+ mutex_m (0.2.0)
87
+ oj (3.16.2)
88
+ bigdecimal (~> 3.1)
89
+ parallel (1.23.0)
90
+ parser (3.2.2.4)
91
+ ast (~> 2.4.1)
92
+ racc
93
+ path_expander (1.1.1)
94
+ public_suffix (5.0.4)
95
+ racc (1.7.3)
96
+ rack (2.2.8)
97
+ rainbow (3.1.1)
98
+ rake (13.1.0)
99
+ rbtree (0.4.6)
100
+ reek (6.1.4)
101
+ kwalify (~> 0.7.0)
102
+ parser (~> 3.2.0)
103
+ rainbow (>= 2.0, < 4.0)
104
+ regexp_parser (2.8.3)
105
+ rexml (3.2.6)
106
+ rspec (3.12.0)
107
+ rspec-core (~> 3.12.0)
108
+ rspec-expectations (~> 3.12.0)
109
+ rspec-mocks (~> 3.12.0)
110
+ rspec-core (3.12.2)
111
+ rspec-support (~> 3.12.0)
112
+ rspec-expectations (3.12.3)
113
+ diff-lcs (>= 1.2.0, < 2.0)
114
+ rspec-support (~> 3.12.0)
115
+ rspec-mocks (3.12.6)
116
+ diff-lcs (>= 1.2.0, < 2.0)
117
+ rspec-support (~> 3.12.0)
118
+ rspec-support (3.12.1)
119
+ rspec_junit_formatter (0.6.0)
120
+ rspec-core (>= 2, < 4, != 2.12.0)
121
+ rubocop (1.59.0)
122
+ json (~> 2.3)
123
+ language_server-protocol (>= 3.17.0)
124
+ parallel (~> 1.10)
125
+ parser (>= 3.2.2.4)
126
+ rainbow (>= 2.2.2, < 4.0)
127
+ regexp_parser (>= 1.8, < 3.0)
128
+ rexml (>= 3.2.5, < 4.0)
129
+ rubocop-ast (>= 1.30.0, < 2.0)
130
+ ruby-progressbar (~> 1.7)
131
+ unicode-display_width (>= 2.4.0, < 3.0)
132
+ rubocop-ast (1.30.0)
133
+ parser (>= 3.2.1.0)
134
+ ruby-progressbar (1.13.0)
135
+ ruby2_keywords (0.0.5)
136
+ ruby_parser (3.20.3)
137
+ sexp_processor (~> 4.16)
138
+ rubycritic (4.9.0)
139
+ flay (~> 2.13)
140
+ flog (~> 4.7)
141
+ launchy (>= 2.5.2)
142
+ parser (>= 3.2.2.1)
143
+ rainbow (~> 3.1.1)
144
+ reek (~> 6.0, < 7.0)
145
+ rexml
146
+ ruby_parser (~> 3.20)
147
+ simplecov (>= 0.22.0)
148
+ tty-which (~> 0.5.0)
149
+ virtus (~> 2.0)
150
+ russian (0.6.0)
151
+ i18n (>= 0.5.0)
152
+ set (1.0.4)
153
+ sexp_processor (4.17.0)
154
+ simplecov (0.22.0)
155
+ docile (~> 1.1)
156
+ simplecov-html (~> 0.11)
157
+ simplecov_json_formatter (~> 0.1)
158
+ simplecov-console (0.9.1)
159
+ ansi
160
+ simplecov
161
+ terminal-table
162
+ simplecov-html (0.12.3)
163
+ simplecov_json_formatter (0.1.4)
164
+ sorted_set (1.0.3)
165
+ rbtree
166
+ set (~> 1.0)
167
+ terminal-table (3.0.2)
168
+ unicode-display_width (>= 1.1.1, < 3)
169
+ thin (1.8.2)
170
+ daemons (~> 1.0, >= 1.0.9)
171
+ eventmachine (~> 1.0, >= 1.0.4)
172
+ rack (>= 1, < 3)
173
+ thread_safe (0.3.6)
174
+ timeouter (0.1.3.38794)
175
+ tty-which (0.5.0)
176
+ tzinfo (2.0.6)
177
+ concurrent-ruby (~> 1.0)
178
+ unicode-display_width (2.5.0)
179
+ virtus (2.0.0)
180
+ axiom-types (~> 0.1)
181
+ coercible (~> 1.0)
182
+ descendants_tracker (~> 0.0, >= 0.0.3)
183
+ webmock (3.19.1)
184
+ addressable (>= 2.8.0)
185
+ crack (>= 0.3.2)
186
+ hashdiff (>= 0.4.0, < 2.0.0)
187
+
188
+ PLATFORMS
189
+ x86_64-linux
190
+
191
+ DEPENDENCIES
192
+ bbk-app (~> 1.1.0.200186)
193
+ bbk-http!
194
+ bunny-mock
195
+ byebug
196
+ rack
197
+ rake (~> 13.0)
198
+ rspec (~> 3.0)
199
+ rspec_junit_formatter
200
+ rubocop (~> 1.21)
201
+ rubycritic
202
+ simplecov
203
+ simplecov-console
204
+ thin (~> 1.8.2)
205
+ webmock (~> 3.19.1)
206
+
207
+ BUNDLED WITH
208
+ 2.4.17
data/README.md ADDED
@@ -0,0 +1,31 @@
1
+ # Bbk::Http
2
+
3
+ TODO: Delete this and the text below, and describe your gem
4
+
5
+ Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/bbk/http`. To experiment with that code, run `bin/console` for an interactive prompt.
6
+
7
+ ## Installation
8
+
9
+ TODO: Replace `UPDATE_WITH_YOUR_GEM_NAME_PRIOR_TO_RELEASE_TO_RUBYGEMS_ORG` with your gem name right after releasing it to RubyGems.org. Please do not do it earlier due to security reasons. Alternatively, replace this section with instructions to install your gem from git if you don't plan to release to RubyGems.org.
10
+
11
+ Install the gem and add to the application's Gemfile by executing:
12
+
13
+ $ bundle add UPDATE_WITH_YOUR_GEM_NAME_PRIOR_TO_RELEASE_TO_RUBYGEMS_ORG
14
+
15
+ If bundler is not being used to manage dependencies, install the gem by executing:
16
+
17
+ $ gem install UPDATE_WITH_YOUR_GEM_NAME_PRIOR_TO_RELEASE_TO_RUBYGEMS_ORG
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Development
24
+
25
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
26
+
27
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
28
+
29
+ ## Contributing
30
+
31
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/bbk-http.
data/bin/console ADDED
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'bundler/setup'
5
+ require 'bbk/http'
6
+
7
+ # You can add fixtures and/or initialization code here to make experimenting
8
+ # with your gem easier. You can also use a different console, if you like.
9
+
10
+ require 'irb'
11
+ IRB.start(__FILE__)
12
+
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,50 @@
1
+ require 'oj'
2
+
3
+ module BBK
4
+ module HTTP
5
+ class Message
6
+
7
+ attr_reader :consumer, :headers, :payload, :delivery_info
8
+ alias body payload
9
+
10
+ def initialize(consumer, headers, payload, delivery_info: {}, protocol: nil)
11
+ @consumer = consumer
12
+ @headers = headers.with_indifferent_access
13
+ @payload = payload
14
+ @payload = @payload.with_indifferent_access if @payload.is_a?(Hash)
15
+ @delivery_info = delivery_info
16
+ @protocol = protocol
17
+ end
18
+
19
+ def message_id
20
+ headers[:message_id]
21
+ end
22
+
23
+ def reply_to
24
+ headers[:reply_to]
25
+ end
26
+
27
+ def user_id
28
+ headers[:user_id]
29
+ end
30
+
31
+ def protocol
32
+ @protocol.presence || @consumer&.protocols&.first
33
+ end
34
+
35
+ def ack(*args, answer: nil, **kwargs)
36
+ consumer.ack(self, *args, answer: answer, **kwargs)
37
+ end
38
+
39
+ def nack(*args, error: nil, **kwargs)
40
+ consumer.nack(self, *args, error: error, **kwargs)
41
+ end
42
+
43
+ def clone
44
+ self.class.new(@consumer, headers, payload, protocol: @protocol)
45
+ end
46
+
47
+ end
48
+ end
49
+ end
50
+
@@ -0,0 +1,40 @@
1
+ module BBK
2
+ module HTTP
3
+ # MessageConsumer is partial consumer like object with ack and nack methods.
4
+ # Used for initialize HTTP message
5
+ class MessageConsumer
6
+
7
+
8
+ PROTOCOLS = %w[http https].freeze
9
+
10
+ def initialize(ack_action, nack_action)
11
+ @ack_action = ack_action
12
+ @nack_action = nack_action
13
+ @answered = false
14
+ end
15
+
16
+ def sync?
17
+ true
18
+ end
19
+
20
+ def protocols
21
+ PROTOCOLS
22
+ end
23
+
24
+ def ack(incoming, *args, answer: nil, **kwargs)
25
+ @answered = true unless answer.nil?
26
+ @ack_action.call(incoming, *args, answer: answer, **kwargs)
27
+ end
28
+
29
+ def nack(*args, **kwargs)
30
+ @nack_action.call(*args, **kwargs)
31
+ end
32
+
33
+ def answered?
34
+ @answered
35
+ end
36
+
37
+ end
38
+ end
39
+ end
40
+
@@ -0,0 +1,36 @@
1
+ require 'bbk/http/message_consumer'
2
+
3
+ module BBK
4
+ module HTTP
5
+ class MessageConsumerBuilder
6
+
7
+ def initialize
8
+ @ack_action = nil
9
+ @nack_action = nil
10
+ end
11
+
12
+ def with_ack_action(&block)
13
+ raise ArgumentError.new('Empty block') unless block_given?
14
+
15
+ @ack_action = block
16
+ self
17
+ end
18
+
19
+ def with_nack_action(&block)
20
+ raise ArgumentError.new('Empty block') unless block_given?
21
+
22
+ @nack_action = block
23
+ self
24
+ end
25
+
26
+ def build
27
+ raise ArgumentError.new('Empty ack action funtion') if @ack_action.nil?
28
+ raise ArgumentError.new('Empty nack action function') if @nack_action.nil?
29
+
30
+ MessageConsumer.new(@ack_action, @nack_action)
31
+ end
32
+
33
+ end
34
+ end
35
+ end
36
+
@@ -0,0 +1,90 @@
1
+ require 'concurrent'
2
+ require 'faraday'
3
+ require 'oj'
4
+
5
+ module BBK
6
+ module HTTP
7
+ class Publisher
8
+
9
+ PROTOCOLS = %w[http https].freeze
10
+ CONTENT_TYPE_HEADER = 'Content-Type'.freeze
11
+ METHODS = Faraday::Connection::METHODS
12
+
13
+ Oj::Rails.mimic_JSON
14
+
15
+ class PublishError < StandardError
16
+
17
+ DEFAULT_MESSAGE = 'HTTP publishing error'.freeze
18
+
19
+ attr_reader :context
20
+
21
+ def initialize(context, message: DEFAULT_MESSAGE)
22
+ super(message)
23
+ @context = context
24
+ end
25
+
26
+ end
27
+
28
+ attr_reader :domains, :logger
29
+
30
+ def initialize(domains, default_connection_options: {}, logger: BBK::HTTP.logger)
31
+ @domains = domains
32
+ @default_connection_options = default_connection_options
33
+ @logger = ActiveSupport::TaggedLogging.new(logger).tagged(self.class.name)
34
+ end
35
+
36
+ def protocols
37
+ PROTOCOLS
38
+ end
39
+
40
+ def close; end
41
+
42
+ def publish(result)
43
+ logger.debug "Try publish dispatcher result #{result.inspect}"
44
+ route = result.route
45
+ result_domain = route.domain
46
+
47
+ raise "Unsupported protocol #{route.scheme}" unless PROTOCOLS.include?(route.scheme)
48
+ raise "Unknown domain #{result_domain}" unless domains.has?(result_domain)
49
+
50
+ domain = domains[result_domain]
51
+ route_info = domain.call(route)
52
+ logger.debug "Route #{route.inspect} transformed to #{route_info.inspect}"
53
+ headers = { **result.message.headers, **route_info.headers }.transform_values(&:to_s)
54
+ raw_publish(
55
+ route_info.uri,
56
+ method: route_info.method,
57
+ options: route_info.options,
58
+ body: result.message.payload,
59
+ headers: headers
60
+ )
61
+ end
62
+
63
+ def raw_publish(uri, method:, options: {}, body: nil, headers: nil)
64
+ raise "Unsupported method(#{method.inspect})" unless METHODS.include?(method.to_sym)
65
+
66
+ content_type = headers.fetch(CONTENT_TYPE_HEADER, Faraday::Request::Json::MIME_TYPE)
67
+ payload = if content_type == Faraday::Request::Json::MIME_TYPE
68
+ Oj.generate(body)
69
+ else
70
+ body
71
+ end
72
+ headers[CONTENT_TYPE_HEADER] = content_type
73
+ options = @default_connection_options.merge(options)
74
+ logger.debug("Connection options: #{options}") if options.present?
75
+ response = Faraday.new(uri, **options).send(method.to_sym, '', payload, headers)
76
+ Concurrent::Promises.resolvable_future.tap do |f|
77
+ data = response.to_hash
78
+ if response.success?
79
+ f.fulfill(data)
80
+ else
81
+ logger.error "Get error response #{data.except(:body)}"
82
+ f.reject(PublishError.new(data))
83
+ end
84
+ end
85
+ end
86
+
87
+ end
88
+ end
89
+ end
90
+
@@ -0,0 +1,19 @@
1
+ module BBK
2
+ module HTTP
3
+ class RouteInfo
4
+
5
+
6
+ attr_reader :uri, :method, :headers, :options
7
+
8
+ def initialize(uri, method:, headers: {}, options: {})
9
+ @uri = uri
10
+ @method = method
11
+ @headers = headers
12
+ @options = options
13
+ end
14
+
15
+
16
+ end
17
+ end
18
+ end
19
+
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BBK
4
+ module HTTP
5
+
6
+ VERSION = '0.1.0'
7
+
8
+ end
9
+ end
10
+
data/lib/bbk/http.rb ADDED
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bbk/utils'
4
+
5
+ require 'bbk/http/message'
6
+ require 'bbk/http/message_consumer'
7
+ require 'bbk/http/message_consumer_builder'
8
+ require 'bbk/http/route_info'
9
+ require 'bbk/http/publisher'
10
+ require_relative 'http/version'
11
+
12
+ module BBK
13
+ module HTTP
14
+
15
+ class << self
16
+
17
+ attr_accessor :logger
18
+
19
+ end
20
+
21
+ self.logger = ::BBK::Utils::Logger.default
22
+
23
+ end
24
+ end
25
+
metadata ADDED
@@ -0,0 +1,278 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bbk-http
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0.200309
5
+ platform: ruby
6
+ authors:
7
+ - Samoylenko Yuri
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-12-12 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '6.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '6.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bbk-utils
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">"
32
+ - !ruby/object:Gem::Version
33
+ version: 1.0.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.0.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: faraday
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 2.7.12
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 2.7.12
55
+ - !ruby/object:Gem::Dependency
56
+ name: oj
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 3.16.2
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 3.16.2
69
+ - !ruby/object:Gem::Dependency
70
+ name: bbk-app
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 1.1.0.200186
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 1.1.0.200186
83
+ - !ruby/object:Gem::Dependency
84
+ name: bunny-mock
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: byebug
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rack
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rake
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rspec
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rspec_junit_formatter
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: rubycritic
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: simplecov
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: simplecov-console
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: thin
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - "~>"
214
+ - !ruby/object:Gem::Version
215
+ version: 1.8.2
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: 1.8.2
223
+ - !ruby/object:Gem::Dependency
224
+ name: webmock
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - "~>"
228
+ - !ruby/object:Gem::Version
229
+ version: 3.19.1
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - "~>"
235
+ - !ruby/object:Gem::Version
236
+ version: 3.19.1
237
+ description: HTTP interaction classes for BBK stack
238
+ email:
239
+ - kinnalru@gmail.com
240
+ executables: []
241
+ extensions: []
242
+ extra_rdoc_files: []
243
+ files:
244
+ - Gemfile
245
+ - Gemfile.lock
246
+ - README.md
247
+ - bin/console
248
+ - bin/setup
249
+ - lib/bbk/http.rb
250
+ - lib/bbk/http/message.rb
251
+ - lib/bbk/http/message_consumer.rb
252
+ - lib/bbk/http/message_consumer_builder.rb
253
+ - lib/bbk/http/publisher.rb
254
+ - lib/bbk/http/route_info.rb
255
+ - lib/bbk/http/version.rb
256
+ homepage:
257
+ licenses: []
258
+ metadata: {}
259
+ post_install_message:
260
+ rdoc_options: []
261
+ require_paths:
262
+ - lib
263
+ required_ruby_version: !ruby/object:Gem::Requirement
264
+ requirements:
265
+ - - ">="
266
+ - !ruby/object:Gem::Version
267
+ version: '0'
268
+ required_rubygems_version: !ruby/object:Gem::Requirement
269
+ requirements:
270
+ - - ">="
271
+ - !ruby/object:Gem::Version
272
+ version: '0'
273
+ requirements: []
274
+ rubygems_version: 3.2.33
275
+ signing_key:
276
+ specification_version: 4
277
+ summary: HTTP interaction classes for BBK stack
278
+ test_files: []