nephos-server 0.1.11 → 0.1.12
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 +4 -4
 - data/controllers/dataset.rb +42 -0
 - data/controllers/image.jpg +0 -0
 - data/controllers/main.rb +55 -0
 - data/lib/nephos-server/routing/execute.rb +12 -8
 - data/lib/nephos-server/routing/load.rb +33 -17
 - data/lib/nephos-server/server/responder.rb +6 -7
 - data/nephos-server.gemspec +27 -22
 - data/routes.rb +22 -0
 - data/test/responder.rb +90 -0
 - data/test/routing.rb +18 -0
 - data/test/test.rb +3 -0
 - data/version +1 -1
 - metadata +13 -3
 - data/routes.rb.example +0 -3
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 9ef589e2b56701d6cdac117476c0672b3cf0aced
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 1dc8dbfcb20cdbb48ea3692731561136068dcd19
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: a4a2e21ee155c0350c9c2727262fea00005bcfb9588b8b42ce1ba830290c783daff6e527afa748a34539761005ba6f01bd33393350bee6781826325e8ed237af
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 773200898dc45b06b7c8cb4f82ab39a35539ae5b5698e4dbf1ceb7c773506633e5ca6c74cb9c16099ae22b5e7699d5c3034d6368b79e1c79b78d40a7b18c3c69
         
     | 
| 
         @@ -0,0 +1,42 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'open-uri'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Dataset
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              $dataset = []
         
     | 
| 
      
 6 
     | 
    
         
            +
              LOCK = Mutex.new
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              def self.start
         
     | 
| 
      
 9 
     | 
    
         
            +
                Thread.new do
         
     | 
| 
      
 10 
     | 
    
         
            +
                  loop do
         
     | 
| 
      
 11 
     | 
    
         
            +
                    $dataset.each do |url|
         
     | 
| 
      
 12 
     | 
    
         
            +
                      print "Open #{url} "
         
     | 
| 
      
 13 
     | 
    
         
            +
                      begin
         
     | 
| 
      
 14 
     | 
    
         
            +
                        open(url)
         
     | 
| 
      
 15 
     | 
    
         
            +
                        puts "SUCCESS"
         
     | 
| 
      
 16 
     | 
    
         
            +
                      rescue => err
         
     | 
| 
      
 17 
     | 
    
         
            +
                        puts "FAILURE #{err.message}"
         
     | 
| 
      
 18 
     | 
    
         
            +
                      end
         
     | 
| 
      
 19 
     | 
    
         
            +
                      sleep 1
         
     | 
| 
      
 20 
     | 
    
         
            +
                    end
         
     | 
| 
      
 21 
     | 
    
         
            +
                  end
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              def self.<<(url)
         
     | 
| 
      
 26 
     | 
    
         
            +
                if not $started
         
     | 
| 
      
 27 
     | 
    
         
            +
                  $started = true
         
     | 
| 
      
 28 
     | 
    
         
            +
                  start
         
     | 
| 
      
 29 
     | 
    
         
            +
                end
         
     | 
| 
      
 30 
     | 
    
         
            +
                LOCK.lock
         
     | 
| 
      
 31 
     | 
    
         
            +
                $dataset << url
         
     | 
| 
      
 32 
     | 
    
         
            +
                $dataset.uniq!
         
     | 
| 
      
 33 
     | 
    
         
            +
                LOCK.unlock
         
     | 
| 
      
 34 
     | 
    
         
            +
              end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
              def self.rm(url)
         
     | 
| 
      
 37 
     | 
    
         
            +
                LOCK.lock
         
     | 
| 
      
 38 
     | 
    
         
            +
                $dataset.remove url
         
     | 
| 
      
 39 
     | 
    
         
            +
                LOCK.unlock
         
     | 
| 
      
 40 
     | 
    
         
            +
              end
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
            end
         
     | 
| 
         Binary file 
     | 
    
        data/controllers/main.rb
    ADDED
    
    | 
         @@ -0,0 +1,55 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class MainController < Nephos::Controller
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              def root
         
     | 
| 
      
 4 
     | 
    
         
            +
                {
         
     | 
| 
      
 5 
     | 
    
         
            +
                  json: {
         
     | 
| 
      
 6 
     | 
    
         
            +
                    list: $dataset,
         
     | 
| 
      
 7 
     | 
    
         
            +
                    add: '/add',
         
     | 
| 
      
 8 
     | 
    
         
            +
                    rm: '/rm',
         
     | 
| 
      
 9 
     | 
    
         
            +
                  }
         
     | 
| 
      
 10 
     | 
    
         
            +
                }
         
     | 
| 
      
 11 
     | 
    
         
            +
              end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
              def add_url
         
     | 
| 
      
 14 
     | 
    
         
            +
                url = arguments["url"]
         
     | 
| 
      
 15 
     | 
    
         
            +
                if url
         
     | 
| 
      
 16 
     | 
    
         
            +
                  Dataset << url
         
     | 
| 
      
 17 
     | 
    
         
            +
                  return {plain: "#{url} added"}
         
     | 
| 
      
 18 
     | 
    
         
            +
                else
         
     | 
| 
      
 19 
     | 
    
         
            +
                  return {plain: "url argument required"}
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              def rm_url
         
     | 
| 
      
 24 
     | 
    
         
            +
                url = arguments[:url]
         
     | 
| 
      
 25 
     | 
    
         
            +
                if url
         
     | 
| 
      
 26 
     | 
    
         
            +
                  Dataset.rm url
         
     | 
| 
      
 27 
     | 
    
         
            +
                  return {plain: "#{url} removed"}
         
     | 
| 
      
 28 
     | 
    
         
            +
                else
         
     | 
| 
      
 29 
     | 
    
         
            +
                  return {plain: "url argument required"}
         
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
              end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
              def hello
         
     | 
| 
      
 34 
     | 
    
         
            +
                {html: "<html><body><h1>hello world</h1><p>lol</p></body></html>"}
         
     | 
| 
      
 35 
     | 
    
         
            +
              end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
              AUTH_IMG_EXT = %w(.jpg .jpeg .png .gif)
         
     | 
| 
      
 38 
     | 
    
         
            +
              def image
         
     | 
| 
      
 39 
     | 
    
         
            +
                dir = File.expand_path('controllers/')
         
     | 
| 
      
 40 
     | 
    
         
            +
                file = File.expand_path(params["image"], dir)
         
     | 
| 
      
 41 
     | 
    
         
            +
                if not file[0..(dir.size-1)] == dir or not AUTH_IMG_EXT.include?(File.extname(file))
         
     | 
| 
      
 42 
     | 
    
         
            +
                  return {status: 500, content: "invalid path #{params['image']}"}
         
     | 
| 
      
 43 
     | 
    
         
            +
                elsif not File.exists? file
         
     | 
| 
      
 44 
     | 
    
         
            +
                  return {status: 404, content: "invalid path #{params['image']}"}
         
     | 
| 
      
 45 
     | 
    
         
            +
                else
         
     | 
| 
      
 46 
     | 
    
         
            +
                  return {type: 'image/jpeg', content: File.read(file)}
         
     | 
| 
      
 47 
     | 
    
         
            +
                end
         
     | 
| 
      
 48 
     | 
    
         
            +
              end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
              require 'pry'
         
     | 
| 
      
 51 
     | 
    
         
            +
              def debug
         
     | 
| 
      
 52 
     | 
    
         
            +
                binding.pry
         
     | 
| 
      
 53 
     | 
    
         
            +
              end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -23,6 +23,14 @@ module Nephos 
     | 
|
| 
       23 
23 
     | 
    
         
             
                  return ALL.find{|e| e[:match] =~ route and e[:verb] == verb}
         
     | 
| 
       24 
24 
     | 
    
         
             
                end
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
      
 26 
     | 
    
         
            +
                def self.parse_env(env, route)
         
     | 
| 
      
 27 
     | 
    
         
            +
                  verb = env["REQUEST_METHOD"]
         
     | 
| 
      
 28 
     | 
    
         
            +
                  from = env["REMOTE_ADDR"]
         
     | 
| 
      
 29 
     | 
    
         
            +
                  path = route.path.split("/").select{|e|not e.to_s.empty?}
         
     | 
| 
      
 30 
     | 
    
         
            +
                  args = Hash[route.query.to_s.split("&").map{|e| e.split("=")}]
         
     | 
| 
      
 31 
     | 
    
         
            +
                  return {route: route, verb: verb, from: from, path: path, args: args}
         
     | 
| 
      
 32 
     | 
    
         
            +
                end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
       26 
34 
     | 
    
         
             
                def self.execute(env)
         
     | 
| 
       27 
35 
     | 
    
         
             
                  begin
         
     | 
| 
       28 
36 
     | 
    
         
             
                    route = URI.parse(env['REQUEST_URI'])
         
     | 
| 
         @@ -30,14 +38,10 @@ module Nephos 
     | 
|
| 
       30 
38 
     | 
    
         
             
                    puts "uri err #{err.message}".red
         
     | 
| 
       31 
39 
     | 
    
         
             
                    return render(status: 500)
         
     | 
| 
       32 
40 
     | 
    
         
             
                  end
         
     | 
| 
       33 
     | 
    
         
            -
                   
     | 
| 
       34 
     | 
    
         
            -
                  from  
     | 
| 
       35 
     | 
    
         
            -
                   
     | 
| 
       36 
     | 
    
         
            -
                   
     | 
| 
       37 
     | 
    
         
            -
                  puts "#{from} [#{verb}] \t ---> \t #{route}"
         
     | 
| 
       38 
     | 
    
         
            -
                  parsed = {route: route, verb: verb, from: from, path: path, args: args}
         
     | 
| 
       39 
     | 
    
         
            -
                  call = parse_path(path, verb)
         
     | 
| 
       40 
     | 
    
         
            -
                  return render status: 404 if call.nil?
         
     | 
| 
      
 41 
     | 
    
         
            +
                  parsed = parse_env(env, route)
         
     | 
| 
      
 42 
     | 
    
         
            +
                  puts "#{parsed[:from]} [#{parsed[:verb]}] \t ---> \t #{route}"
         
     | 
| 
      
 43 
     | 
    
         
            +
                  call = parse_path(parsed[:path], parsed[:verb])
         
     | 
| 
      
 44 
     | 
    
         
            +
                  return render(status: 404) if call.nil?
         
     | 
| 
       41 
45 
     | 
    
         
             
                  begin
         
     | 
| 
       42 
46 
     | 
    
         
             
                    controller = Module.const_get(call[:controller]).new(env, parsed, call)
         
     | 
| 
       43 
47 
     | 
    
         
             
                    return render(controller.send(call[:method]) || {status: 500})
         
     | 
| 
         @@ -3,7 +3,9 @@ module Nephos 
     | 
|
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
                def self.add(what, verb)
         
     | 
| 
       5 
5 
     | 
    
         
             
                  Nephos::Route::ALL << what.merge(verb: verb)
         
     | 
| 
       6 
     | 
    
         
            -
                   
     | 
| 
      
 6 
     | 
    
         
            +
                  display = "[#{verb}] #{what[:url]} \t ---> \t #{what[:controller]}##{what[:method]}"
         
     | 
| 
      
 7 
     | 
    
         
            +
                  puts display unless what[:silent]
         
     | 
| 
      
 8 
     | 
    
         
            +
                  return display
         
     | 
| 
       7 
9 
     | 
    
         
             
                end
         
     | 
| 
       8 
10 
     | 
    
         | 
| 
       9 
11 
     | 
    
         
             
                def self.add_params!(what)
         
     | 
| 
         @@ -16,10 +18,13 @@ module Nephos 
     | 
|
| 
       16 
18 
     | 
    
         
             
                  what[:params] = params.map{|e| e[:name] && e[:name][1..-1]}[1..-1] || []
         
     | 
| 
       17 
19 
     | 
    
         
             
                end
         
     | 
| 
       18 
20 
     | 
    
         | 
| 
       19 
     | 
    
         
            -
                def self. 
     | 
| 
      
 21 
     | 
    
         
            +
                def self.check_keys! what
         
     | 
| 
       20 
22 
     | 
    
         
             
                  raise InvalidRouteUrl, "Missing URL" unless what.keys.include? :url
         
     | 
| 
       21 
23 
     | 
    
         
             
                  raise InvalidRouteController, "Missing Controller" unless what.keys.include? :controller
         
     | 
| 
       22 
24 
     | 
    
         
             
                  raise InvalidRouteMethod, "Missing Method" unless what.keys.include? :method
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                def self.check_controller! what
         
     | 
| 
       23 
28 
     | 
    
         
             
                  begin
         
     | 
| 
       24 
29 
     | 
    
         
             
                    controller = Module.const_get(what[:controller])
         
     | 
| 
       25 
30 
     | 
    
         
             
                  rescue
         
     | 
| 
         @@ -28,9 +33,24 @@ module Nephos 
     | 
|
| 
       28 
33 
     | 
    
         
             
                  if not controller.ancestors.include? Nephos::Controller
         
     | 
| 
       29 
34 
     | 
    
         
             
                    raise InvalidRouteController, "Class \"#{what[:controller]}\" is not a Nephos::Controller"
         
     | 
| 
       30 
35 
     | 
    
         
             
                  end
         
     | 
| 
       31 
     | 
    
         
            -
                   
     | 
| 
      
 36 
     | 
    
         
            +
                  begin
         
     | 
| 
      
 37 
     | 
    
         
            +
                    instance = controller.new
         
     | 
| 
      
 38 
     | 
    
         
            +
                  rescue
         
     | 
| 
      
 39 
     | 
    
         
            +
                    raise InvalidRouteController, "Cannot initialize controller"
         
     | 
| 
      
 40 
     | 
    
         
            +
                  end
         
     | 
| 
      
 41 
     | 
    
         
            +
                  return instance
         
     | 
| 
      
 42 
     | 
    
         
            +
                end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                def self.check_method! what, instance
         
     | 
| 
      
 45 
     | 
    
         
            +
                  if not instance.respond_to? what[:method]
         
     | 
| 
       32 
46 
     | 
    
         
             
                    raise InvalidRouteMethod, "No method named \"#{what[:method]}\""
         
     | 
| 
       33 
     | 
    
         
            -
                  end 
     | 
| 
      
 47 
     | 
    
         
            +
                  end
         
     | 
| 
      
 48 
     | 
    
         
            +
                end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                def self.check!(what)
         
     | 
| 
      
 51 
     | 
    
         
            +
                  check_keys! what
         
     | 
| 
      
 52 
     | 
    
         
            +
                  instance = check_controller! what
         
     | 
| 
      
 53 
     | 
    
         
            +
                  check_method! what, instance
         
     | 
| 
       34 
54 
     | 
    
         
             
                end
         
     | 
| 
       35 
55 
     | 
    
         | 
| 
       36 
56 
     | 
    
         
             
              end
         
     | 
| 
         @@ -41,31 +61,27 @@ def route_prefix 
     | 
|
| 
       41 
61 
     | 
    
         
             
              File.join(["/"] + @route_prefix)
         
     | 
| 
       42 
62 
     | 
    
         
             
            end
         
     | 
| 
       43 
63 
     | 
    
         | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
            def get what
         
     | 
| 
      
 64 
     | 
    
         
            +
            def add_route(what, verb)
         
     | 
| 
       46 
65 
     | 
    
         
             
              raise InvalidRoute unless what.is_a? Hash
         
     | 
| 
       47 
66 
     | 
    
         
             
              what[:url] = File.expand_path File.join(route_prefix, what[:url])
         
     | 
| 
       48 
67 
     | 
    
         
             
              Nephos::Route.check!(what)
         
     | 
| 
       49 
68 
     | 
    
         
             
              Nephos::Route.add_params!(what)
         
     | 
| 
       50 
     | 
    
         
            -
              Nephos::Route.add(what,  
     | 
| 
      
 69 
     | 
    
         
            +
              Nephos::Route.add(what, verb)
         
     | 
| 
      
 70 
     | 
    
         
            +
            end
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
            # @param what [Hash]
         
     | 
| 
      
 73 
     | 
    
         
            +
            def get what
         
     | 
| 
      
 74 
     | 
    
         
            +
              add_route what, "GET"
         
     | 
| 
       51 
75 
     | 
    
         
             
            end
         
     | 
| 
       52 
76 
     | 
    
         | 
| 
       53 
77 
     | 
    
         
             
            # @param what [Hash]
         
     | 
| 
       54 
78 
     | 
    
         
             
            def post what
         
     | 
| 
       55 
     | 
    
         
            -
               
     | 
| 
       56 
     | 
    
         
            -
              what[:url] = File.join(route_prefix, what[:url])
         
     | 
| 
       57 
     | 
    
         
            -
              Nephos::Route.check!(what)
         
     | 
| 
       58 
     | 
    
         
            -
              Nephos::Route.add_params!(what)
         
     | 
| 
       59 
     | 
    
         
            -
              Nephos::Route.add(what, "POST")
         
     | 
| 
      
 79 
     | 
    
         
            +
              add_route what, "POST"
         
     | 
| 
       60 
80 
     | 
    
         
             
            end
         
     | 
| 
       61 
81 
     | 
    
         | 
| 
       62 
82 
     | 
    
         
             
            # @param what [Hash]
         
     | 
| 
       63 
83 
     | 
    
         
             
            def put what
         
     | 
| 
       64 
     | 
    
         
            -
               
     | 
| 
       65 
     | 
    
         
            -
              what[:url] = File.join(route_prefix, what[:url])
         
     | 
| 
       66 
     | 
    
         
            -
              Nephos::Route.check!(what)
         
     | 
| 
       67 
     | 
    
         
            -
              Nephos::Route.add_params!(what)
         
     | 
| 
       68 
     | 
    
         
            -
              Nephos::Route.add(what, "PUT")
         
     | 
| 
      
 84 
     | 
    
         
            +
              add_route what, "PUT"
         
     | 
| 
       69 
85 
     | 
    
         
             
            end
         
     | 
| 
       70 
86 
     | 
    
         | 
| 
       71 
87 
     | 
    
         
             
            def resource(name, &block)
         
     | 
| 
         @@ -11,7 +11,7 @@ module Nephos 
     | 
|
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         
             
                # @param params [Hash] containing :type => "kind/type", example: "text/html"
         
     | 
| 
       13 
13 
     | 
    
         
             
                def self.ct_specific(params)
         
     | 
| 
       14 
     | 
    
         
            -
                  kind, type = params[:type].match(/^(\w+)\/(\w+)$/)[1..2]
         
     | 
| 
      
 14 
     | 
    
         
            +
                  kind, type = params[:type].to_s.match(/^(\w+)\/(\w+)$/) && Regexp.last_match[1..2]
         
     | 
| 
       15 
15 
     | 
    
         
             
                  if kind.nil? or type.nil?
         
     | 
| 
       16 
16 
     | 
    
         
             
                    raise InvalidContentType, "params[:type] must match with \"kind/type\""
         
     | 
| 
       17 
17 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -27,14 +27,13 @@ module Nephos 
     | 
|
| 
       27 
27 
     | 
    
         
             
                private
         
     | 
| 
       28 
28 
     | 
    
         
             
                # if not :status entry, set to 200
         
     | 
| 
       29 
29 
     | 
    
         
             
                def self.set_default_params_status params
         
     | 
| 
       30 
     | 
    
         
            -
                   
     | 
| 
       31 
     | 
    
         
            -
                    params[:status] ||= 200
         
     | 
| 
       32 
     | 
    
         
            -
                  end
         
     | 
| 
      
 30 
     | 
    
         
            +
                  params[:status] ||= 200
         
     | 
| 
       33 
31 
     | 
    
         
             
                end
         
     | 
| 
       34 
32 
     | 
    
         | 
| 
       35 
33 
     | 
    
         
             
                def self.set_default_params_type params
         
     | 
| 
       36 
     | 
    
         
            -
                   
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
      
 34 
     | 
    
         
            +
                  if params[:type].nil?
         
     | 
| 
      
 35 
     | 
    
         
            +
                    params[:type] = PRESET_CT[(params.keys & [:plain, :html, :json]).first || :plain]
         
     | 
| 
      
 36 
     | 
    
         
            +
                  end
         
     | 
| 
       38 
37 
     | 
    
         
             
                  params[:type] = ct_specific(params)
         
     | 
| 
       39 
38 
     | 
    
         
             
                end
         
     | 
| 
       40 
39 
     | 
    
         | 
| 
         @@ -65,7 +64,7 @@ module Nephos 
     | 
|
| 
       65 
64 
     | 
    
         | 
| 
       66 
65 
     | 
    
         
             
                # @param params [Hash, Symbol]
         
     | 
| 
       67 
66 
     | 
    
         
             
                def self.render params
         
     | 
| 
       68 
     | 
    
         
            -
                  return [204, plain 
     | 
| 
      
 67 
     | 
    
         
            +
                  return [204, ct_specific({type: PRESET_CT[:plain]}), [""]] if params == :empty
         
     | 
| 
       69 
68 
     | 
    
         
             
                  params = set_default_params(params)
         
     | 
| 
       70 
69 
     | 
    
         
             
                  return [
         
     | 
| 
       71 
70 
     | 
    
         
             
                    params[:status],
         
     | 
    
        data/nephos-server.gemspec
    CHANGED
    
    | 
         @@ -5,29 +5,34 @@ Gem::Specification.new do |s| 
     | 
|
| 
       5 
5 
     | 
    
         
             
              s.summary     = 'See Changelog'
         
     | 
| 
       6 
6 
     | 
    
         
             
              s.description = ' a minimalist server, based on rack/puma, with routing, rendering, and controllers. Designed for quick api.'
         
     | 
| 
       7 
7 
     | 
    
         
             
              s.authors     = [
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
            		  ]
         
     | 
| 
       10 
     | 
    
         
            -
              s.email       = 'poulet_a@epitech.eu',
         
     | 
| 
       11 
     | 
    
         
            -
              s.files       = [
         
     | 
| 
       12 
     | 
    
         
            -
                           	  'lib/nephos-server.rb',
         
     | 
| 
       13 
     | 
    
         
            -
                           	  'lib/nephos-server/basic_errors.rb',
         
     | 
| 
       14 
     | 
    
         
            -
                           	  'lib/nephos-server/server/main.rb',
         
     | 
| 
       15 
     | 
    
         
            -
                           	  'lib/nephos-server/server/responder.rb',
         
     | 
| 
       16 
     | 
    
         
            -
                           	  'lib/nephos-server/routing/execute.rb',
         
     | 
| 
       17 
     | 
    
         
            -
                           	  'lib/nephos-server/routing/load.rb',
         
     | 
| 
       18 
     | 
    
         
            -
                           	  'lib/nephos-server/routing/controller.rb',
         
     | 
| 
       19 
     | 
    
         
            -
                              'routes.rb.example',
         
     | 
| 
       20 
     | 
    
         
            -
            		  'README.md',
         
     | 
| 
       21 
     | 
    
         
            -
            		  'Rakefile',
         
     | 
| 
       22 
     | 
    
         
            -
            		  'Procfile',
         
     | 
| 
       23 
     | 
    
         
            -
                              'Gemfile',
         
     | 
| 
       24 
     | 
    
         
            -
                              'Gemfile.lock',
         
     | 
| 
       25 
     | 
    
         
            -
            		  'nephos-server.gemspec',
         
     | 
| 
       26 
     | 
    
         
            -
                              'version',
         
     | 
| 
       27 
     | 
    
         
            -
            		  'test/test.rb',
         
     | 
| 
       28 
     | 
    
         
            -
                              'bin/nephos-server',
         
     | 
| 
       29 
     | 
    
         
            -
                              'bin/nephos-generator'
         
     | 
| 
      
 8 
     | 
    
         
            +
                'poulet_a'
         
     | 
| 
       30 
9 
     | 
    
         
             
              ]
         
     | 
| 
      
 10 
     | 
    
         
            +
              s.email       = 'poulet_a@epitech.eu',
         
     | 
| 
      
 11 
     | 
    
         
            +
              s.files       = %w(
         
     | 
| 
      
 12 
     | 
    
         
            +
            lib/nephos-server.rb
         
     | 
| 
      
 13 
     | 
    
         
            +
            lib/nephos-server/basic_errors.rb
         
     | 
| 
      
 14 
     | 
    
         
            +
            lib/nephos-server/server/main.rb
         
     | 
| 
      
 15 
     | 
    
         
            +
            lib/nephos-server/server/responder.rb
         
     | 
| 
      
 16 
     | 
    
         
            +
            lib/nephos-server/routing/execute.rb
         
     | 
| 
      
 17 
     | 
    
         
            +
            lib/nephos-server/routing/load.rb
         
     | 
| 
      
 18 
     | 
    
         
            +
            lib/nephos-server/routing/controller.rb
         
     | 
| 
      
 19 
     | 
    
         
            +
            README.md
         
     | 
| 
      
 20 
     | 
    
         
            +
            Rakefile
         
     | 
| 
      
 21 
     | 
    
         
            +
            Procfile
         
     | 
| 
      
 22 
     | 
    
         
            +
            Gemfile
         
     | 
| 
      
 23 
     | 
    
         
            +
            Gemfile.lock
         
     | 
| 
      
 24 
     | 
    
         
            +
            nephos-server.gemspec
         
     | 
| 
      
 25 
     | 
    
         
            +
            version
         
     | 
| 
      
 26 
     | 
    
         
            +
            test/test.rb
         
     | 
| 
      
 27 
     | 
    
         
            +
            test/responder.rb
         
     | 
| 
      
 28 
     | 
    
         
            +
            test/routing.rb
         
     | 
| 
      
 29 
     | 
    
         
            +
            routes.rb
         
     | 
| 
      
 30 
     | 
    
         
            +
            controllers/dataset.rb
         
     | 
| 
      
 31 
     | 
    
         
            +
            controllers/image.jpg
         
     | 
| 
      
 32 
     | 
    
         
            +
            controllers/main.rb
         
     | 
| 
      
 33 
     | 
    
         
            +
            bin/nephos-server
         
     | 
| 
      
 34 
     | 
    
         
            +
            bin/nephos-generator
         
     | 
| 
      
 35 
     | 
    
         
            +
            )
         
     | 
| 
       31 
36 
     | 
    
         
             
              s.executables = ['nephos-server', 'nephos-generator']
         
     | 
| 
       32 
37 
     | 
    
         
             
              s.homepage    = 'https://github.com/pouleta/NephosRubyServer'
         
     | 
| 
       33 
38 
     | 
    
         
             
              s.license     = 'GNU/GPLv3'
         
     | 
    
        data/routes.rb
    ADDED
    
    | 
         @@ -0,0 +1,22 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            resource "home" do
         
     | 
| 
      
 2 
     | 
    
         
            +
              resource "/index" do
         
     | 
| 
      
 3 
     | 
    
         
            +
                get url: "/", controller: "MainController", method: "root"
         
     | 
| 
      
 4 
     | 
    
         
            +
                get url: "/add", controller: "MainController", method: "add_url"
         
     | 
| 
      
 5 
     | 
    
         
            +
                get url: "/rm", controller: "MainController", method: "rm_url"
         
     | 
| 
      
 6 
     | 
    
         
            +
              end
         
     | 
| 
      
 7 
     | 
    
         
            +
              get url: "/", controller: "MainController", method: "root"
         
     | 
| 
      
 8 
     | 
    
         
            +
            end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            resource "homes" do
         
     | 
| 
      
 11 
     | 
    
         
            +
              get url: "/", controller: "MainController", method: "root"
         
     | 
| 
      
 12 
     | 
    
         
            +
            end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            get url: "/", controller: "MainController", method: "root"
         
     | 
| 
      
 15 
     | 
    
         
            +
            get url: "/add", controller: "MainController", method: "add_url"
         
     | 
| 
      
 16 
     | 
    
         
            +
            get url: "/rm", controller: "MainController", method: "rm_url"
         
     | 
| 
      
 17 
     | 
    
         
            +
            get url: "/debug", controller: "MainController", method: "debug"
         
     | 
| 
      
 18 
     | 
    
         
            +
            get url: "/hello", controller: "MainController", method: "hello"
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            get url: "/image", controller: "MainController", method: "image"
         
     | 
| 
      
 21 
     | 
    
         
            +
            get url: "/image/:image", controller: "MainController", method: "image"
         
     | 
| 
      
 22 
     | 
    
         
            +
            get url: "img/:image", controller: "MainController", method: "image"
         
     | 
    
        data/test/responder.rb
    ADDED
    
    | 
         @@ -0,0 +1,90 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
             
     | 
| 
      
 2 
     | 
    
         
            +
            class TestNephosServerResponder < Test::Unit::TestCase
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
              def test_content_type
         
     | 
| 
      
 5 
     | 
    
         
            +
                assert_equal(
         
     | 
| 
      
 6 
     | 
    
         
            +
                  {'Content-type' => "KIND/TYPE" "; charset=" "CHARSET"},
         
     | 
| 
      
 7 
     | 
    
         
            +
                  Nephos::Responder.content_type("KIND", "TYPE", "CHARSET")
         
     | 
| 
      
 8 
     | 
    
         
            +
                )
         
     | 
| 
      
 9 
     | 
    
         
            +
              end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              def test_ct_specific
         
     | 
| 
      
 12 
     | 
    
         
            +
                p0 = {type: "text/plain"}
         
     | 
| 
      
 13 
     | 
    
         
            +
                p1 = {type: "/"}
         
     | 
| 
      
 14 
     | 
    
         
            +
                p2 = {type: "text/"}
         
     | 
| 
      
 15 
     | 
    
         
            +
                p3 = {type: "/plain"}
         
     | 
| 
      
 16 
     | 
    
         
            +
                p4 = {type: "textplain"}
         
     | 
| 
      
 17 
     | 
    
         
            +
                p5 = {type: ""}
         
     | 
| 
      
 18 
     | 
    
         
            +
                p6 = {type: 1}
         
     | 
| 
      
 19 
     | 
    
         
            +
                p7 = {type: []}
         
     | 
| 
      
 20 
     | 
    
         
            +
                p8 = {type: nil}
         
     | 
| 
      
 21 
     | 
    
         
            +
                p9 = {}
         
     | 
| 
      
 22 
     | 
    
         
            +
                assert Nephos::Responder.ct_specific(p0)
         
     | 
| 
      
 23 
     | 
    
         
            +
                assert_raise Nephos::Responder::InvalidContentType do Nephos::Responder.ct_specific(p1) end
         
     | 
| 
      
 24 
     | 
    
         
            +
                assert_raise Nephos::Responder::InvalidContentType do Nephos::Responder.ct_specific(p2) end
         
     | 
| 
      
 25 
     | 
    
         
            +
                assert_raise Nephos::Responder::InvalidContentType do Nephos::Responder.ct_specific(p3) end
         
     | 
| 
      
 26 
     | 
    
         
            +
                assert_raise Nephos::Responder::InvalidContentType do Nephos::Responder.ct_specific(p4) end
         
     | 
| 
      
 27 
     | 
    
         
            +
                assert_raise Nephos::Responder::InvalidContentType do Nephos::Responder.ct_specific(p5) end
         
     | 
| 
      
 28 
     | 
    
         
            +
                assert_raise Nephos::Responder::InvalidContentType do Nephos::Responder.ct_specific(p6) end
         
     | 
| 
      
 29 
     | 
    
         
            +
                assert_raise Nephos::Responder::InvalidContentType do Nephos::Responder.ct_specific(p7) end
         
     | 
| 
      
 30 
     | 
    
         
            +
                assert_raise Nephos::Responder::InvalidContentType do Nephos::Responder.ct_specific(p8) end
         
     | 
| 
      
 31 
     | 
    
         
            +
                assert_raise Nephos::Responder::InvalidContentType do Nephos::Responder.ct_specific(p9) end
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
              def test_set_default_params_status
         
     | 
| 
      
 35 
     | 
    
         
            +
                p1 = {status: 200}
         
     | 
| 
      
 36 
     | 
    
         
            +
                p2 = {status: 300}
         
     | 
| 
      
 37 
     | 
    
         
            +
                p3 = {status: nil}
         
     | 
| 
      
 38 
     | 
    
         
            +
                p4 = {}
         
     | 
| 
      
 39 
     | 
    
         
            +
                Nephos::Responder.set_default_params_status(p1)
         
     | 
| 
      
 40 
     | 
    
         
            +
                Nephos::Responder.set_default_params_status(p2)
         
     | 
| 
      
 41 
     | 
    
         
            +
                Nephos::Responder.set_default_params_status(p3)
         
     | 
| 
      
 42 
     | 
    
         
            +
                Nephos::Responder.set_default_params_status(p4)
         
     | 
| 
      
 43 
     | 
    
         
            +
                assert_equal({status: 200}, p1)
         
     | 
| 
      
 44 
     | 
    
         
            +
                assert_equal({status: 300}, p2)
         
     | 
| 
      
 45 
     | 
    
         
            +
                assert_equal({status: 200}, p3)
         
     | 
| 
      
 46 
     | 
    
         
            +
                assert_equal({status: 200}, p4)
         
     | 
| 
      
 47 
     | 
    
         
            +
              end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
              def test_set_default_params_type_1
         
     | 
| 
      
 50 
     | 
    
         
            +
                p_ref = {type: Nephos::Responder.ct_specific({type: "text/plain"})}
         
     | 
| 
      
 51 
     | 
    
         
            +
                p1 = {type: "text/plain"}
         
     | 
| 
      
 52 
     | 
    
         
            +
                p2 = {type: "text"}
         
     | 
| 
      
 53 
     | 
    
         
            +
                p3 = {type: "text/plain"}
         
     | 
| 
      
 54 
     | 
    
         
            +
                Nephos::Responder.set_default_params_type(p1)
         
     | 
| 
      
 55 
     | 
    
         
            +
                assert_equal p1, p_ref
         
     | 
| 
      
 56 
     | 
    
         
            +
                assert_raise Nephos::Responder::InvalidContentType do
         
     | 
| 
      
 57 
     | 
    
         
            +
                  Nephos::Responder.set_default_params_type(p2) end
         
     | 
| 
      
 58 
     | 
    
         
            +
                Nephos::Responder.set_default_params_type(p3)
         
     | 
| 
      
 59 
     | 
    
         
            +
                assert_equal p_ref, p3
         
     | 
| 
      
 60 
     | 
    
         
            +
              end
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
              def test_set_default_params_type_2
         
     | 
| 
      
 63 
     | 
    
         
            +
                p1 = {plain: "bla"}
         
     | 
| 
      
 64 
     | 
    
         
            +
                p2 = {html: "bla"}
         
     | 
| 
      
 65 
     | 
    
         
            +
                p3 = {json: "bla", plain: "bla"}
         
     | 
| 
      
 66 
     | 
    
         
            +
                p4 = {json: "bla", html: "bla"}
         
     | 
| 
      
 67 
     | 
    
         
            +
                p5 = {json: "bla"}
         
     | 
| 
      
 68 
     | 
    
         
            +
                Nephos::Responder.set_default_params_type(p1)
         
     | 
| 
      
 69 
     | 
    
         
            +
                Nephos::Responder.set_default_params_type(p2)
         
     | 
| 
      
 70 
     | 
    
         
            +
                Nephos::Responder.set_default_params_type(p3)
         
     | 
| 
      
 71 
     | 
    
         
            +
                Nephos::Responder.set_default_params_type(p4)
         
     | 
| 
      
 72 
     | 
    
         
            +
                Nephos::Responder.set_default_params_type(p5)
         
     | 
| 
      
 73 
     | 
    
         
            +
                plain = Nephos::Responder.ct_specific({type: "text/plain"})
         
     | 
| 
      
 74 
     | 
    
         
            +
                json = Nephos::Responder.ct_specific({type: "text/javascript"})
         
     | 
| 
      
 75 
     | 
    
         
            +
                html = Nephos::Responder.ct_specific({type: "text/html"})
         
     | 
| 
      
 76 
     | 
    
         
            +
                assert_equal plain, p1[:type]
         
     | 
| 
      
 77 
     | 
    
         
            +
                assert_equal html, p2[:type]
         
     | 
| 
      
 78 
     | 
    
         
            +
                assert_equal json, p3[:type]
         
     | 
| 
      
 79 
     | 
    
         
            +
                assert_equal json, p4[:type]
         
     | 
| 
      
 80 
     | 
    
         
            +
                assert_equal json, p5[:type]
         
     | 
| 
      
 81 
     | 
    
         
            +
              end
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
              def test_render_empty
         
     | 
| 
      
 84 
     | 
    
         
            +
                assert_equal(
         
     | 
| 
      
 85 
     | 
    
         
            +
                  [204, Nephos::Responder.ct_specific({type: "text/plain"}), [""]],
         
     | 
| 
      
 86 
     | 
    
         
            +
                  Nephos::Responder.render(:empty)
         
     | 
| 
      
 87 
     | 
    
         
            +
                )
         
     | 
| 
      
 88 
     | 
    
         
            +
              end
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
            end
         
     | 
    
        data/test/routing.rb
    ADDED
    
    | 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class TestController < Nephos::Controller
         
     | 
| 
      
 2 
     | 
    
         
            +
              def method
         
     | 
| 
      
 3 
     | 
    
         
            +
                {plain: "test"}
         
     | 
| 
      
 4 
     | 
    
         
            +
              end
         
     | 
| 
      
 5 
     | 
    
         
            +
            end
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            class TestNephosServerRouting < Test::Unit::TestCase
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              # remove all seeds
         
     | 
| 
      
 10 
     | 
    
         
            +
              Nephos::Route::ALL = []
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
              def test_valid_routes
         
     | 
| 
      
 13 
     | 
    
         
            +
                get url: "/", controller: "TestController", method: "method", silent: true
         
     | 
| 
      
 14 
     | 
    
         
            +
                post url: "/", controller: "TestController", method: "method", silent: true
         
     | 
| 
      
 15 
     | 
    
         
            +
                put url: "/", controller: "TestController", method: "method", silent: true
         
     | 
| 
      
 16 
     | 
    
         
            +
              end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
    
        data/test/test.rb
    CHANGED
    
    
    
        data/version
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            0.1. 
     | 
| 
      
 1 
     | 
    
         
            +
            0.1.12
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: nephos-server
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.1.12
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - poulet_a
         
     | 
| 
         @@ -49,7 +49,6 @@ email: 
     | 
|
| 
       49 
49 
     | 
    
         
             
              - lib/nephos-server/routing/execute.rb
         
     | 
| 
       50 
50 
     | 
    
         
             
              - lib/nephos-server/routing/load.rb
         
     | 
| 
       51 
51 
     | 
    
         
             
              - lib/nephos-server/routing/controller.rb
         
     | 
| 
       52 
     | 
    
         
            -
              - routes.rb.example
         
     | 
| 
       53 
52 
     | 
    
         
             
              - README.md
         
     | 
| 
       54 
53 
     | 
    
         
             
              - Rakefile
         
     | 
| 
       55 
54 
     | 
    
         
             
              - Procfile
         
     | 
| 
         @@ -58,6 +57,12 @@ email: 
     | 
|
| 
       58 
57 
     | 
    
         
             
              - nephos-server.gemspec
         
     | 
| 
       59 
58 
     | 
    
         
             
              - version
         
     | 
| 
       60 
59 
     | 
    
         
             
              - test/test.rb
         
     | 
| 
      
 60 
     | 
    
         
            +
              - test/responder.rb
         
     | 
| 
      
 61 
     | 
    
         
            +
              - test/routing.rb
         
     | 
| 
      
 62 
     | 
    
         
            +
              - routes.rb
         
     | 
| 
      
 63 
     | 
    
         
            +
              - controllers/dataset.rb
         
     | 
| 
      
 64 
     | 
    
         
            +
              - controllers/image.jpg
         
     | 
| 
      
 65 
     | 
    
         
            +
              - controllers/main.rb
         
     | 
| 
       61 
66 
     | 
    
         
             
              - bin/nephos-server
         
     | 
| 
       62 
67 
     | 
    
         
             
              - bin/nephos-generator
         
     | 
| 
       63 
68 
     | 
    
         
             
            executables:
         
     | 
| 
         @@ -73,6 +78,9 @@ files: 
     | 
|
| 
       73 
78 
     | 
    
         
             
            - Rakefile
         
     | 
| 
       74 
79 
     | 
    
         
             
            - bin/nephos-generator
         
     | 
| 
       75 
80 
     | 
    
         
             
            - bin/nephos-server
         
     | 
| 
      
 81 
     | 
    
         
            +
            - controllers/dataset.rb
         
     | 
| 
      
 82 
     | 
    
         
            +
            - controllers/image.jpg
         
     | 
| 
      
 83 
     | 
    
         
            +
            - controllers/main.rb
         
     | 
| 
       76 
84 
     | 
    
         
             
            - lib/nephos-server.rb
         
     | 
| 
       77 
85 
     | 
    
         
             
            - lib/nephos-server/basic_errors.rb
         
     | 
| 
       78 
86 
     | 
    
         
             
            - lib/nephos-server/routing/controller.rb
         
     | 
| 
         @@ -81,7 +89,9 @@ files: 
     | 
|
| 
       81 
89 
     | 
    
         
             
            - lib/nephos-server/server/main.rb
         
     | 
| 
       82 
90 
     | 
    
         
             
            - lib/nephos-server/server/responder.rb
         
     | 
| 
       83 
91 
     | 
    
         
             
            - nephos-server.gemspec
         
     | 
| 
       84 
     | 
    
         
            -
            - routes.rb 
     | 
| 
      
 92 
     | 
    
         
            +
            - routes.rb
         
     | 
| 
      
 93 
     | 
    
         
            +
            - test/responder.rb
         
     | 
| 
      
 94 
     | 
    
         
            +
            - test/routing.rb
         
     | 
| 
       85 
95 
     | 
    
         
             
            - test/test.rb
         
     | 
| 
       86 
96 
     | 
    
         
             
            - version
         
     | 
| 
       87 
97 
     | 
    
         
             
            homepage: https://github.com/pouleta/NephosRubyServer
         
     | 
    
        data/routes.rb.example
    DELETED