Sha256: 789f1bf00e70f41a497d51500acede1427155a8a4a2de9810026b6830f4b5329
Contents?: true
Size: 1.85 KB
Versions: 1
Compression:
Stored size: 1.85 KB
Contents
class Lux::Api # name 'Show user data' # param :email, type: :email, req: false # param :pass # def show # @user = User.where(email:@_email).first # @user.slice(:id, :name, :avatar, :email) # end class << self @@actions ||= {} def method_added(m) ClassMethodParams.add_method self, m end # helper for standard definition of parametars # param :o_id # param :o_id, Integer # param :o_id, Integer, req: false # param :o_id, req: false def param(field, type=String, opts={}) opts = type.is_a?(Hash) ? type : opts.merge(type: type) opts[:name] = field opts[:req] = opts[:req].class.name == 'FalseClass' ? false : true opts[:type] ||= String ClassMethodParams.add_param self, :param, opts end # helper for standard definition of name def name(name) ClassMethodParams.add_param self, :name, name end # helper for standard definition of description def description(data) ClassMethodParams.add_param self, :description, name end end ### def check_params_and_mock_instance_variables action opts = ClassMethodParams.params self.class, action if opts && opts[:param] local = opts[:param].inject({}) { |h, el| o=el.dup; h[o.delete(:name)] = o; h } rules = Typero.new local errors = rules.validate(@params) if errors.keys.length > 0 raise ArgumentError.new(errors.values.to_sentence) unless Lux.page Lux.page.status(400) @response[:error] = errors.values.to_sentence @response[:errors] = errors return false end # define local prefixed @_ variables for key in local.keys.map(&:to_s) value = params[key] eval "@_#{key.downcase.gsub(/[^\w]/,'_')} = value" if key.length < 15 && value.present? && key =~ /^[\w]+$/ end end true end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
lux-fw-0.1.17 | ./lib/lux/api/lib/dsl.rb |