Popularity
6.5
Growing
Activity
3.1
-
33
4
0

Programming language: Crystal
License: MIT License
Tags: Web Frameworks    
Latest version: v1.0.1

runcobo alternatives and similar shards

Based on the "Web Frameworks" category.
Alternatively, view runcobo alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of runcobo or a related project?

Add another 'Web Frameworks' Shard

README

Runcobo

Travis CI build Built with Crystal Latest release API docs

Runcobo is an api framework in Crystal.

Philosophy

  • Simple Design must be simple, both in implementation and interface.
  • Intuitive Design must be intuitive.
  • Consistent Design must be consistent.

Installation

  1. Add the dependency to your shard.yml:
dependencies:
  runcobo:
    github: runcobo/runcobo

This shard follows Semantic Versioning v2.0.0, so check releases and change the version accordingly.

  1. Run shards install

Usage

require "runcobo"

class Api::V1::Add < BaseAction
  get "/api/v1/add"
  query NamedTuple(a: Int32, b: Int32)

  call do
    sum = params[:a] + params[:b]
    render_plain sum.to_s
  end
end

Runcobo.start

Api

class BaseAction
  # Route
  def self.get(url : String)
  def self.post(url : String)
  def self.put(url : String)
  def self.patch(url : String)
  def self.delete(url : String)
  def self.options(url : String)
  def self.head(url : String)
  def self.route(method : String, url : String)

  # Params Definition
  macro url(named_tuple : NamedTuple.class)
  macro query(named_tuple : NamedTuple.class)
  macro form(named_tuple : NamedTuple.class)
  macro json(named_tuple : NamedTuple.class)

  # Params Call
  def params : NamedTuple

  # Call
  macro call(&block) : HTTP::Server::Context
  macro layout(filename : String)
  macro before(method_name : Crystal::Macros::MacroId)
  macro after(method_name : Crystal::Macros::MacroId)
  macro skip(method_name : Crystal::Macros::MacroId)

  # Render View
  def render_plain(text : String, *, statu_code :Int32 = 200) : HTTP::Server::Context
  def render_body(body : String, *, statu_code : Int32 = 200) : HTTP::Server::Context
  macro render_water(filename : String, *, layout = "", status_code = Int32, dir = "src/views/", layout_dir = "src/views/layouts/") : HTTP::Server::Context
  macro render_jbuilder(filename : String, *, layout = "", status_code = Int32, dir = "src/views/", layout_dir = "src/views/layouts/") : HTTP::Server::Context
end

module Runcobo
  # Start Server
  def self.start(*,
                 host : String = ENV["HOST"]? || "0.0.0.0",
                 port : Int32 = (ENV["PORT"]? || 3000).to_i,
                 reuse_port : Bool = false,
                 handlers : Array(HTTP::Handler) = Runcobo::Server.default_handlers,
                 cert : String? = ENV["CERT"]?,
                 key : String? = ENV["KEY"]?)
end

Contributing

  1. Fork it (https://github.com/runcobo/runcobo/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Write and execute specs (crystal spec) and formatting checks (crystal tool format)
  4. Commit your changes (git commit -am 'Add some feature')
  5. Push to the branch (git push origin my-new-feature)
  6. Create a new Pull Request

Contributors