@@ -38,17 +38,30 @@ def build_create_payload(subject:, html:, options:)
3838 payload = { subject : subject , html : html }
3939 append_optional_field ( payload , :apps , options )
4040 append_optional_field ( payload , :webhook_url , options )
41- append_optional_field ( payload , :mode , options )
42- payload . merge ( options . except ( :apps , :webhook_url , :mode ) )
41+ payload . merge ( options . except ( :apps , :webhook_url ) )
4342 end
4443 private_class_method :build_create_payload
4544
4645 def append_optional_field ( payload , key , options )
4746 return unless options . key? ( key )
4847 return if options [ key ] . nil?
4948
50- payload [ key ] = options [ key ]
49+ payload [ key ] = key == :apps ? normalize_apps ( options [ key ] ) : options [ key ]
5150 end
5251 private_class_method :append_optional_field
52+
53+ def normalize_apps ( apps )
54+ raise ArgumentError , "apps must be a hash of app keys to mode arrays" unless apps . is_a? ( Hash )
55+
56+ apps . each_with_object ( { } ) do |( app , modes ) , normalized |
57+ normalized [ app . to_s ] = normalize_modes ( modes )
58+ end
59+ end
60+ private_class_method :normalize_apps
61+
62+ def normalize_modes ( modes )
63+ Array ( modes ) . map ( &:to_s )
64+ end
65+ private_class_method :normalize_modes
5366 end
5467end
0 commit comments