microservice_dsl 0.1.3 → 0.2.3
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.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/lib/microservice_dsl/middleware.rb +18 -0
- data/lib/microservice_dsl/railtie.rb +10 -0
- data/lib/microservice_dsl/version.rb +1 -1
- data/lib/microservice_dsl.rb +34 -3
- data/microservice_dsl.gemspec +2 -0
- metadata +33 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f8a8ae1f8d70c4ea1091b3905c57fd921d9f0bbb
|
4
|
+
data.tar.gz: 9a2c7de4b3e85ba3e35ed5ec4a96f9538817744b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4274ec10d2ce6c0bd8abebfc5b185654bcb83e9e03a1342ade08d1085d3a2b366e59afc9be8276d28db0265c237e8f2e74319ace87355b760c2d9f547bd1bb29
|
7
|
+
data.tar.gz: b77bf817b794a1035ca6a106d88f6e8857c83aa51ffba5ac31b2d79c4f3756808683cdb1993a28434c47114018b037b08310d4117b8ecd5e776ec732a36fae33
|
data/.gitignore
CHANGED
@@ -0,0 +1,18 @@
|
|
1
|
+
module MicroserviceDSL
|
2
|
+
class Middleware
|
3
|
+
def initialize(app)
|
4
|
+
@app = app
|
5
|
+
end
|
6
|
+
|
7
|
+
def call(env)
|
8
|
+
if env[MicroserviceDSL.rack_hop_header] && !env[MicroserviceDSL.rack_hop_header].blank?
|
9
|
+
MicroserviceDSL.current_hop = env[MicroserviceDSL.rack_hop_header]
|
10
|
+
else
|
11
|
+
MicroserviceDSL.current_hop = "1"
|
12
|
+
end
|
13
|
+
MicroserviceDSL.next_hop = 0
|
14
|
+
|
15
|
+
@app.call(env)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/microservice_dsl.rb
CHANGED
@@ -10,7 +10,7 @@ module Kernel
|
|
10
10
|
url = ENV["#{microservice.upcase}_URL"] || "http://#{microservice}.#{ENV['MS_DOMAIN'] || Rails.env}:#{ENV["MS_#{microservice.upcase}_PORT"] || '3000'}"
|
11
11
|
url << "/#{args[:path]}" if args[:path]
|
12
12
|
body = (args[:body].is_a? String) ? args[:body] : args[:body].to_json if args[:body]
|
13
|
-
Typhoeus::Request.new(url, method: args[:method] || :get, headers: MicroserviceDSL.default_headers.merge(args[:headers] || {}), body: body, params: args[:params], timeout: ENV['MS_DEFAULT_TIMEOUT'] || 10)
|
13
|
+
Typhoeus::Request.new(url, method: args[:method] || :get, headers: MicroserviceDSL.default_headers.merge(args[:headers] || {}).merge({MicroserviceDSL.hop_header => MicroserviceDSL.hop_string}), body: body, params: args[:params], timeout: ENV['MS_DEFAULT_TIMEOUT'] || 10)
|
14
14
|
end
|
15
15
|
|
16
16
|
def call_microservice(microservice, args={})
|
@@ -21,12 +21,43 @@ module Kernel
|
|
21
21
|
end
|
22
22
|
|
23
23
|
module MicroserviceDSL
|
24
|
+
def self.hop_header
|
25
|
+
"X-Hop-Count"
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.rack_hop_header
|
29
|
+
"HTTP_#{self.hop_header.upcase.gsub("-", "_")}"
|
30
|
+
end
|
31
|
+
|
24
32
|
def self.default_headers
|
25
|
-
Thread.current[:
|
33
|
+
Thread.current[:microservice_dsl_default_headers] || {}
|
26
34
|
end
|
27
35
|
|
28
36
|
def self.default_headers=(headers = {})
|
29
|
-
Thread.current[:
|
37
|
+
Thread.current[:microservice_dsl_default_headers] = headers
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.current_hop=(hop)
|
41
|
+
Thread.current[:microservice_dsl_current_hop] = hop
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.current_hop
|
45
|
+
Thread.current[:microservice_dsl_current_hop] = "1" unless Thread.current[:microservice_dsl_current_hop]
|
46
|
+
Thread.current[:microservice_dsl_current_hop]
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.next_hop=(hop)
|
50
|
+
Thread.current[:microservice_dsl_next_hop] = hop
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.next_hop
|
54
|
+
Thread.current[:microservice_dsl_next_hop] = 0 unless Thread.current[:microservice_dsl_next_hop]
|
55
|
+
Thread.current[:microservice_dsl_next_hop] += 1
|
56
|
+
end
|
57
|
+
|
58
|
+
def self.hop_string
|
59
|
+
[self.current_hop, self.next_hop].join(".")
|
30
60
|
end
|
31
61
|
end
|
32
62
|
|
63
|
+
require "microservice_dsl/railtie" if defined?(Rails)
|
data/microservice_dsl.gemspec
CHANGED
@@ -23,4 +23,6 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_development_dependency "bundler", "~> 1.12"
|
24
24
|
spec.add_development_dependency "rake", "~> 10.0"
|
25
25
|
spec.add_development_dependency "rspec", "~> 3.0"
|
26
|
+
spec.add_development_dependency "webmock"
|
27
|
+
spec.add_development_dependency "rails", "5"
|
26
28
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: microservice_dsl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vincenzo Ferrara
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-02-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: typhoeus
|
@@ -66,6 +66,34 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '3.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: webmock
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rails
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '5'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '5'
|
69
97
|
description:
|
70
98
|
email:
|
71
99
|
- vinceferro92@gmail.com
|
@@ -84,6 +112,8 @@ files:
|
|
84
112
|
- bin/console
|
85
113
|
- bin/setup
|
86
114
|
- lib/microservice_dsl.rb
|
115
|
+
- lib/microservice_dsl/middleware.rb
|
116
|
+
- lib/microservice_dsl/railtie.rb
|
87
117
|
- lib/microservice_dsl/version.rb
|
88
118
|
- microservice_dsl.gemspec
|
89
119
|
homepage: https://github.com/vinceferro/microservice_dsl
|
@@ -106,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
106
136
|
version: '0'
|
107
137
|
requirements: []
|
108
138
|
rubyforge_project:
|
109
|
-
rubygems_version: 2.
|
139
|
+
rubygems_version: 2.5.1
|
110
140
|
signing_key:
|
111
141
|
specification_version: 4
|
112
142
|
summary: Little DSL for interact in a microservice environment
|