file_sv 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ac55a5c60dd473f97a05d4a7679772db4eaf54d2990420652e2ae96260dc7ec5
4
- data.tar.gz: bf4e58836d690c6058392323144be3c4bbf53143e5535d7b0aa720d51b33462a
3
+ metadata.gz: aa3ba8f0ed5971a7bda5814fb1c3905e6705cf2d164f8a13efab46983b31a4fe
4
+ data.tar.gz: d8e303e7b3170f5435828e0cf4e36507e980e75669526e7ebced88db3d0f394d
5
5
  SHA512:
6
- metadata.gz: 87ed6a07aad15e535cc11299447538ebdb2683b608b87777ac39a71e8f32c53b99a26d6416d1d5c3c3f5ab8917dd6ec31f511220a218d110514305cf674c20ae
7
- data.tar.gz: 6a3521c2f94a59fc598d2c13c11bacfbc87a3f0213b2d078a6e222db632d80253c9c72d73fc1d2e20f06e6797cc1c612442928fa0e5ed39392601c8caf3fcad6
6
+ metadata.gz: 717ee4f0ad3368c5ad27fbe4c751b778cc29359ec79345c143aa0272dbb079deb2e7d5fbdad4d16807b01a0fd39d5dc3764b6592fc5ec88594dbeaa98c1db433
7
+ data.tar.gz: 0e84459ad829475c060a8947a9526fe8618fcb1bc5e46653da7c7ab65b41d540e050801dc55dc502f550091189d3dd285898a0382896ea14fa5a916e86650959
data/exe/file_sv CHANGED
@@ -18,10 +18,16 @@ class Exe < Thor
18
18
  ServiceLoader.serve_plan
19
19
  end
20
20
 
21
- desc "version", "Version of FileTest"
22
- def version
21
+ desc "inspect folder", "Inspect details of what's served at folder"
22
+ def inspect(folder)
23
23
  require "file_sv"
24
- puts "GenericTest version #{FileTest::VERSION}"
24
+ ServiceLoader.inspect folder
25
+ end
26
+
27
+ desc "version", "Version of FileSv"
28
+ def version
29
+ require "file_sv/version"
30
+ puts "FileSv version #{FileSv::VERSION}"
25
31
  end
26
32
  end
27
33
 
data/lib/file_sv.rb CHANGED
@@ -24,14 +24,15 @@ module FileSv
24
24
  end
25
25
  end
26
26
 
27
- require "yaml"
28
27
  CONFIG_FILE = "file_sv.yaml"
29
- if File.exist? CONFIG_FILE
30
- # Set values in global settings based on config
31
- class GlobalSettings
32
- config = YAML.load_file CONFIG_FILE
28
+
29
+ # Set values in global settings based on config
30
+ def load_default_config(file_path)
31
+ require "yaml"
32
+ if File.exist? file_path
33
+ config = YAML.load_file file_path
33
34
  config["global"]&.each do |key, value|
34
- send("#{key}=", value)
35
+ GlobalSettings.send("#{key}=", value)
35
36
  end
36
37
 
37
38
  FileSv.rest_methods.each do |method, setting_class|
@@ -41,3 +42,5 @@ if File.exist? CONFIG_FILE
41
42
  end
42
43
  end
43
44
  end
45
+
46
+ load_default_config CONFIG_FILE
Binary file
@@ -9,6 +9,12 @@ module ServiceLoader
9
9
  # Create virtual service plan based on folder
10
10
  def create_plan_for(folder)
11
11
  SvPlan.create folder
12
+ puts SvPlan.show
13
+ end
14
+
15
+ # Inspect plan
16
+ def inspect(folder)
17
+ create_plan_for folder
12
18
  puts SvPlan.inspect
13
19
  end
14
20
 
@@ -6,7 +6,7 @@ require_relative "file_processor"
6
6
  class SvPlan
7
7
  @endpoints = {}
8
8
  class << self
9
- # @return [Array]
9
+ # @return [Hash] Endpoints included in plan. Key - endpoint, value - methods served under it
10
10
  attr_reader :endpoints
11
11
  # @return [String] Folder plan is served from
12
12
  attr_accessor :serving_folder
@@ -21,21 +21,35 @@ class SvPlan
21
21
  end
22
22
  end
23
23
 
24
+ # Process file, for the most part creating endpoint.method from it
24
25
  def process_file(file)
25
26
  file.slice! serving_folder
26
27
  extension = File.extname(file)
27
28
  case extension
28
- when "yaml" then YamlProcessor.process(file)
29
+ when ".yaml" then YamlProcessor.process(file)
29
30
  else
30
31
  FileProcessor.process(file)
31
32
  end
32
33
  end
33
34
 
34
- def inspect
35
+ # Show plan
36
+ def show
37
+ endpoint_desc = ""
38
+ endpoints.sort { |a,b| a[0].length - b[0].length }.each do |endpoint, methods|
39
+ endpoint_desc += "#{endpoint} \n"
40
+ methods.each do |method_name, endpoints|
41
+ endpoint_desc += " #{method_name.upcase} (#{endpoints.size} responses)\n"
42
+ end
43
+ end
44
+
35
45
  "** VIRTUAL SERVICE PLAN **
36
- Serving based on folder: #{serving_folder}
37
- Endpoints: #{endpoints.inspect}
38
- "
46
+ Serving based on folder: #{Dir.pwd}. Related to folder executed: #{serving_folder}
47
+ #{endpoint_desc}"
48
+ end
49
+
50
+ # Inspect details
51
+ def inspect
52
+ "Endpoints: #{endpoints.inspect}"
39
53
  end
40
54
 
41
55
  def +(other)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FileSv
4
- VERSION = "0.1.1"
4
+ VERSION = "0.1.2"
5
5
  end
@@ -2,21 +2,43 @@
2
2
 
3
3
  require "webrick"
4
4
  require "sinatra"
5
+ require "docdsl"
5
6
 
6
7
  # Virtual server hosting virtual service defined through files
7
8
  class VirtualServer < Sinatra::Base
8
9
  set :server, "webrick"
9
10
  set :bind, "0.0.0.0"
10
11
 
12
+ register Sinatra::DocDsl
13
+
14
+ page do
15
+ title 'File SV'
16
+ header "Service virtualization created from #{Dir.pwd}"
17
+ introduction 'Created using file_sv. See <a href="https://gitlab.com/samuel-garratt/file_sv">File SV</a> for more details'
18
+ end
19
+
20
+ get '/favicon.ico' do
21
+ send_file File.join(__dir__, 'file_sv.ico')
22
+ end
23
+
24
+ doc_endpoint '/docs'
25
+
11
26
  SvPlan.endpoints.each do |_endpoint_path, endpoint_value|
12
27
  endpoint_value.each do |_method_name, endpoints|
13
28
  if endpoints.size < 2
14
29
  endpoint = endpoints[0]
30
+ documentation "Endpoint #{endpoint.path}" do
31
+ response "1 kind of response"
32
+ status endpoint.status_code
33
+ end
15
34
  send(endpoint.method, endpoint.path) do
16
35
  [endpoint.status_code, endpoint.file? ? send_file(endpoint.serving_file_name) : endpoint.content]
17
36
  end
18
37
  else
19
38
  endpoint_base = endpoints[0]
39
+ documentation "Endpoint #{endpoint_base.path}" do
40
+ response "#{endpoints.size} kinds of response"
41
+ end
20
42
  send(endpoint_base.method, endpoint_base.path) do
21
43
  my_points = endpoints
22
44
  endpoint = my_points.sample
@@ -3,8 +3,14 @@
3
3
  # Process YAML files
4
4
  class YamlProcessor
5
5
  class << self
6
+ # Process YAML file
6
7
  def process(filename)
7
- puts "Overriding default config based on #{filename}" if filename == "file_sv"
8
+ if filename == "/file_sv.yaml"
9
+ puts "Overriding default config based on #{Dir.pwd}#{filename[1..-1]}"
10
+ load_default_config filename[1..-1]
11
+ else
12
+ puts "Skipping #{filename}"
13
+ end
8
14
  end
9
15
  end
10
16
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: file_sv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Garratt
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-03-03 00:00:00.000000000 Z
11
+ date: 2021-03-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faker
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: sinatra-docdsl
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: thor
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -79,6 +93,7 @@ files:
79
93
  - exe/file_sv
80
94
  - lib/file_sv.rb
81
95
  - lib/file_sv/file_processor.rb
96
+ - lib/file_sv/file_sv.ico
82
97
  - lib/file_sv/global_settings.rb
83
98
  - lib/file_sv/planned_endpoint.rb
84
99
  - lib/file_sv/render_file.rb