mail-relayer 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 91d61c76888e98c510ebc89367ae2308c81e9a0d86deb435cab7a002a25d84ec
4
- data.tar.gz: e79c169436b9963319b16e4e8a19fc0d3814ec6c9ec143479f8ec8478bfcdf18
3
+ metadata.gz: a7000ec5bbfcc9779972081b7508bee5768abd044ccf812d39529f4745a26adb
4
+ data.tar.gz: deeca4cc2f1bb7248f0a936b93547e1f6f2bc1ea4c09138d485a03cec0dfde2c
5
5
  SHA512:
6
- metadata.gz: 3a6bc66b94878889ff49562ecc255dbc1c228bd0a55a332a4810351d66c41033858ccc398e601e5185a10ca5b2b3d05a0c448294d819521f1e5566704c5eec1f
7
- data.tar.gz: 48fe0a136889b42396f79205d3673adb8d0fb0064b8d09f85f8ffb2f0aea14137f153aa67c4193f457493a58b76d521b2a713a3d93b7a5a62fb0ab6881e79c71
6
+ metadata.gz: 1537b9b92e2a48cce91677b8b17355c96f8ed2ea83d858db462c32140fa3f7fff818b1077980192ea8e6c1c3e18467e2494af0a502efa56224d22ff17a9c5cba
7
+ data.tar.gz: 67f2dc3fb60869a1cbd3623b253ffddcba5f62b5ef4c4e8a3125b857d4db10229fd451aa397791b91112e22a7f2a2dab6c10542f3996636f336beb57c939a77f
@@ -1,10 +1,18 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v0.2.1 - Dec 20, 2019
4
+
5
+ Re-release v0.2.0 as v0.2.1.
6
+
7
+ ## v0.2.0 - Dec 19, 2019
8
+
9
+ Adds option parsing to `mail-relayer` executable.
10
+
3
11
  ## v0.1.0 - Dec 19, 2019
4
12
 
5
13
  Adds executable `mail-relayer` for CLI usage.
6
14
 
7
- ## v0.0.1 - Dec 18, 2019
15
+ ## v0.0.1 - Dec 17, 2019
8
16
 
9
17
  Initial release.
10
18
 
data/README.md CHANGED
@@ -2,6 +2,20 @@
2
2
 
3
3
  This project is an attempt to simplify relaying incoming emails, e.g. to ActionMailbox.
4
4
 
5
+ ## Usage
6
+
7
+ 1. `gem install mail-relayer`
8
+
9
+ 2. Then pipe the email content from `STDIN` to `mail-relayer` executable. You need to specify the target URL and password (HTTP Basic Auth) either via command line arguments or via environment variables.
10
+
11
+ 3. Profit
12
+
13
+ ### Configuration
14
+
15
+ - target URL: `--url` or `MAIL_RELAYER_URL`
16
+ - ingress username: `--ingress-username` or `MAIL_RELAYER_INGRESS_USERNAME` (optional, default: `mail_relayer`)
17
+ - ingress password: `--ingress-password` or `MAIL_RELAYER_INGRESS_PASSWORD`
18
+
5
19
  ## Development
6
20
 
7
21
  1. Install ruby - see `.ruby-version`
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.1
@@ -2,19 +2,39 @@
2
2
 
3
3
  # frozen_string_literal: true
4
4
 
5
- require "mail-relayer"
5
+ require "optparse"
6
6
 
7
- # postfix implementation
8
- url, password = ENV.values_at("URL", "INGRESS_PASSWORD")
7
+ require "mail_relayer"
9
8
 
10
- unless url && password
11
- print "4.3.5 URL and INGRESS_PASSWORD are required"
9
+ options = {
10
+ url: ENV["MAIL_RELAYER_URL"],
11
+ username: ENV["MAIL_RELAYER_INGRESS_USERNAME"],
12
+ password: ENV["MAIL_RELAYER_INGRESS_PASSWORD"]
13
+ }
14
+
15
+ OptionParser.new do |opts|
16
+ opts.on("--url URL") do |url|
17
+ options[:url] = url
18
+ end
19
+ opts.on("--ingress-username INGRESS_USERNAME") do |user|
20
+ options[:username] = user
21
+ end
22
+ opts.on("--ingress-password INGRESS_PASSWORD") do |password|
23
+ options[:password] = password
24
+ end
25
+ opts.on("-v", "--version") do
26
+ puts "mail-relayer v#{Mail::Relayer::VERSION}"
27
+ exit 0
28
+ end
29
+ end.parse!
30
+
31
+ unless options[:url] && options[:password]
32
+ puts "4.3.5 URL and INGRESS_PASSWORD are required"
12
33
  exit 1
13
34
  end
14
35
 
15
- Mail::Relayer.new(url: url, password: password)
16
- .relay(STDIN.read)
17
- .tap do |result|
18
- print "#{result.status_code} #{result.message}"
19
- exit result.success?
20
- end
36
+ relayer = Mail::Relayer.new(**options.compact)
37
+ result = relayer.relay(STDIN.read)
38
+
39
+ puts "#{result.status_code} #{result.message}"
40
+ exit result.success?
@@ -6,7 +6,7 @@ require "uri"
6
6
 
7
7
  module Mail
8
8
  class Relayer
9
- class Result < Struct.new(:status_code, :message)
9
+ class Result < Struct.new(:status_code, :message) # rubocop:disable Style/StructInheritance
10
10
  def success?
11
11
  !failure?
12
12
  end
@@ -32,7 +32,9 @@ module Mail
32
32
  attr_reader :uri, :username, :password
33
33
 
34
34
  def initialize(url:, username: "mail_relayer", password:)
35
- @uri, @username, @password = URI(url), username, password
35
+ @uri = URI(url)
36
+ @username = username
37
+ @password = password
36
38
  end
37
39
 
38
40
  def relay(source)
@@ -48,7 +50,7 @@ module Mail
48
50
  Result.new "4.4.2", "Network error relaying to ingress: #{error.message}"
49
51
  rescue Timeout::Error
50
52
  Result.new "4.4.2", "Timed out relaying to ingress"
51
- rescue => error
53
+ rescue => error # rubocop:disable Style/RescueStandardError
52
54
  Result.new "4.0.0", "Error relaying to ingress: #{error.message}"
53
55
  end
54
56
 
@@ -56,9 +58,9 @@ module Mail
56
58
 
57
59
  def post(source)
58
60
  client.post uri, source,
59
- "Content-Type" => CONTENT_TYPE,
60
- "User-Agent" => USER_AGENT,
61
- "Authorization" => "Basic #{Base64.strict_encode64(username + ":" + password)}"
61
+ "Content-Type" => CONTENT_TYPE,
62
+ "User-Agent" => USER_AGENT,
63
+ "Authorization" => "Basic #{Base64.strict_encode64(username + ':' + password)}"
62
64
  end
63
65
 
64
66
  def client
File without changes
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mail-relayer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Axel Gustav
@@ -14,16 +14,16 @@ dependencies:
14
14
  name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1'
19
+ version: '13.0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1'
26
+ version: '13.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rubocop
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -78,9 +78,9 @@ files:
78
78
  - README.md
79
79
  - VERSION
80
80
  - bin/mail-relayer
81
- - lib/mail-relayer.rb
82
81
  - lib/mail/relayer.rb
83
- homepage: https://rubygems.org/gems/mail-relayer
82
+ - lib/mail_relayer.rb
83
+ homepage: https://gitlab.com/axelthegerman/mail-relayer
84
84
  licenses:
85
85
  - MIT
86
86
  metadata: {}