file_sv 0.1.10 → 0.1.11

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: 1f3dee5f4fc52defa4ee2156a4b55a99d451096a9f306649447d4284cc7762c0
4
- data.tar.gz: d7e6529719bd1cb331608774478b512027184dff994a5ae2037cb704c102cfb9
3
+ metadata.gz: f83c739611ce58614e8d076e6be444b889ff63727b174dcfbd13025e3367b2d6
4
+ data.tar.gz: 042d4b3ae8ad91e6708b19bcdf9ad5b3473682494a8a6c4879ef50e61dbcce29
5
5
  SHA512:
6
- metadata.gz: 5342a57f1dc12b968065b1d2558a25a17a8178bc36e7d0c3d1c48a67520dea9ea5ffeae8c09240e2ea29a7ae75cee8af2d0c463298713976dcefdb54c30a4b00
7
- data.tar.gz: 44dfc851b979dd6c9cad3a05a531efaf87a8bf31da6d329c01bb40201bca0a6d2e97f8bd8ba3eb1c0aed6e33a5a000a081a7990f1159b334e760a647f3dbc8c3
6
+ metadata.gz: fbe538e3dad13e5bdd4af99c8d10b792397e5a1252c2a9809a5120a9aec9302a5d83aff05f3a36d9ef112a3c335184c2c97d4668fa9e44f25fe2ffe319b9175c
7
+ data.tar.gz: d5427782a507a555b305578c50354405f89b6307824d810916a529018f392c541f003f3068d96d257fb8d8ea9460bae38b6db176cba33210bbca62edb1636cbb
@@ -15,6 +15,8 @@ class PlannedEndpoint
15
15
  attr_accessor :method
16
16
  # @return [Integer] HTTP Status code
17
17
  attr_accessor :status_code
18
+ # @return [Integer] Delay before responding
19
+ attr_accessor :delay
18
20
 
19
21
  # @return [Array]
20
22
  HTTP_METHODS = %w[get put post patch delete options].freeze
@@ -26,6 +28,7 @@ class PlannedEndpoint
26
28
  @file = true if not_text?
27
29
  assign_params_from_name
28
30
  self.method ||= GlobalSettings.default_method
31
+ self.delay ||= 0
29
32
  return if status_code
30
33
 
31
34
  set_default_status_code
@@ -71,6 +74,7 @@ class PlannedEndpoint
71
74
  def assign_params_from_name
72
75
  file_parts = filename.split("_")
73
76
  assign_method_from file_parts
77
+ assign_delay_from file_parts
74
78
  assign_status_from file_parts
75
79
  end
76
80
 
@@ -84,9 +88,19 @@ class PlannedEndpoint
84
88
  self.status_code = status_parts[0].to_i if status_parts.size == 1
85
89
  end
86
90
 
91
+ # Set status code based on filename
92
+ def assign_delay_from(file_parts)
93
+ delay_parts = file_parts.find_all { |part| part.start_with?('delay') }
94
+ if delay_parts.size > 1
95
+ raise FileSv::FileNameError, "Filename #{filename} has more than 1 delay #{delay_parts}"
96
+ end
97
+
98
+ self.delay = delay_parts[0][5..-1].to_i if delay_parts.size == 1
99
+ end
100
+
87
101
  # Set REST method used based on filename
88
102
  def assign_method_from(file_parts)
89
- method_parts = file_parts.find_all { |pa| HTTP_METHODS.include? pa }
103
+ method_parts = file_parts.find_all { |part| HTTP_METHODS.include? part }
90
104
  if method_parts.size > 1
91
105
  raise FileSv::FileNameError, "Filename #{filename} has more than 1 REST methods #{method_parts}"
92
106
  end
@@ -112,4 +126,10 @@ class PlannedEndpoint
112
126
  def render_text(binding)
113
127
  ERB.new(File.read(serving_file_name)).result(binding)
114
128
  end
129
+
130
+ def short_description
131
+ desc = self.status_code.to_s
132
+ desc += " (delay #{self.delay} sec)" if self.delay > 0
133
+ return desc
134
+ end
115
135
  end
@@ -69,9 +69,9 @@ Serving based on folder: #{Dir.pwd}. Related to folder executed: #{serving_folde
69
69
 
70
70
  private
71
71
 
72
- # @return [String]
72
+ # @return [String] Message to description all endpoints for a method undera endpoint
73
73
  def description_message(method_name, endpoints)
74
- " #{method_name.upcase} (#{endpoints.size} responses) #{endpoints.collect(&:status_code)}\n"
74
+ " #{method_name.upcase} (#{endpoints.size} responses) #{endpoints.collect(&:short_description)}\n"
75
75
  end
76
76
  end
77
77
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FileSv
4
- VERSION = "0.1.10"
4
+ VERSION = "0.1.11"
5
5
  end
@@ -37,6 +37,10 @@ for more details'
37
37
  content_type :json
38
38
  elsif endpoint.file_path.end_with? '.xml'
39
39
  content_type :xml
40
+ elsif endpoint.file_path.end_with? '.css'
41
+ content_type :css
42
+ elsif endpoint.file_path.end_with? '.js'
43
+ content_type :js
40
44
  end
41
45
  end
42
46
 
@@ -50,6 +54,7 @@ for more details'
50
54
  message += " Using param '#{@id}'" if id
51
55
  puts message
52
56
  end
57
+ sleep endpoint.delay if endpoint.delay > 0
53
58
  [endpoint.status_code, output_for(endpoint, binding)]
54
59
  end
55
60
 
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.10
4
+ version: 0.1.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Garratt
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-03-19 00:00:00.000000000 Z
11
+ date: 2024-03-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faker
@@ -138,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
138
138
  - !ruby/object:Gem::Version
139
139
  version: '0'
140
140
  requirements: []
141
- rubygems_version: 3.1.4
141
+ rubygems_version: 3.2.3
142
142
  signing_key:
143
143
  specification_version: 4
144
144
  summary: REST service virtualisation through file structure.