| // Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| /// Bindings for the @sendgrid/mail module. |
| @JS() |
| library github_label_notifier.sendgrid; |
| |
| import 'package:js/js.dart'; |
| import 'package:js/js_util.dart'; |
| import 'package:node_interop/node.dart'; |
| import 'package:node_interop/util.dart'; |
| import 'package:node_io/node_io.dart'; |
| |
| final _SendgridModule _sendgrid = (() { |
| // Load and configure the module. |
| final module = require('@sendgrid/mail') as _SendgridModule; |
| module.setApiKey(Platform.environment['SENDGRID_SECRET']); |
| |
| // To enable offline testing we redirect all requests to our mock server. |
| final mockServer = Platform.environment['SENDGRID_MOCK_SERVER']; |
| if (mockServer != null) { |
| module.client.setDefaultRequest('baseUrl', 'http://$mockServer'); |
| } |
| |
| return module; |
| })(); |
| |
| /// Send the mail with the given [from], [subject], [text] and [html] content |
| /// to all recepients listed in [to]. |
| /// |
| /// Note: individual recepients would be unaware about other recepients. |
| Future<void> sendMultiple( |
| {List<String> to, String from, String subject, String text, String html}) { |
| return promiseToFuture(_sendgrid.sendMultiple(jsify({ |
| 'to': to, |
| 'from': from, |
| 'subject': subject, |
| 'text': text, |
| 'html': html, |
| }))); |
| } |
| |
| @JS() |
| @anonymous |
| abstract class _SendgridModule { |
| external void setApiKey(String key); |
| external _Client get client; |
| external Promise sendMultiple(Object data); |
| } |
| |
| @JS() |
| @anonymous |
| abstract class _Client { |
| external void setDefaultRequest(String key, String value); |
| } |