fakerest 0.0.2 → 0.0.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.
@@ -1,150 +1,8 @@
1
1
  require 'rubygems'
2
2
  require 'yaml'
3
- require 'optparse'
4
-
5
-
6
- module FakeRest
7
-
8
- class ArgumentsParser
9
-
10
- def parse(args)
11
- options = {}
12
-
13
- optparse = OptionParser.new do |opts|
14
- opts.banner = "Usage: fakerest.rb [options]"
15
-
16
- options[:port] = 1111
17
- options[:config] = nil
18
- options[:views] = 'views/'
19
- options[:uploads] = 'uploads/'
20
-
21
- opts.on("-c","--config CONFIG_FILE","Confilg file to load request mappings (required)") do |cfg|
22
- options[:config] = cfg
23
- end
24
-
25
- opts.on("-p","--port PORT","Port on which the fakerest to be run. Default = 1111") do |prt|
26
- options[:port] = prt
27
- end
28
-
29
- opts.on("-w","--views VIEWS_FOLDER","Folder path that contains the views (required)") do |views|
30
- options[:views] = views
31
- end
32
-
33
- opts.on("-u","--uploads UPLOADS_FOLDER","Folder to which any file uploads to be stored (required)") do |uploads|
34
- options[:uploads] = uploads
35
- end
36
-
37
- opts.on( "-h", "--help", "Displays help message" ) do
38
- puts opts
39
- exit
40
- end
41
- end
42
- optparse.parse!(args)
43
-
44
-
45
- if(options[:config] == nil)
46
- puts optparse
47
- exit(-1)
48
- end
49
-
50
- options
51
- end
52
- end
53
-
54
-
55
-
56
- class RequestMapping
57
- attr_reader :status_code, :response_file, :content_type, :method, :path
58
- def initialize(method, path, status_code, response_file, content_type)
59
- @method = method
60
- @path = path
61
- @status_code = status_code
62
- @response_file = response_file
63
- @content_type = content_type
64
- end
65
- end
66
-
67
- class UserRequest
68
- attr_reader :response_status_code, :url, :body, :method, :request_file_path, :request_file_type
69
- def initialize(method, url, body, response_status_code, request_file_path = "", request_file_type = "")
70
- @method = method
71
- @url = url
72
- @body = body
73
- @response_status_code = response_status_code
74
- @request_file_path = request_file_path
75
- @request_file_type = request_file_type
76
- end
77
-
78
- def to_s
79
- "#{method} #{url} #{response_status_code}\n#{body}\n\n"
80
- end
81
- end
82
-
83
- class ProfileLoader
84
- @@user_requests = []
85
- @@options = {}
86
-
87
- def self.load(profile_file, options)
88
- @@options = options
89
- request_mappings = []
90
- profile_file_path = profile_file
91
-
92
- defns = YAML::load_documents(File.open(profile_file_path))
93
- defns.each do |doc|
94
- method = doc['method']
95
- path = doc['path']
96
-
97
- response = doc['response']
98
- response_file = response['content_file']
99
- content_type = response['content_type']
100
- status_code = response['status_code']
101
-
102
- request_mappings << RequestMapping.new(method, path, status_code, response_file, content_type)
103
- end
104
-
105
- configure_requests(request_mappings)
106
- end
107
-
108
- def self.configure_requests(request_mappings)
109
- request_mappings.each do |request_mapping|
110
- block = Proc.new {
111
- request_file_path, request_file_type = ProfileLoader.upload_file(params['file']) if(params[:file] != nil)
112
-
113
- content_type request_mapping.content_type
114
- status request_mapping.status_code
115
- request_body = ProfileLoader.generate_request_body(params, request)
116
-
117
- @@user_requests << UserRequest.new(request.request_method, request.url, request_body, request_mapping.status_code, request_file_path, request_file_type)
118
- erb request_mapping.response_file.to_sym, params
119
- }
120
-
121
- send request_mapping.method, request_mapping.path, &block
122
- end
123
- end
124
-
125
- def self.upload_file(file_params)
126
- file_name = file_params[:filename] + Time.now.strftime("%Y%m%d%H%M%S")
127
- File.open("#{@@options[:uploads]}" + file_name, "w") do |f|
128
- f.write(file_params[:tempfile].read)
129
- end
130
- [file_name, file_params[:type]]
131
- end
132
-
133
- def self.generate_request_body(params, request)
134
- request_body = "Params are: "
135
- params.each do |key, value|
136
- next if key == 'file' or key == 'splat' or key == 'captures'
137
- request_body += value != nil ? (key + "=" + value + ",") : (key + ",")
138
- end
139
- request_body += "\nBody is: " + request.body.read
140
- request_body
141
- end
142
-
143
- def self.user_requests
144
- @@user_requests
145
- end
146
- end
147
- end
3
+ require 'fakerest/argumentsparser'
4
+ require 'fakerest/userrequests'
5
+ require 'fakerest/profileloader'
148
6
 
149
7
  options = FakeRest::ArgumentsParser.new.parse(ARGV)
150
8
 
@@ -152,13 +10,17 @@ require 'sinatra'
152
10
 
153
11
  set :port, options[:port]
154
12
  set :views, options[:views]
13
+ set :public_folder, options[:uploads]
14
+ set :static, true
155
15
  set :run, true
16
+
156
17
  profile_file_path = options[:config]
157
18
 
158
- FakeRest::ProfileLoader.load(profile_file_path, options)
19
+ profile_loader = FakeRest::ProfileLoader.new
20
+ profile_loader.load(profile_file_path, options)
159
21
 
160
22
  get "/requests/:count" do
161
- user_requests = FakeRest::ProfileLoader.user_requests
23
+ user_requests = FakeRest::UserRequests.user_requests
162
24
  requests_count = params[:count].to_i
163
25
 
164
26
  start_index = requests_count > user_requests.count ? 0 : ((user_requests.count - requests_count))
@@ -176,16 +38,16 @@ get "/requests/:count" do
176
38
  <hr/>
177
39
  <% end %>'
178
40
 
179
- erb requests_template, :locals => {:user_requests => user_requests[range].reverse}
41
+ erb requests_template, :locals => {:user_requests => user_requests[range].reverse}
180
42
  end
181
43
 
182
44
  get "/" do
183
45
 
184
46
  template = '<div>
185
47
  Current Profile : <%= current_profile%>
186
- </div>
187
- <br/>'
188
-
189
- erb template, :locals => {:current_profile => profile_file_path}
48
+ </div>
49
+ <br/>'
50
+
51
+ erb template, :locals => {:current_profile => profile_file_path}
190
52
  end
191
53
 
@@ -0,0 +1,52 @@
1
+ require 'optparse'
2
+
3
+
4
+ module FakeRest
5
+
6
+ class ArgumentsParser
7
+
8
+ def parse(args)
9
+ options = {}
10
+
11
+ optparse = OptionParser.new do |opts|
12
+ opts.banner = "Usage: fakerest.rb [options]"
13
+
14
+ options[:port] = 1111
15
+ options[:config] = nil
16
+ options[:views] = 'views'
17
+ options[:uploads] = 'uploads'
18
+
19
+ opts.on("-c","--config CONFIG_FILE","Confilg file to load request mappings (required)") do |cfg|
20
+ options[:config] = cfg
21
+ end
22
+
23
+ opts.on("-p","--port PORT","Port on which the fakerest to be run. Default = 1111") do |prt|
24
+ options[:port] = prt
25
+ end
26
+
27
+ opts.on("-w","--views VIEWS_FOLDER","Folder path that contains the views (required)") do |views|
28
+ options[:views] = views
29
+ end
30
+
31
+ opts.on("-u","--uploads UPLOADS_FOLDER","Folder to which any file uploads to be stored (required)") do |uploads|
32
+ options[:uploads] = uploads
33
+ end
34
+
35
+ opts.on( "-h", "--help", "Displays help message" ) do
36
+ puts opts
37
+ exit
38
+ end
39
+ end
40
+ optparse.parse!(args)
41
+
42
+
43
+ if(options[:config] == nil)
44
+ puts optparse
45
+ exit(-1)
46
+ end
47
+
48
+ options
49
+ end
50
+ end
51
+ end
52
+
@@ -0,0 +1,66 @@
1
+ require 'fakerest/userrequests'
2
+
3
+ module FakeRest
4
+
5
+ class RequestMapping
6
+ attr_reader :status_code, :response_file, :content_type, :method, :path
7
+ def initialize(method, path, status_code, response_file, content_type)
8
+ @method = method
9
+ @path = path
10
+ @status_code = status_code
11
+ @response_file = response_file
12
+ @content_type = content_type
13
+ end
14
+ end
15
+
16
+ class ProfileLoader
17
+ @@options = {}
18
+
19
+ def load(profile_file, options)
20
+ @@options = options
21
+ request_mappings = []
22
+ profile_file_path = profile_file
23
+
24
+ defns = YAML::load_documents(File.open(profile_file_path))
25
+ defns.each do |doc|
26
+ method = doc['method']
27
+ path = doc['path']
28
+
29
+ response = doc['response']
30
+ response_file = response['content_file']
31
+ content_type = response['content_type']
32
+ status_code = response['status_code']
33
+
34
+ request_mappings << RequestMapping.new(method, path, status_code, response_file, content_type)
35
+ end
36
+
37
+ configure_requests(request_mappings)
38
+ end
39
+
40
+
41
+ def configure_requests(request_mappings)
42
+ request_mappings.each do |request_mapping|
43
+ block = Proc.new {
44
+ request_file_path, request_file_type = ProfileLoader.upload_file(params['file']) if(params[:file] != nil)
45
+
46
+ content_type request_mapping.content_type
47
+ status request_mapping.status_code
48
+ request_body = UserRequests.generate_request_body(params, request)
49
+
50
+ UserRequests.add UserRequest.new(request.request_method, request.url, request_body, request_mapping.status_code, request_file_path, request_file_type)
51
+ erb request_mapping.response_file.to_sym, params
52
+ }
53
+
54
+ send request_mapping.method, request_mapping.path, &block
55
+ end
56
+ end
57
+
58
+ def self.upload_file(file_params)
59
+ file_name =Time.now.strftime("%Y%m%d%H%M%S") + "_" + file_params[:filename]
60
+ File.open("#{@@options[:uploads]}/" + file_name, "w") do |f|
61
+ f.write(file_params[:tempfile].read)
62
+ end
63
+ [file_name, file_params[:type]]
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,40 @@
1
+ module FakeRest
2
+ class UserRequest
3
+ attr_reader :response_status_code, :url, :body, :method, :request_file_path, :request_file_type
4
+ def initialize(method, url, body, response_status_code, request_file_path = "", request_file_type = "")
5
+ @method = method
6
+ @url = url
7
+ @body = body
8
+ @response_status_code = response_status_code
9
+ @request_file_path = request_file_path
10
+ @request_file_type = request_file_type
11
+ end
12
+
13
+ def to_s
14
+ "#{method} #{url} #{response_status_code}\n#{body}\n\n"
15
+ end
16
+ end
17
+
18
+ class UserRequests
19
+ @@user_requests = []
20
+
21
+ def self.generate_request_body(params, request)
22
+ request_body = "Params are: "
23
+ params.each do |key, value|
24
+ next if key == 'file' or key == 'splat' or key == 'captures'
25
+ request_body += value != nil ? (key + "=" + value + ",") : (key + ",")
26
+ end
27
+
28
+ request_body += "\nBody is: " + request.body.read
29
+ request_body
30
+ end
31
+
32
+ def self.add(user_request)
33
+ @@user_requests << user_request
34
+ end
35
+
36
+ def self.user_requests
37
+ @@user_requests
38
+ end
39
+ end
40
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fakerest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,39 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
  date: 2012-08-21 00:00:00.000000000 Z
13
- dependencies: []
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: sinatra
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 1.3.2
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 1.3.2
30
+ - !ruby/object:Gem::Dependency
31
+ name: mocha
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: 0.12.3
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 0.12.3
14
46
  description: Sinatra base http server which fakes the rest services based on the config
15
47
  given
16
48
  email: vatsa.katta@gmail.com
@@ -20,6 +52,9 @@ extensions: []
20
52
  extra_rdoc_files: []
21
53
  files:
22
54
  - lib/fakerest.rb
55
+ - lib/fakerest/argumentsparser.rb
56
+ - lib/fakerest/userrequests.rb
57
+ - lib/fakerest/profileloader.rb
23
58
  - bin/fakerest
24
59
  homepage: http://github.com/katta/fakerest
25
60
  licenses: []