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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0ebb5a5ef50022b6f2b5d888212de4d8a21d87259d7bbb0dfa5521f1acee757e
4
- data.tar.gz: fa130768309be193fc8a2c3c91653a8e97d9985b93bc12b83ed5e81d3efba0ae
3
+ metadata.gz: 784b60e38e4360fcc9ddb4a899dd9a5a52f0662d749aff668bf29c53ff2e345e
4
+ data.tar.gz: 54f908bc1ef688da2a8860b46493ddbb9d922cb9527764bd2800ffad5434d587
5
5
  SHA512:
6
- metadata.gz: 42cb1bbba00d716b11eb216ccc393c589afa318d66aec8eed3aa61aeb6e55885db3d0c3170e0fb27103606d498d20db7cea1dbae16ae0c26df2496b53b9062c9
7
- data.tar.gz: 35fa40fdcc868c1a87dc5b46423c048b59d39e2681cc0ae174cc678801f6a12d866fd47ab6d22bc8b8bc075a27d65b41e3b5d2d36967e5f4c34bd55e068e9cc3
6
+ metadata.gz: d59de196b99a15eef048647e6c07928924dac8242b6ec58f644ad1b31cf905777f4369fc0900ede2a0efa615735c5dd8a6222a11d52c780e3a8a3bce730d47b7
7
+ data.tar.gz: f7d9c90d5c3f5706f8732d8b028e8b5caa9c679a4e08a8e83458520fbe8d926e81c69f213bfe36ab07a725afd891475f504e410ff7289ce8e8cc81826ab3c2b2
@@ -2,6 +2,7 @@
2
2
 
3
3
  require "bundler/setup"
4
4
  require "waffle/maker"
5
+ require "waffle/maker/api"
5
6
 
6
7
  # You can add fixtures and/or initialization code here to make experimenting
7
8
  # with your gem easier. You can also use a different console, if you like.
@@ -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
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Waffle
4
+ module Maker
5
+ module Api
6
+ class Config
7
+ attr_accessor :host, :id, :api_key, :api_host
8
+ end
9
+ end
10
+ end
11
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Waffle
4
4
  module Maker
5
- VERSION = "0.1.3"
5
+ VERSION = "0.2.0"
6
6
  end
7
7
  end
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.1.3
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: 2020-03-12 00:00:00.000000000 Z
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