yaframework 0.3.0 → 0.4.0
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/Gemfile +1 -1
- data/examples/hello-world/Gemfile +1 -1
- data/examples/hello-world/Gemfile.lock +3 -7
- data/examples/hello-world/app.rb +1 -1
- data/lib/yaframework.rb +2 -2
- data/lib/yaframework/base.rb +7 -11
- data/lib/yaframework/database.rb +18 -0
- data/lib/yaframework/request.rb +12 -0
- data/lib/yaframework/response.rb +39 -0
- data/lib/yaframework/version.rb +1 -1
- metadata +4 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 33b8bd38ee7fbf3d16bdef94f830384f979ad465ff674d085378caa6a46b6971
         | 
| 4 | 
            +
              data.tar.gz: 1da887439ec28a18fc4ee8a4812d9bf3d9f70be894636f181a6af98a965d0dd2
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 6ff977d266bccebbc67aa17c7ff2116be8f51c057be070807afa4d2c6e6a090c1053f146434e3a9ed78defa9ee840dfaa08b760f4807b0976b7bef9a09b181db
         | 
| 7 | 
            +
              data.tar.gz: a62b06535d579d4b552aec2c1a0856514d5b27628aec77e267cfa4d98bc9b4b6185d00d6c919cae5fdf198a295870a7d0a8233eb4b3df08e39c967663791887f
         | 
    
        data/Gemfile
    CHANGED
    
    
| @@ -1,19 +1,15 @@ | |
| 1 | 
            -
            PATH
         | 
| 2 | 
            -
              remote: /home/max/prog/ruby/yaframework
         | 
| 3 | 
            -
              specs:
         | 
| 4 | 
            -
                yaframework (0.3.0)
         | 
| 5 | 
            -
                  rack (~> 2.2)
         | 
| 6 | 
            -
             | 
| 7 1 | 
             
            GEM
         | 
| 8 2 | 
             
              remote: https://rubygems.org/
         | 
| 9 3 | 
             
              specs:
         | 
| 10 4 | 
             
                rack (2.2.3)
         | 
| 5 | 
            +
                yaframework (0.2.2)
         | 
| 6 | 
            +
                  rack (~> 2.2)
         | 
| 11 7 |  | 
| 12 8 | 
             
            PLATFORMS
         | 
| 13 9 | 
             
              ruby
         | 
| 14 10 |  | 
| 15 11 | 
             
            DEPENDENCIES
         | 
| 16 | 
            -
              yaframework | 
| 12 | 
            +
              yaframework
         | 
| 17 13 |  | 
| 18 14 | 
             
            BUNDLED WITH
         | 
| 19 15 | 
             
               2.1.4
         | 
    
        data/examples/hello-world/app.rb
    CHANGED
    
    
    
        data/lib/yaframework.rb
    CHANGED
    
    | @@ -1,9 +1,9 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 3 | 
             
            require_relative "yaframework/base"
         | 
| 4 | 
            +
            require_relative "yaframework/request"
         | 
| 5 | 
            +
            require_relative "yaframework/response"
         | 
| 4 6 | 
             
            require_relative "yaframework/database"
         | 
| 5 | 
            -
            require_relative 'yaframework/request'
         | 
| 6 | 
            -
            require_relative 'yaframework/response'
         | 
| 7 7 |  | 
| 8 8 | 
             
            module Yaframework
         | 
| 9 9 | 
             
            end
         | 
    
        data/lib/yaframework/base.rb
    CHANGED
    
    | @@ -4,11 +4,10 @@ require "rack" | |
| 4 4 |  | 
| 5 5 | 
             
            module Yaframework
         | 
| 6 6 | 
             
              class Base
         | 
| 7 | 
            -
                attr_reader :routes, :request, :response, :env | 
| 7 | 
            +
                attr_reader :routes, :request, :response, :env
         | 
| 8 8 |  | 
| 9 9 | 
             
                def initialize
         | 
| 10 | 
            -
                  @routes = Hash.new | 
| 11 | 
            -
                  # @routes = Hash.new([])
         | 
| 10 | 
            +
                  @routes = Hash.new([])
         | 
| 12 11 | 
             
                end
         | 
| 13 12 |  | 
| 14 13 | 
             
                %w[GET POST PATCH PUT DELETE HEAD OPTIONS].each do |verb|
         | 
| @@ -18,9 +17,9 @@ module Yaframework | |
| 18 17 | 
             
                end
         | 
| 19 18 |  | 
| 20 19 | 
             
                def call(env)
         | 
| 21 | 
            -
                  @env = env
         | 
| 22 20 | 
             
                  @request  = Yaframework::Request.new @env
         | 
| 23 21 | 
             
                  @response = Yaframework::Response.new
         | 
| 22 | 
            +
                  @env = env
         | 
| 24 23 | 
             
                  catch(:halt) { route_eval }
         | 
| 25 24 | 
             
                end
         | 
| 26 25 |  | 
| @@ -36,12 +35,10 @@ module Yaframework | |
| 36 35 |  | 
| 37 36 | 
             
                def add_route(verb, path, &handler)
         | 
| 38 37 | 
             
                  path = "/#{path}" unless path[0] == "/"
         | 
| 39 | 
            -
             | 
| 40 | 
            -
                  @routes[verb] ||= []
         | 
| 41 | 
            -
                  @routes[verb] << compile_route(path, &handler)
         | 
| 38 | 
            +
                  @routes[verb] << compile(path, &handler)
         | 
| 42 39 | 
             
                end
         | 
| 43 40 |  | 
| 44 | 
            -
                def  | 
| 41 | 
            +
                def compile(path, &handler)
         | 
| 45 42 | 
             
                  route = { handler: handler, compiled_path: nil, extra_params: [], path: path }
         | 
| 46 43 |  | 
| 47 44 | 
             
                  compiled_path = path.gsub(/:\w+/) do |match|
         | 
| @@ -59,17 +56,16 @@ module Yaframework | |
| 59 56 | 
             
                  else
         | 
| 60 57 | 
             
                    response.status = 404
         | 
| 61 58 | 
             
                  end
         | 
| 62 | 
            -
             | 
| 63 59 | 
             
                  response.finish
         | 
| 64 60 | 
             
                end
         | 
| 65 61 |  | 
| 66 62 | 
             
                def find_route
         | 
| 67 | 
            -
                  route =  | 
| 63 | 
            +
                  route = routes[request.request_method].detect do |r|
         | 
| 68 64 | 
             
                    r[:compiled_path] =~ request.path_info
         | 
| 69 65 | 
             
                  end
         | 
| 70 66 |  | 
| 71 67 | 
             
                  if route
         | 
| 72 | 
            -
                     | 
| 68 | 
            +
                    $~.captures.each_with_index do |value, index|
         | 
| 73 69 | 
             
                      param = route[:extra_params][index]
         | 
| 74 70 | 
             
                      request.params[param] = value
         | 
| 75 71 | 
             
                    end
         | 
| @@ -0,0 +1,18 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "pg"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            class Database
         | 
| 6 | 
            +
              def self.connect(db_name)
         | 
| 7 | 
            +
                pg_conn = PG.connect(dbname: db_name)
         | 
| 8 | 
            +
                new(pg_conn)
         | 
| 9 | 
            +
              end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              def initialize(pg_conn)
         | 
| 12 | 
            +
                @pg_conn = pg_conn
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              def exec(sql)
         | 
| 16 | 
            +
                @pg_conn.exec(sql).to_a
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
            end
         | 
| @@ -0,0 +1,39 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Yaframework
         | 
| 4 | 
            +
              class Response
         | 
| 5 | 
            +
                attr_accessor :status
         | 
| 6 | 
            +
                attr_reader :headers, :body
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                def initialize(body = [], status = 200, headers = { "Content-Type" => "text/html; charset=utf-8" })
         | 
| 9 | 
            +
                  @body = []
         | 
| 10 | 
            +
                  @headers = headers
         | 
| 11 | 
            +
                  @status = status
         | 
| 12 | 
            +
                  @length = 0
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                  if body.respond_to? :to_str
         | 
| 15 | 
            +
                    write body.to_str
         | 
| 16 | 
            +
                  elsif body.respond_to? :each
         | 
| 17 | 
            +
                    body.each { |i| write i.to_s }
         | 
| 18 | 
            +
                  else
         | 
| 19 | 
            +
                    raise TypeError, "Body must #respond_to? #to_str or #each"
         | 
| 20 | 
            +
                  end
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                def finish
         | 
| 24 | 
            +
                  headers["Content-Length"] = @length.to_s unless (100..199).include?(status) || status == 204
         | 
| 25 | 
            +
                  [status, headers, body]
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                def redirect(target, status = 302)
         | 
| 29 | 
            +
                  self.status = status
         | 
| 30 | 
            +
                  headers["Location"] = target
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                def write(string)
         | 
| 34 | 
            +
                  s = string.to_s
         | 
| 35 | 
            +
                  @length += s.bytesize
         | 
| 36 | 
            +
                  body << s
         | 
| 37 | 
            +
                end
         | 
| 38 | 
            +
              end
         | 
| 39 | 
            +
            end
         | 
    
        data/lib/yaframework/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: yaframework
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.4.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - maxbarsukov
         | 
| @@ -93,6 +93,9 @@ files: | |
| 93 93 | 
             
            - examples/hello-world/config.ru
         | 
| 94 94 | 
             
            - lib/yaframework.rb
         | 
| 95 95 | 
             
            - lib/yaframework/base.rb
         | 
| 96 | 
            +
            - lib/yaframework/database.rb
         | 
| 97 | 
            +
            - lib/yaframework/request.rb
         | 
| 98 | 
            +
            - lib/yaframework/response.rb
         | 
| 96 99 | 
             
            - lib/yaframework/version.rb
         | 
| 97 100 | 
             
            - test/test_helper.rb
         | 
| 98 101 | 
             
            - test/yaframework_test.rb
         |