ezframe 0.0.4 → 0.1.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.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/asset/css/materialize.min.css +13 -0
  4. data/asset/css/style.css +3 -0
  5. data/{app_template/asset/image/favicon.ico → asset/image/c_e.ico} +0 -0
  6. data/{app_template/asset → asset}/js/ezframe.js +29 -59
  7. data/asset/js/materialize.min.js +6 -0
  8. data/asset/js/mymaterialize.js +38 -0
  9. data/exe/console +2 -2
  10. data/exe/{create_table.rb → create_table} +0 -0
  11. data/exe/dbmigrate +67 -0
  12. data/ezframe.gemspec +3 -0
  13. data/lib/ezframe/auth.rb +7 -2
  14. data/lib/ezframe/column_set.rb +30 -14
  15. data/lib/ezframe/column_type.rb +207 -67
  16. data/lib/ezframe/config.rb +5 -1
  17. data/lib/ezframe/controller.rb +34 -34
  18. data/lib/ezframe/database.rb +2 -2
  19. data/lib/ezframe/editor.rb +41 -41
  20. data/lib/ezframe/email.rb +34 -0
  21. data/lib/ezframe/ht.rb +20 -0
  22. data/lib/ezframe/html.rb +22 -14
  23. data/lib/ezframe/japanese_utils.rb +5 -0
  24. data/lib/ezframe/loader.rb +2 -2
  25. data/lib/ezframe/materialize.rb +3 -4
  26. data/lib/ezframe/message.rb +46 -0
  27. data/lib/ezframe/model.rb +0 -1
  28. data/lib/ezframe/page_base.rb +53 -67
  29. data/lib/ezframe/route.rb +122 -0
  30. data/lib/ezframe/server.rb +1 -1
  31. data/lib/ezframe/template.rb +3 -2
  32. data/lib/ezframe/util.rb +36 -16
  33. data/lib/ezframe/version.rb +1 -1
  34. data/lib/ezframe.rb +2 -1
  35. metadata +57 -14
  36. data/.rubocop.yml +0 -44
  37. data/app_template/config/generic.yml +0 -3
  38. data/app_template/config/materialize.yml +0 -5
  39. data/app_template/config.ru +0 -10
  40. data/app_template/pages/basic.rb +0 -5
  41. data/exe/setup.rb +0 -15
  42. data/lib/ezframe/page_kit.rb +0 -63
@@ -12,7 +12,7 @@ module Ezframe
12
12
 
13
13
  def connect
14
14
  @dbfile ||= ENV["EZFRAME_DB"] || Config[:database] || "sqlite://db/devel.sqlite"
15
- puts "Database.connect: dbfile=#{@dbfile}"
15
+ # puts "Database.connect: dbfile=#{@dbfile}"
16
16
  @sequel = Sequel.connect(@dbfile, loggers: [Logger.new($stdout)])
17
17
  end
18
18
 
@@ -31,7 +31,7 @@ module Ezframe
31
31
  # puts "create_table: #{table_name}"
32
32
  if @dbfile.index("postgres")
33
33
  @sequel.create_table(table_name) do
34
- serial :id
34
+ primary_key :id, identity: true
35
35
  dbtype_h.each do |key, dbtype|
36
36
  column(key, dbtype)
37
37
  end
@@ -13,8 +13,8 @@ module Ezframe
13
13
  end
14
14
  @dataset = @column_set.dataset
15
15
  end
16
- if @json
17
- @event = @json[:event] || {}
16
+ if @parsed_body
17
+ @event = @parsed_body[:event] || {}
18
18
  @target_id = @event[@target]
19
19
  end
20
20
  @auth = false
@@ -34,53 +34,53 @@ module Ezframe
34
34
  return @target
35
35
  end
36
36
 
37
- def public_login_page
38
- flash_area = ""
39
- mylog "public_login_page: #{@request}"
40
- if @request
41
- mylog "flash=#{@request.env['x-rack.flash']}"
42
- flash_area = Ht.div(class: %w[teal], child: @request['env']['x-rack.flash'].error)
43
- end
44
- form = Ht.multi_div([ %w[container], %w[row]],
45
- Ht.form(class: "col s6 offset-s3", action: "/#{@target}/login", method: "post", child: [
46
- Materialize.input(type: "text", name: "account", label: "User ID"),
47
- Materialize.input(type: "password", name: "password", label: "Password"),
48
- Ht.button(type: "submit", class: %w[btn], child: "login")
49
- ]))
50
- common_page(title: "Login", body: Html.convert(Materialize.convert([flash_area, form])))
51
- end
52
-
53
- def public_login_post
54
- mylog "public_login_post: #{@params.inspect}, #{@json}"
55
- warden.authenticate
56
- public_index_page
57
- end
37
+ # def public_login_get
38
+ # flash_area = ""
39
+ # mylog "public_login_get: #{@request}"
40
+ # if @request
41
+ # mylog "flash=#{@request.env['x-rack.flash']}"
42
+ # flash_area = Ht.div(class: %w[teal], child: @request['env']['x-rack.flash'].error)
43
+ # end
44
+ # form = Ht.multi_div([ %w[container], %w[row]],
45
+ # Ht.form(class: "col s6 offset-s3", action: "/#{@target}/login", method: "post", child: [
46
+ # Materialize.input(type: "text", name: "account", label: "User ID"),
47
+ # Materialize.input(type: "password", name: "password", label: "Password"),
48
+ # Ht.button(type: "submit", class: %w[btn], child: "login")
49
+ # ]))
50
+ # show_base_template(title: "Login", body: Html.convert(Materialize.convert([flash_area, form])))
51
+ # end
52
+
53
+ # def public_login_post
54
+ # mylog "public_login_post: #{@params.inspect}, #{@parsed_body}"
55
+ # warden.authenticate
56
+ # public_index_get
57
+ # end
58
58
 
59
59
  #--------------------------------------------------------------------------------------------------------
60
60
  # add new parts
61
- def public_new_page
61
+ def public_create_get
62
62
  matrix = @column_set.map do |column|
63
63
  [column.label, column.form]
64
64
  end
65
- matrix.push([Ht.button(child: "送信", class: %w[btn], event: "on=click:branch=add_new:url=/#{@target}/new:with=form")])
65
+ matrix.push([Ht.button(child: Message[:create_finish_button_label], class: %w[btn], event: "on=click:url=/#{@target}/create:with=form")])
66
66
  tb = Ht::Table.new(matrix)
67
67
  layout = main_layout(left: sidenav, center: Ht.form(child: tb.to_h))
68
- common_page(title: "新規登録", body: Html.convert(Materialize.convert(layout)))
68
+ show_base_template(title: Message[:create_page_title], body: Html.convert(Materialize.convert(layout)))
69
69
  end
70
70
 
71
- def public_new_post
71
+ def public_create_post
72
72
  @column_set.values = @event[:form]
73
- @column_set[:id].value = @target_id = @column_set.save
73
+ @column_set[:id].value = @target_id = @column_set.create
74
74
  { redirect: "/#{@target}/detail?id=#{@target_id}" }
75
75
  end
76
76
 
77
77
  #--------------------------------------------------------------------------------------------------------
78
78
  # index parts
79
- def public_index_page
79
+ def public_index_get
80
80
  data_a = @dataset.all
81
81
  htb = make_index_table(data_a)
82
82
  layout = index_layout(left: sidenav, center: Ht.form(child: htb))
83
- common_page(title: "データ一覧", body: Html.convert(Materialize.convert(layout)))
83
+ show_base_template(title: Message[:index_page_title], body: Html.convert(Materialize.convert(layout)))
84
84
  end
85
85
 
86
86
  def make_index_table(data_a)
@@ -99,12 +99,12 @@ module Ezframe
99
99
  table.make_table(data_a)
100
100
  end
101
101
 
102
- alias_method :public_default_page, :public_index_page
102
+ alias_method :public_default_get, :public_index_get
103
103
 
104
104
  #--------------------------------------------------------------------------------------------------------
105
105
  # search parts
106
106
  def public_search_post
107
- mylog "public_search_post: #{@json.inspect}"
107
+ mylog "public_search_post: #{@parsed_body.inspect}"
108
108
  word = @event[:form][:word]
109
109
  pattern = "%#{word}%"
110
110
  data_a = @dataset.where(Sequel.|(Sequel.like(:name_kana, pattern), Sequel.like(:name, pattern))).all
@@ -113,25 +113,25 @@ module Ezframe
113
113
 
114
114
  #--------------------------------------------------------------------------------------------------------
115
115
  # detail parts
116
- def public_detail_page
117
- mylog "pubilc_detail_page: #{@request.params.inspect}"
116
+ def public_detail_get
117
+ mylog "pubilc_detail_get: #{@request.params.inspect}"
118
118
  @target_id ||= @request.params["id"]
119
119
  data = @column_set.set_from_db(@target_id)
120
- return common_page(title: "no data", body: "no customer data: #{@target_id}") unless data
121
- common_page(title: "データ一覧", body: Html.convert(make_detail_page))
120
+ return show_base_template(title: "no data", body: "no customer data: #{@target_id}") unless data
121
+ show_base_template(title: Message[:index_page_title], body: Html.convert(make_detail_get))
122
122
  end
123
123
 
124
- def make_detail_page
124
+ def make_detail_get
125
125
  layout = main_layout( left: sidenav, center: detail_table )
126
126
  @request.env['rack.session'][@target] = @target_id
127
- layout[:event] = "on=load:branch=set_global@target=#{@target_id}"
127
+ layout[:event] = "on=load:command=set_global@target=#{@target_id}"
128
128
  Materialize.convert(layout)
129
129
  end
130
130
 
131
131
  def public_detail_post
132
- mylog "public_detail_post: #{@request.params.inspect}: #{@json}"
133
- if @json[:global]
134
- @target_id ||= @json[:global][@target]
132
+ mylog "public_detail_post: #{@request.params.inspect}: #{@parsed_body}"
133
+ if @parsed_body[:global]
134
+ @target_id ||= @parsed_body[:global][@target]
135
135
  end
136
136
  @column_set.set_from_db(@target_id)
137
137
  case @event[:branch]
@@ -0,0 +1,34 @@
1
+ require "mail"
2
+
3
+ module Ezframe
4
+ class Email
5
+ class << self
6
+ def receive
7
+
8
+ end
9
+
10
+ # options =
11
+ # :address => "smtp.server.host",
12
+ # :port => 1025,
13
+ # :user_name => login user,
14
+ # :password => login password,
15
+ # :authentication => 'plain',
16
+ # :ssl => true,
17
+ def setup_smtp(options)
18
+ Mail.defaults do
19
+ delivery_method :smtp, options
20
+ end
21
+ end
22
+
23
+ def send(data)
24
+ mail = Mail.new do
25
+ from data[:mail_from]
26
+ to data[:mail_to]
27
+ subject data[:subject]
28
+ body data[:body]
29
+ end
30
+ mail.deliver!
31
+ end
32
+ end
33
+ end
34
+ end
data/lib/ezframe/ht.rb CHANGED
@@ -57,6 +57,7 @@ module Ezframe
57
57
  alias_method :footer, :wrap_tag
58
58
 
59
59
  alias_method :small, :wrap_tag
60
+ alias_method :pre, :wrap_tag
60
61
 
61
62
  alias_method :checkbox, :wrap_tag
62
63
  alias_method :radio, :wrap_tag
@@ -88,6 +89,25 @@ module Ezframe
88
89
  end
89
90
  return child
90
91
  end
92
+
93
+ def small_text(text)
94
+ return small(class: %w[teal-text], child: text)
95
+ end
96
+
97
+ def search(ht_h, opts)
98
+ @found ||= []
99
+ if ht_h.is_a?(Hash)
100
+ if opts[:tag] && ht_h[:tag] && ht_h[:tag] == opts[:tag]
101
+ @found.push(ht_h)
102
+ end
103
+ if ht_h[:child]
104
+ search(ht_h[:child], opts)
105
+ end
106
+ elsif ht_h.is_a?(Array)
107
+ ht_h.map { |h| search(h, opts) }
108
+ end
109
+ return @found
110
+ end
91
111
  end
92
112
 
93
113
  # 配列を<UL><OL>要素に変換するためのクラス
data/lib/ezframe/html.rb CHANGED
@@ -4,6 +4,7 @@ module Ezframe
4
4
  class Html
5
5
  class << self
6
6
  def convert(ht_h = {})
7
+ ht_h = hook_for_convert(ht_h)
7
8
  return "" if ht_h.nil? || ht_h.to_s.empty?
8
9
  return ht_h.to_html if ht_h.respond_to?(:to_html)
9
10
  return ht_h.to_s if ht_h.is_a?(String) || ht_h.is_a?(Symbol) || ht_h.is_a?(Integer) || ht_h.is_a?(Time)
@@ -14,15 +15,16 @@ module Ezframe
14
15
  when "input"
15
16
  input(ht_h)
16
17
  when "select"
17
- return select(ht_h) if ht_h[:items]
18
+ return select(ht_h) if ht_h[:item]
18
19
  when "icon"
19
20
  tag = "i"
20
21
  end
22
+ tag = ht_h[:tag]
21
23
  opt_s, child_s = join_attributes(ht_h)
22
- if child_s.length >= 0
24
+ if !child_s.strip.empty? || %w[div span table tr td th textarea].include?(tag)
23
25
  return "<#{ht_h[:tag]} #{opt_s}>\n#{child_s}\n</#{ht_h[:tag]}>\n"
24
26
  end
25
- "<#{ht_h[:tag]} #{opt_s}/>"
27
+ "<#{ht_h[:tag]} #{opt_s} />"
26
28
  end
27
29
 
28
30
  def join_attributes(attrs)
@@ -56,53 +58,59 @@ module Ezframe
56
58
  if size && (size.index("x") || size.index("*"))
57
59
  if /(\d+)\s*[x\*]\s*(\d+)/ =~ size
58
60
  ht_h[:cols], ht_h[:rows] = $1, $2
61
+ ht_h.delete(:size)
59
62
  end
60
63
  ht_h[:tag] = "textarea"
61
64
  ht_h[:child] = ht_h[:value]
62
65
  ht_h.delete(:value)
63
- p ht_h
64
66
  end
65
67
  end
66
68
 
67
69
  def select(ht_h = {})
68
70
  attr = ht_h.clone
69
- items = attr[:items]
70
- # puts "Html.select: #{items}"
71
- if items.is_a?(Hash)
72
- option_a = ht_h[:items].map do |k, v|
71
+ item = attr[:item]
72
+ # puts "Html.select: #{item}"
73
+ if item.is_a?(Hash)
74
+ option_a = ht_h[:item].map do |k, v|
73
75
  h = { tag: "option", value: k }
74
76
  if v.is_a?(Array)
75
77
  v, selected = v
76
78
  h[:selected] = "selected" if selected
77
79
  end
78
80
  h[:child] = v
79
- if ht_h[:default] && ht_h[:default] == v
81
+ # mylog "select: hash: k=#{k}, v=#{v}, value=#{ht_h[:value]}"
82
+ if ht_h[:value] && ht_h[:value].to_s == k.to_s
80
83
  h[:selected] = "selected"
81
84
  end
82
85
  h
83
86
  end
84
- elsif items.is_a?(Array)
85
- option_a = items.map do |v|
87
+ elsif item.is_a?(Array)
88
+ option_a = item.map do |v|
86
89
  h = { tag: "option", value: v[0], child: v[1] }
87
90
  if %w[selected default].include?(v[2])
88
91
  h[:selected] = "selected"
89
92
  end
90
- if ht_h[:default] && ht_h[:default] == v
93
+ # mylog "select: array: v=#{v}, value=#{ht_h[:value]}"
94
+ if ht_h[:value] && ht_h[:value].to_s == v[0].to_s
91
95
  h[:selected] = "selected"
92
96
  end
93
97
  # puts h.inspect
94
98
  h
95
99
  end
96
100
  else
97
- warn "unknown items: #{ht_h.inspect}"
101
+ warn "unknown item: #{ht_h.inspect}"
98
102
  end
99
103
  attr[:tag] = "select"
100
104
  attr[:child] = option_a
101
105
  attr[:name] ||= attr[:key]
102
106
  attr[:final] = true
103
- attr.delete(:items)
107
+ attr.delete(:item)
104
108
  Html.convert(attr)
105
109
  end
110
+
111
+ def hook_for_convert(ht_h)
112
+ return ht_h
113
+ end
106
114
  end
107
115
  end
108
116
  end
@@ -36,5 +36,10 @@ class Japanese
36
36
  return nil if !str
37
37
  return str.tr("ぁ-ん\-ー―−", "ァ-ン\-ー―−")
38
38
  end
39
+
40
+ def to_wday(wday)
41
+ return nil unless wday
42
+ return %w(日 月 火 水 木 金 土)[wday]
43
+ end
39
44
  end
40
45
  end
@@ -3,9 +3,9 @@
3
3
  if File.exist?("pages/common.rb")
4
4
  require "#{Dir.pwd}/pages/common.rb"
5
5
  end
6
- Dir["models/*.rb"].each do |file|
6
+ Dir["models/*.rb"].sort.each do |file|
7
7
  require "#{Dir.pwd}/#{file}"
8
8
  end
9
- Dir["pages/*.rb"].each do |file|
9
+ Dir["pages/*.rb"].sort.each do |file|
10
10
  require "#{Dir.pwd}/#{file}"
11
11
  end
@@ -4,7 +4,6 @@ module Ezframe
4
4
  class Materialize
5
5
  class << self
6
6
  def into_html_header
7
-
8
7
  css_a = Config[:extra_css_list].map {|file| "<link href=\"#{file}\" rel=\"stylesheet\">\n" }
9
8
  js_a = Config[:extra_js_list].map {|file| "<script src=\"#{file}\"></script>\n" }
10
9
 
@@ -27,11 +26,11 @@ module Ezframe
27
26
 
28
27
  def convert(ht_h)
29
28
  return nil unless ht_h
30
- return ht_h if (ht_h.kind_of?(Hash) && ht_h[:final])
29
+ return ht_h if (ht_h.is_a?(Hash) && ht_h[:final])
31
30
  new_h = ht_h.clone
32
- if ht_h.kind_of?(Array)
31
+ if ht_h.is_a?(Array)
33
32
  new_h = ht_h.map { |v| convert(v) }
34
- elsif ht_h.kind_of?(Hash)
33
+ elsif ht_h.is_a?(Hash)
35
34
  unless ht_h[:tag]
36
35
  mylog("convert: no tag: #{ht_h.inspect}")
37
36
  return nil
@@ -0,0 +1,46 @@
1
+ module Ezframe
2
+ class Message
3
+ class << self
4
+ def init
5
+ load_yaml_files
6
+ end
7
+
8
+ def load_yaml_files(dir = "./message")
9
+ unless @catalog
10
+ @catalog = {}
11
+ Dir["#{dir}/*.yml"].each do |file|
12
+ load_one_file(file)
13
+ end
14
+ end
15
+ end
16
+
17
+ def load_one_file(file)
18
+ begin
19
+ yaml = YAML.load_file(file)
20
+ rescue
21
+ mylog("YAML load error: #{file}")
22
+ return
23
+ end
24
+ if /([a-z]{2})\.yml$/ =~ file
25
+ lang = $1
26
+ @catalog[lang.to_sym] = yaml.recursively_symbolize_keys
27
+ end
28
+ end
29
+
30
+ def languages
31
+ return @catalog.keys
32
+ end
33
+
34
+ def get(key, lang = nil)
35
+ lang = languages[0] unless lang
36
+ messages = @catalog[lang]
37
+ return messages[key.to_sym] if messages
38
+ return nil
39
+ end
40
+
41
+ def [](key)
42
+ return get(key)
43
+ end
44
+ end
45
+ end
46
+ end
data/lib/ezframe/model.rb CHANGED
@@ -30,7 +30,6 @@ module Ezframe
30
30
  def initialize(column_sets, db)
31
31
  @column_sets, @db = column_sets, db
32
32
  @column_sets.model = self
33
- # @column_sets.each {|name, colset| colset.model = self }
34
33
  end
35
34
 
36
35
  def create_tables
@@ -2,82 +2,69 @@
2
2
 
3
3
  require "json"
4
4
  require "uri"
5
-
6
5
  require_relative "util"
7
6
 
8
7
  module Ezframe
9
8
  class PageBase
10
- class << self
11
- def decide_route(path_info)
12
- default_class = Config[:default_page_class]||"App"
13
- default_method = Config[:default_page_method]||"default"
14
- path_parts = path_info.split('/').drop(1)
15
- case path_parts.length
16
- when 0
17
- [get_class(default_class), default_method]
18
- when 1
19
- filename = path_parts[0]
20
- if filename.index(".")
21
- return nil
22
- end
23
- klass = get_class(path_parts)
24
- if klass
25
- return [klass, default_method]
26
- else
27
- return [get_class(default_class), path_parts[0]]
28
- end
29
- else
30
- klass = get_class(path_parts)
31
- if klass
32
- [klass, default_method]
33
- else
34
- method = path_parts.pop
35
- klass = get_class(path_parts)
36
- [klass, method]
37
- end
38
- end
39
- end
9
+ attr_accessor :auth, :request
40
10
 
41
- def get_class(keys)
42
- keys = [keys] if keys.is_a?(String)
43
- klass = (%w[Ezframe] + keys.map { |k| k.to_camel }).join("::")
44
- mylog "get_class: #{klass}"
45
- if Object.const_defined?(klass)
46
- return Object.const_get(klass)
47
- end
48
- return nil
49
- end
11
+ def initialize(request = nil)
12
+ @class_snake = class_to_snake(self.class)
13
+ # puts "class_snake = #{@class_snake}"
14
+ set_request(request) if request
15
+ init_vars
50
16
  end
51
17
 
52
- attr_accessor :auth
18
+ def init_vars
19
+ end
53
20
 
54
- def initialize(request = nil, model = nil)
55
- @model = model if model
56
- if request
57
- @request = request
58
- @params = parse_query_string(request.env["QUERY_STRING"])
59
- @params.update(request.params)
60
- mylog "params=#{@params.inspect}" if @params.length > 0
61
- @id, @key = @params[:id], @params[:key]
62
- @env = @request.env
63
- @session = @env["rack.session"]
64
- mylog "session = #{@session.inspect}"
65
- if request.post?
66
- parse_json_body
67
- mylog "json=#{@json.inspect}"
21
+ # Rackのrequestを代入し、関連するインスタンス変数を定義
22
+ def set_request(request)
23
+ @request = request
24
+ @model = request.env["model"]
25
+ mylog "[WARN] model is not defined" unless @model
26
+ @column_set = @model.column_sets[@class_snake.to_sym]
27
+ # mylog "[WARN] column_set is not defined: #{@class_snake}" unless @column_set
28
+ if @column_set
29
+ @dataset = @column_set.dataset
30
+ end
31
+ @params = parse_query_string(request.env["QUERY_STRING"])
32
+ @params.update(request.params)
33
+ mylog "params=#{@params.inspect}" if @params.length > 0
34
+ # @id, @key = @params[:id], @params[:key]
35
+ @env = @request.env
36
+ @session = @env["rack.session"]
37
+ # mylog "session = #{@session.inspect}"
38
+ if %w[POST PUT].include?(request.request_method)
39
+ body = @request.body.read
40
+ if request.content_type.index("json")
41
+ @parsed_body = parse_json_body(body)
42
+ else
43
+ @parsed_body = parse_query_string(body)
68
44
  end
45
+ # mylog "parsed_body=#{@parsed_body.inspect}"
46
+ @event = @parsed_body[:event] || {}
69
47
  end
70
- @auth = nil
71
48
  end
72
49
 
73
- def parse_query_string(str)
74
- query_a = URI::decode_www_form(str)
75
- res_h = {}
76
- query_a.map { |a| res_h[a[0].to_sym] = a[1] }
77
- res_h
50
+ # routeから基本URLを生成
51
+ def make_base_url(id = nil)
52
+ path = Route::get_path(@class_snake)
53
+ params = @request.env["url_params"]
54
+ # params[@class_snake.to_sym] = id
55
+ path_s = path.map do |pa|
56
+ if pa == @class_snake.to_sym && id
57
+ "#{pa}/#{id}"
58
+ elsif params[p]
59
+ "#{pa}/#{params[p]}"
60
+ else
61
+ pa
62
+ end
63
+ end.join("/")
64
+ return "/#{path_s}"
78
65
  end
79
66
 
80
- def common_page(opts = {})
67
+ def show_base_template(opts = {})
81
68
  args = {
82
69
  title: opts[:title],
83
70
  body: opts[:body],
@@ -87,17 +74,16 @@ module Ezframe
87
74
  Template.fill("template/base.html", args)
88
75
  end
89
76
 
90
- def parse_json_body
91
- body = @request.body.read
77
+ def parse_json_body(body)
92
78
  return {} if !body || body.length==0
93
79
  begin
94
- @json = JSON.parse(body)
80
+ json = JSON.parse(body)
95
81
  rescue => e
96
82
  mylog "ERROR: #{e.class}:#{e.message}\n#{e.backtrace}"
97
83
  return nil
98
84
  end
99
- @json = @json.recursively_symbolize_keys if @json.is_a?(Hash) || @json.is_a?(Array)
100
- return @json
85
+ json = json.recursively_symbolize_keys if json.is_a?(Hash) || json.is_a?(Array)
86
+ return json
101
87
  end
102
88
 
103
89
  def warden