class Kintone::Client::Middleware::Record
Public Class Methods
new(app, options = {})
click to toggle source
Calls superclass method
# File lib/kintone/client/middleware/record.rb, line 3 def initialize(app, options = {}) super(app) @options = options end
Public Instance Methods
call(env)
click to toggle source
# File lib/kintone/client/middleware/record.rb, line 8 def call(env) match_content_type(env) do env[:body] = expand_body(env[:body]) end @app.call env end
Private Instance Methods
expand_body(body)
click to toggle source
# File lib/kintone/client/middleware/record.rb, line 31 def expand_body(body) body = JSON.parse(body) if body['record'] body['record'] = expand_record(body['record']) elsif body['requests'] if_has_record(body['requests']) do |request| record = request['payload']['record'] next unless record request['payload']['record'] = expand_record(record) end end JSON.dump(body) end
expand_record(record)
click to toggle source
# File lib/kintone/client/middleware/record.rb, line 47 def expand_record(record) expanded = {} record.each do |key, value| case value when Array, Hash expanded[key] = value else expanded[key] = { 'value' => value.to_s } end end expanded end
if_has_record(requests) { |request| ... }
click to toggle source
# File lib/kintone/client/middleware/record.rb, line 64 def if_has_record(requests) if requests[0]['payload']['record'] requests.each do |request| yield(request) end end rescue # nothing to do end
match_content_type(env) { || ... }
click to toggle source
# File lib/kintone/client/middleware/record.rb, line 18 def match_content_type(env) content_type = env[:request_headers]['Content-Type'] return unless content_type content_type = content_type.split(';').first.strip opt_content_type = @options[:content_type] || /.*/ if env[:body] and opt_content_type =~ content_type yield end end