Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions .rubocop.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
AllCops:
TargetRubyVersion: 3.0


Metrics/AbcSize:
Max: 26

Metrics/BlockLength:
Exclude:
- "spec/**/*"

Metrics/MethodLength:
Max: 20

Style/Documentation:
Exclude:
- 'lib/mailcat.rb'
- "lib/mailcat.rb"

Style/StringLiterals:
Enabled: true
Expand Down
2 changes: 1 addition & 1 deletion Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
PATH
remote: .
specs:
mailcat (0.1.1)
mailcat (0.1.2)
activesupport (>= 6.0.0)

GEM
Expand Down
12 changes: 10 additions & 2 deletions lib/mailcat.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,14 @@ class Error < StandardError; end

include ::ActiveSupport::Configurable

config_accessor :mailcat_api_key, default: ENV["MAILCAT_API_KEY"]
config_accessor :mailcat_url, default: ENV["MAILCAT_URL"]
config_accessor :mailcat_api_key, default: -> { ENV["MAILCAT_API_KEY"] }
config_accessor :mailcat_url, default: -> { ENV["MAILCAT_URL"] }

def self.mailcat_api_key_raw
config.mailcat_api_key.is_a?(Proc) ? config.mailcat_api_key.call : config.mailcat_api_key
end

def self.mailcat_url_raw
config.mailcat_url.is_a?(Proc) ? config.mailcat_url.call : config.mailcat_url
end
end
8 changes: 4 additions & 4 deletions lib/mailcat/delivery_method.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ def send_to_mailcat(mail)
Net::HTTP.start(emails_uri.hostname, emails_uri.port, use_ssl: emails_uri.scheme == "https") do |http|
req = Net::HTTP::Post.new(emails_uri)
req["Content-Type"] = "application/json"
req["X-Api-Key"] = Mailcat.config.mailcat_api_key
req["X-Api-Key"] = Mailcat.mailcat_api_key_raw
email_body = {
from: mail.from.first,
to: mail.to,
Expand Down Expand Up @@ -62,7 +62,7 @@ def upload_attachment(attachment)

req = Net::HTTP::Post.new(direct_uploads_uri)
req["Content-Type"] = "application/json"
req["X-Api-Key"] = Mailcat.config.mailcat_api_key
req["X-Api-Key"] = Mailcat.mailcat_api_key_raw
req.body = {
blob: {
filename: attachment.filename,
Expand All @@ -82,11 +82,11 @@ def upload_attachment(attachment)
end

def emails_uri
@emails_uri ||= URI("#{Mailcat.config.mailcat_url}/api/emails")
@emails_uri ||= URI("#{Mailcat.mailcat_url_raw}/api/emails")
end

def direct_uploads_uri
@direct_uploads_uri ||= URI("#{Mailcat.config.mailcat_url}/api/direct_uploads")
@direct_uploads_uri ||= URI("#{Mailcat.mailcat_url_raw}/api/direct_uploads")
end

def attachment_tempfile(attachment)
Expand Down
2 changes: 1 addition & 1 deletion lib/mailcat/version.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# frozen_string_literal: true

module Mailcat
VERSION = "0.1.1"
VERSION = "0.1.2"
end
30 changes: 30 additions & 0 deletions spec/mailcat_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,34 @@
it "has a version number" do
expect(Mailcat::VERSION).not_to be nil
end

describe "environment variable loader" do
context "when using the default environment variables" do
before do
stub_const("ENV", ENV.to_h.merge(
"MAILCAT_API_KEY" => "spec_key",
"MAILCAT_URL" => "https://spec-url.com"
))
end

it "uses ENV defaults if not explicitly set" do
expect(Mailcat.mailcat_api_key_raw).to eq("spec_key")
expect(Mailcat.mailcat_url_raw).to eq("https://spec-url.com")
end
end

context "when explicitly set" do
before do
described_class.configure do |config|
config.mailcat_api_key = "explicit_key"
config.mailcat_url = "https://explicit-url.com"
end
end

it "uses explicitly set values" do
expect(Mailcat.mailcat_api_key_raw).to eq("explicit_key")
expect(Mailcat.mailcat_url_raw).to eq("https://explicit-url.com")
end
end
end
end