
+post '/send_mail_yaml' do + data = YAML.safe_load request.body.read + raise TypeError, data, 'request data type error' unless data.class.eql? Hash
date.is_a?(Hash)
data, parsed from json/yaml string,
unless data.class.eql? Hash can change to date.is_a?(Hash)? Thanks, Shenwei
it's type is hash.
+ + mail_info = { + 'references' => data['references'], + 'subject' => data['subject'], + 'to' => data['to'], + 'body' => data['body'] + } + check_send_mail(mail_info) +end + +post '/send_mail_text' do
i feel post '/send_mail_yaml' and post '/send_mail_text' high similarity, can't merge it?
They are different data format, send_mail_yaml: hash send_mail_text: mail_file_content
I merged yaml/json if merge send_mail_yaml/send_mail_text it will need much judgement and make it complex.
+ data = Mail.read_from_string(request.body.read) + + mail_info = { + 'references' => data.references, + 'subject' => data.subject, + 'to' => data.to, + 'body' => data.body.decoded + } + check_send_mail(mail_info) +end + +def check_send_mail(mail_info) + mail_info['from'] = ENV['ROBOT_EMAIL_ADDRESS'] + + raise 'no subject.' if mail_info['subject'].nil? + raise 'no email address.' if mail_info['to'].nil? + raise 'no email content.' if mail_info['body'].nil? + + send_mail(mail_info) +end
hwo about check_send_mail return true or false
how
if check_send_mail; then send_mail fi
when there is nil value for subject/to/body, I need to raise error, If use return true/false, I will get nothing form the log
based on the inspiration you suggested, maybe def send_mail(mail_info) check_send_mail(mail_info) mail = ... is a good choice.
Thanks Luan Shengde
Thanks, Shenwei
+ +def send_mail(mail_info) + mail = Mail.new do + references mail_info['references'] + from mail_info['from'] + subject mail_info['subject'] + to mail_info['to'] + body mail_info['body'] + end + mail.deliver! +end -- 2.23.0