rest_shifter 0.0.10 → 0.0.11

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
  SHA1:
3
- metadata.gz: b5c41753cf4e00ae06f8b076c44991a74cb548a6
4
- data.tar.gz: 6482d5ab7a1389cef63e47854538f88290f8307a
3
+ metadata.gz: 8e5c6f62b6e629086fcd6b7445d7c7e9c0d7977b
4
+ data.tar.gz: a2d921e1a9820b0846dc92a2cfba0579d5020c02
5
5
  SHA512:
6
- metadata.gz: be7c8c594ab04221c0f8e47131f0655960967d1dc4b4c264b34e03d1901e40f9d9368814725b00cf2e56815f33578b5204d92a08d488b33220ad39f81c18f232
7
- data.tar.gz: e226bc6576fbd2a44cc3396e0f859a34e6d8b6c64f05deffe2b159b3ca848cc72b3602722e309404a39dc7c8517383307ae5a5a23c0d29ec6cc67ea329dd3abb
6
+ metadata.gz: c7fba39d5774aee26ac6efa5a8b3c1acd7ba0756b157bd07281f57d1757fef68b23dd1f8d977eb7d3f6a40a7898d23b2efa81184961a959dd5f130f3e3e8473b
7
+ data.tar.gz: 44c7b1a22ebec0a5660db1399061e9903ff9c53485726998f0972f664a2fec4dbc4dde00ac002a7ca45f00e797092b0cf11a09cbedf8dffc0f296a3caebf4208
data/CHANGES CHANGED
@@ -1,4 +1,8 @@
1
1
 
2
+ ** 0.0.11
3
+ - Feature
4
+ -- Now it is possible to start a service with https
5
+
2
6
  ** 0.0.10
3
7
  - Feature
4
8
  -- Now it is possible to define route using accept header
data/README.md CHANGED
@@ -73,6 +73,10 @@ Start the service
73
73
 
74
74
  $ rest_shifter -s
75
75
 
76
+ Optionally, you can start the service over https using captal "S":
77
+
78
+ $ rest_shifter -S /path/to/file.crt /path/to/file.key
79
+
76
80
  Go to a browser and open the url: [http://localhost:4567/hello_world](http://localhost:4567/hello_world)
77
81
 
78
82
  You should see the following JSON:
@@ -82,6 +86,20 @@ You should see the following JSON:
82
86
  To edit the service you just created, go to ~/.rest_shifter/flavors/hello_world.flavor
83
87
  The name of the file is the name that you used in the command -c (create).
84
88
 
89
+ The file looks like this:
90
+
91
+ ## ! ~/.rest_shifter/flavors/hello_world.flavor
92
+ method_used = "get"
93
+ path = "/hello_world"
94
+ request_accept = ""
95
+ request_content_type = ""
96
+ response_sleep = 0
97
+ response_status = "200"
98
+ response_body = "{ \"hello_world\" : \"Your service is working fine. :D\" }"
99
+ response_content_type = "application/json"
100
+
101
+ You basically change whatever you need to make it look like the expected or desired service. For example, replacint the path by "/clients", and restart rest_shifter, so you have the desired endpoint working as a rest api.
102
+
85
103
  Whatever you change in the file will change in the service as soon as you restart it.
86
104
 
87
105
  Enjoy
@@ -8,14 +8,15 @@ rest_shifter version #{RestShifter::VERSION}: The ShapeShifter Rest Service
8
8
 
9
9
  Available commands:
10
10
 
11
- help Show this help text
11
+ --help Show this help text
12
12
 
13
- --start, -s: Start service on port 4567
13
+ --start, -s: Start service on port 4567
14
+ --start-secure, -S: Start https service on port 4433 (crt, key)
14
15
 
15
- --create, -c: Create a config file for a service (send a name as argument)
16
+ --create, -c: Create a config file for a service (send a name as argument)
16
17
 
17
- --version, -v: Print version and exit
18
- --help, -h: Show this message
18
+ --version, -v: Print version and exit
19
+ --help, -h: Show this message
19
20
 
20
21
  For more support read our api >> http://rubydoc.info/gems/rest_shifter
21
22
  Have a nice day :)
@@ -9,6 +9,9 @@ class RestShifter::Commands::Main
9
9
  when "-s", "--start", "start"
10
10
  RestShifter::Commands::Start.run
11
11
  exit 0
12
+ when "-S", "--start-secure", "start-secure"
13
+ RestShifter::Commands::Start.run_secure
14
+ exit 0
12
15
  when "-c", "--create", "create"
13
16
  RestShifter::Commands::Create.run
14
17
  exit 0
@@ -1,14 +1,30 @@
1
1
  class RestShifter::Commands::Start
2
- def self.run
3
- begin
4
- require 'rest_shifter/shifter.rb'
5
- rescue LoadError => e
6
- require 'rubygems'
7
- path = File.expand_path '../../lib', __FILE__
8
- $:.unshift(path) if File.directory?(path) && !$:.include?(path)
9
- require 'rest_shifter/shifter.rb'
2
+ class << self
3
+ def run(args=ARGV)
4
+
5
+ prepare_server
6
+ Shifter.run!
7
+ end
8
+
9
+ def run_secure(args=ARGV)
10
+ crt = args.shift
11
+ key = args.shift
12
+
13
+ prepare_server
14
+ Shifter.use Rack::SSL
15
+ Shifter.run_ssl! crt, key
16
+ end
17
+
18
+ private
19
+ def prepare_server
20
+ begin
21
+ require 'rest_shifter/shifter.rb'
22
+ rescue LoadError => e
23
+ require 'rubygems'
24
+ path = File.expand_path '../../lib', __FILE__
25
+ $:.unshift(path) if File.directory?(path) && !$:.include?(path)
26
+ require 'rest_shifter/shifter.rb'
27
+ end
10
28
  end
11
-
12
- Shifter.run!
13
29
  end
14
30
  end
@@ -1,10 +1,36 @@
1
1
  require 'sinatra/base'
2
2
  require 'icecream'
3
+ require 'rack/ssl'
3
4
 
4
5
  module RestShifter; end
5
6
 
6
7
  class Shifter < Sinatra::Base
7
8
 
9
+ def self.run_ssl! crt, key
10
+ require 'webrick/https'
11
+
12
+ port = 4433
13
+ certificate_content = File.open(crt).read
14
+ key_content = File.open(key).read
15
+
16
+ server_options = {
17
+ :Port => port,
18
+ :SSLEnable => true,
19
+ :SSLCertificate => OpenSSL::X509::Certificate.new(certificate_content),
20
+ :SSLPrivateKey => OpenSSL::PKey::RSA.new(key_content),
21
+ :SSLVerifyClient => OpenSSL::SSL::VERIFY_NONE
22
+ }
23
+
24
+ Rack::Handler::WEBrick.run self, server_options do |server|
25
+ [:INT, :TERM].each { |sig| trap(sig) { server.stop } }
26
+ server.threaded = settings.threaded if server.respond_to? :threaded=
27
+ set :running, true
28
+ end
29
+ set :ssl, true
30
+ set :port, 4433
31
+ run!
32
+ end
33
+
8
34
  shapes = IceCream::IceCream.new File.dirname("#{Dir.home}/.rest_shifter/flavors/*")
9
35
  if ENV["RACK_ENV"] == "test"
10
36
  shapes = IceCream::IceCream.new File.join(File.dirname(__FILE__), "../../spec/flavors")
@@ -0,0 +1,9 @@
1
+ require 'webrick/https'
2
+ require 'openssl'
3
+
4
+ module Sinatra
5
+ class Application
6
+ def self.run!
7
+ end
8
+ end
9
+ end
@@ -1,3 +1,3 @@
1
1
  module RestShifter
2
- VERSION = "0.0.10"
2
+ VERSION = "0.0.11"
3
3
  end
data/rest_shifter.gemspec CHANGED
@@ -33,5 +33,6 @@ Gem::Specification.new do |s|
33
33
 
34
34
  s.add_dependency 'icecream'
35
35
  s.add_dependency 'sinatra'
36
+ s.add_dependency 'rack-ssl'
36
37
 
37
38
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rest_shifter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Camilo Ribeiro
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-19 00:00:00.000000000 Z
11
+ date: 2015-02-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: simplecov
@@ -164,6 +164,20 @@ dependencies:
164
164
  - - '>='
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: rack-ssl
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - '>='
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
167
181
  description: RestShifter is a simple rest service that can shift into any kind of
168
182
  service, allowing you to mock rest services with declarative configuration
169
183
  email:
@@ -190,6 +204,7 @@ files:
190
204
  - lib/rest_shifter/commands/start.rb
191
205
  - lib/rest_shifter/commands/version.rb
192
206
  - lib/rest_shifter/shifter.rb
207
+ - lib/rest_shifter/ssl_helper.rb
193
208
  - lib/rest_shifter/version.rb
194
209
  - rest_shifter.gemspec
195
210
  - spec/flavors/notfound_get.flavor