import Codex.KinoHelpers{:ok, pid} = Entrace.start_link()| defmodule Ex.S3.Auth do | |
| def put_aws_sigv4(request) do | |
| if s3_options = request.options[:s3] do | |
| s3_options = | |
| s3_options | |
| |> Keyword.put_new(:region, "us-east-1") | |
| |> Keyword.put_new(:datetime, DateTime.utc_now()) | |
| # aws_credentials returns this key so let's ignore it | |
| |> Keyword.drop([:credential_provider, :bucket, :endpoint]) | |
| |> Keyword.put(:service, :s3) |
| defmodule MyApp.Billing.StripeClient do | |
| def new(opts \\ []) do | |
| Req.new( | |
| base_url: "https://api.stripe.com/v1", | |
| auth: {:bearer, Application.fetch_env!(:my_app, MyApp.Billing)[:stripe_secret_key]} | |
| ) | |
| |> Req.merge(opts) | |
| |> Req.Request.prepend_request_steps(encode_stripe_post: &encode_stripe_post/1) | |
| end |
| import 'package:flutter/gestures.dart'; | |
| import 'package:flutter/rendering.dart'; | |
| import 'package:flutter/widgets.dart'; | |
| typedef TapOutsideCallback = void Function(BoxHitTestResult hitTestResult); | |
| /// Allows widgets to detect when tapping outside of the bounds of the widget. | |
| /// | |
| /// A common use case is allowing [TextField]s and other widgets to give up | |
| /// their focus when someone taps outside of them. |
| import 'package:flutter/foundation.dart'; | |
| import 'package:flutter/services.dart'; | |
| import 'package:flutter/widgets.dart'; | |
| /// This class smooths over the platform differences for a RawKeyEvent, | |
| /// encapsulates some workarounds for Flutter keyboard handling bugs, | |
| /// and makes it easier to match up [LogicalKeyEvent] to a keyboard shortcut | |
| /// combo. | |
| /// | |
| /// It accounts for edge cases & bugs such as: |
| void main() { | |
| final lst1 = ["t1" , "t2" , "t3" , "t4"]; | |
| final lst2 = ["t2" , "t4" , "t5"]; | |
| final diff = lst1.whereNotIn(lst2).toList(); | |
| print(diff); | |
| } | |
| extension WhereNotInExt<T> on Iterable<T> { | |
| Iterable<T> whereNotIn(Iterable<T> reject) { | |
| final rejectSet = reject.toSet(); |
| import 'dart:io'; | |
| import 'package:file/local.dart'; | |
| import 'package:glob/glob.dart'; | |
| import 'package:path/path.dart' as path; | |
| void main(List<String> args) async { | |
| assert(args.length == 1); | |
| await updateRelativeImportsInPackage(args[0]); | |
| } |
| import 'package:flutter/widgets.dart'; | |
| class SeparatedRow extends StatelessWidget { | |
| const SeparatedRow({ | |
| @required this.separator, | |
| @required this.children, | |
| this.mainAxisAlignment = MainAxisAlignment.start, | |
| this.mainAxisSize = MainAxisSize.max, | |
| this.crossAxisAlignment = CrossAxisAlignment.center, | |
| }) : assert(separator != null), |
| import 'package:flutter/widgets.dart'; | |
| import 'package:flutter_hooks/flutter_hooks.dart'; | |
| // adapted from https://stackoverflow.com/a/54173729/67655 | |
| class ExpandableSection extends HookWidget { | |
| const ExpandableSection({ | |
| Key key, | |
| this.expanded = false, | |
| this.child, |
| import 'package:flutter/widgets.dart'; | |
| // original credit to https://medium.com/swlh/flutter-line-metrics-fd98ab180a64 | |
| class LineMetricsDebug extends StatelessWidget { | |
| LineMetricsDebug({ | |
| this.text, | |
| this.style, | |
| this.width, | |
| this.height, |