# DSL for Rack apps to create simple API interfaces. # https://github.com/stripe/poncho#readme class ChargeResource < Poncho::Resource param :amount, :type => :integer param :currency def currency super || 'USD' end end class ChargeCreateMethod < Poncho::JSONMethod param :amount, :type => :integer, :required => true param :currency, :in => ['USD', 'GBP'] def invoke charge = Charge.new charge.amount = param(:amount) charge.currency = param(:currency) charge.save ChargeResource.new(charge) end end post '/charges', &ChargeCreateMethod