fakerest 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []