waffle-maker 0.1.3 → 0.2.0
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/bin/console +1 -0
- data/lib/waffle/maker.rb +10 -6
- data/lib/waffle/maker/api.rb +24 -0
- data/lib/waffle/maker/api/alert.rb +43 -0
- data/lib/waffle/maker/api/alert_detail.rb +24 -0
- data/lib/waffle/maker/api/base.rb +64 -0
- data/lib/waffle/maker/api/config.rb +11 -0
- data/lib/waffle/maker/version.rb +1 -1
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 784b60e38e4360fcc9ddb4a899dd9a5a52f0662d749aff668bf29c53ff2e345e
|
4
|
+
data.tar.gz: 54f908bc1ef688da2a8860b46493ddbb9d922cb9527764bd2800ffad5434d587
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d59de196b99a15eef048647e6c07928924dac8242b6ec58f644ad1b31cf905777f4369fc0900ede2a0efa615735c5dd8a6222a11d52c780e3a8a3bce730d47b7
|
7
|
+
data.tar.gz: f7d9c90d5c3f5706f8732d8b028e8b5caa9c679a4e08a8e83458520fbe8d926e81c69f213bfe36ab07a725afd891475f504e410ff7289ce8e8cc81826ab3c2b2
|
data/bin/console
CHANGED
data/lib/waffle/maker.rb
CHANGED
@@ -3,12 +3,21 @@ require "waffle/maker/version"
|
|
3
3
|
require "waffle/maker/route"
|
4
4
|
require "waffle/maker/waf"
|
5
5
|
require "waffle/maker/matcher"
|
6
|
+
require "waffle/maker/api"
|
6
7
|
require "waffle/maker/railtie" if defined?(::Rails)
|
7
8
|
|
8
9
|
module Waffle
|
9
10
|
module Maker
|
10
11
|
class Error < StandardError; end
|
11
12
|
|
13
|
+
class Config
|
14
|
+
class << self
|
15
|
+
def default_options
|
16
|
+
{ f: 2, w: 2, silent_error: false }
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
12
21
|
class Filter
|
13
22
|
attr_reader :options
|
14
23
|
|
@@ -19,7 +28,7 @@ module Waffle
|
|
19
28
|
end
|
20
29
|
|
21
30
|
def initialize(argv)
|
22
|
-
(@options = default_options).tap do |options|
|
31
|
+
(@options = Waffle::Maker::Config.default_options).tap do |options|
|
23
32
|
OptionParser.new { |o|
|
24
33
|
o.banner = "Usage: #{$0}"
|
25
34
|
o.on("-f number", "Column number that contains the rails path") { |v| options[:f] << v.to_i }
|
@@ -29,11 +38,6 @@ module Waffle
|
|
29
38
|
end
|
30
39
|
end
|
31
40
|
|
32
|
-
# @override
|
33
|
-
def default_options
|
34
|
-
{ f: 2, w: 2, silent_error: false }
|
35
|
-
end
|
36
|
-
|
37
41
|
def execute
|
38
42
|
wafs.each do |waf|
|
39
43
|
puts waf[:raw] if Waffle::Maker::Matcher.new(waf[:path], routes).matched?
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "date"
|
3
|
+
require "json"
|
4
|
+
require "net/http"
|
5
|
+
require "waffle/maker/api/base"
|
6
|
+
require "waffle/maker/api/alert"
|
7
|
+
require "waffle/maker/api/alert_detail"
|
8
|
+
require "waffle/maker/api/config"
|
9
|
+
|
10
|
+
module Waffle
|
11
|
+
module Maker
|
12
|
+
module Api
|
13
|
+
class << self
|
14
|
+
def configure
|
15
|
+
yield config
|
16
|
+
end
|
17
|
+
|
18
|
+
def config
|
19
|
+
@config ||= Config.new
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Waffle
|
4
|
+
module Maker
|
5
|
+
module Api
|
6
|
+
class Alert < Base
|
7
|
+
API_PATH = '/api/v1/alert'
|
8
|
+
attr_reader :time_order, :from, :to, :ip, :marker
|
9
|
+
|
10
|
+
def initialize(time_order: nil, from: nil, to: nil, ip: nil, marker: nil)
|
11
|
+
@time_order = time_order
|
12
|
+
@from = from
|
13
|
+
@to = to
|
14
|
+
@ip = ip
|
15
|
+
@marker = marker
|
16
|
+
end
|
17
|
+
|
18
|
+
def execute
|
19
|
+
body_in_hash_format
|
20
|
+
end
|
21
|
+
|
22
|
+
def matched_with_routes
|
23
|
+
body_in_hash_format.tap do |body|
|
24
|
+
body['data'].select! { |d| Waffle::Maker::Matcher.new(d['uri'], routes).matched? }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def url
|
29
|
+
return @url if @url
|
30
|
+
|
31
|
+
url_string = "#{config.api_host}#{API_PATH}?host=#{config.host}&id=#{config.id}"
|
32
|
+
url_string = "#{url_string}&time_order=#{@time_order}" if @time_order
|
33
|
+
url_string = "#{url_string}&from=#{@from}" if @from
|
34
|
+
url_string = "#{url_string}&to=#{@to}" if @to
|
35
|
+
url_string = "#{url_string}&ip=#{@ip}" if @ip
|
36
|
+
url_string = "#{url_string}&marker=#{@marker}" if @marker
|
37
|
+
|
38
|
+
@url = URI.parse(url_string)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Waffle
|
4
|
+
module Maker
|
5
|
+
module Api
|
6
|
+
class AlertDetail < Base
|
7
|
+
API_PATH = '/api/v1/alert_detail'
|
8
|
+
attr_reader :log_id
|
9
|
+
|
10
|
+
def initialize(log_id: nil)
|
11
|
+
@log_id = log_id
|
12
|
+
end
|
13
|
+
|
14
|
+
def execute
|
15
|
+
body_in_hash_format
|
16
|
+
end
|
17
|
+
|
18
|
+
def url
|
19
|
+
@url ||= URI.parse("#{config.api_host}#{API_PATH}?host=#{config.host}&id=#{config.id}&log_id=#{log_id}")
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Waffle
|
4
|
+
module Maker
|
5
|
+
module Api
|
6
|
+
class Base
|
7
|
+
FORCE_ENCODING = "UTF-8"
|
8
|
+
attr_accessor :url, :headers
|
9
|
+
|
10
|
+
def body_in_hash_format
|
11
|
+
get.then do |response|
|
12
|
+
JSON.parse(response.body.force_encoding(FORCE_ENCODING))
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def body_in_json_format
|
17
|
+
get.then do |response|
|
18
|
+
response.body.force_encoding(FORCE_ENCODING)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def get
|
23
|
+
@get ||= http.get(url, headers)
|
24
|
+
end
|
25
|
+
|
26
|
+
def http
|
27
|
+
Net::HTTP.new(url.host, url.port).tap do |http|
|
28
|
+
http.use_ssl = (url.scheme === "https")
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def url
|
33
|
+
raise NotImplementedError
|
34
|
+
end
|
35
|
+
|
36
|
+
def headers
|
37
|
+
@headers ||= { "Content-Type" => "application/json", 'X-Scutum-API-Key' => config.api_key }
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def now
|
43
|
+
@_now ||= DateTime.now
|
44
|
+
end
|
45
|
+
|
46
|
+
def beginning_of_day
|
47
|
+
now.strftime("%Y-%m-%dT00:00:00")
|
48
|
+
end
|
49
|
+
|
50
|
+
def end_of_day
|
51
|
+
now.strftime("%Y-%m-%dT23:59:59")
|
52
|
+
end
|
53
|
+
|
54
|
+
def config
|
55
|
+
Waffle::Maker::Api.config
|
56
|
+
end
|
57
|
+
|
58
|
+
def routes
|
59
|
+
@routes ||= Waffle::Maker::Route.new(Waffle::Maker::Config.default_options[:f], true).paths
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
data/lib/waffle/maker/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: waffle-maker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- chibicco
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -84,6 +84,11 @@ files:
|
|
84
84
|
- bin/setup
|
85
85
|
- lib/tasks/waffle.rake
|
86
86
|
- lib/waffle/maker.rb
|
87
|
+
- lib/waffle/maker/api.rb
|
88
|
+
- lib/waffle/maker/api/alert.rb
|
89
|
+
- lib/waffle/maker/api/alert_detail.rb
|
90
|
+
- lib/waffle/maker/api/base.rb
|
91
|
+
- lib/waffle/maker/api/config.rb
|
87
92
|
- lib/waffle/maker/formatter.rb
|
88
93
|
- lib/waffle/maker/matcher.rb
|
89
94
|
- lib/waffle/maker/railtie.rb
|