ctt 0.0.0 → 0.0.3
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 +4 -4
- data/bin/ctt +13 -0
- data/lib/ctt/ses.rb +39 -0
- data/lib/ctt/version.rb +5 -0
- data/lib/ctt.rb +25 -0
- data/lib/mjml/parser.rb +48 -0
- data/lib/mjml.rb +50 -0
- metadata +39 -5
- data/lib/NAME.rb +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7dd20f9c479f208bf3f3e446c86089e9fc8d0128cc0cf5c696ac731c09a3d4c6
|
4
|
+
data.tar.gz: 49a3c5ec7c51881efec7b43a1013ef98588358003a20442dd3b2e0b794dfb49c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 92ebda73abd79f133d95b3d1b527e5b601050b73fd0eda4752ec27bae6e33e383ce2027f9706ca132dcbe3c5b11c36f22f38ca640ec5dd31a1103b27b2fd55ba
|
7
|
+
data.tar.gz: 0a0d64b082f61dad93a425dd03de0065700a38cc5e98a95cf3c801b34f4f4a8f1945089738d4007d0336956eb4fbd07ffbf8a7a2ecdfa581974a75ec95ea2447
|
data/bin/ctt
ADDED
data/lib/ctt/ses.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'aws-sdk-ses'
|
2
|
+
require 'dotenv'
|
3
|
+
Dotenv.load
|
4
|
+
|
5
|
+
module CTT
|
6
|
+
class SES
|
7
|
+
def initialize()
|
8
|
+
@client = Aws::SES::Client.new(
|
9
|
+
access_key_id: ENV['AWS_ACCESS_KEY_ID'],
|
10
|
+
secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
|
11
|
+
region: ENV['AWS_REGION']
|
12
|
+
)
|
13
|
+
end
|
14
|
+
|
15
|
+
def call(template_name)
|
16
|
+
delete_previous_version(template_name)
|
17
|
+
|
18
|
+
create_new_template(template_name)
|
19
|
+
rescue StandardError => e
|
20
|
+
puts "SES ERROR: #{e}"
|
21
|
+
end
|
22
|
+
|
23
|
+
def delete_previous_version(template_name)
|
24
|
+
@client.delete_template(
|
25
|
+
template_name: template_name
|
26
|
+
)
|
27
|
+
end
|
28
|
+
|
29
|
+
def create_new_template(template_name)
|
30
|
+
@res = @client.create_template(
|
31
|
+
template: {
|
32
|
+
template_name: template_name,
|
33
|
+
subject_part: 'OLA',
|
34
|
+
html_part: File.read(template_name + '.html')
|
35
|
+
},
|
36
|
+
)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/lib/ctt/version.rb
ADDED
data/lib/ctt.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'byebug'
|
2
|
+
|
3
|
+
require_relative 'mjml'
|
4
|
+
require_relative 'ctt/ses'
|
5
|
+
|
6
|
+
module CTT
|
7
|
+
def self.parse(template_name)
|
8
|
+
Dir.chdir('templates') {
|
9
|
+
MJML::Parser.new.call(template_name)
|
10
|
+
}
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.upload(template_name)
|
14
|
+
Dir.chdir('templates') {
|
15
|
+
CTT::SES.new.call(template_name)
|
16
|
+
}
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.refresh(template_name)
|
20
|
+
Dir.chdir('templates') {
|
21
|
+
MJML::Parser.new.call(template_name)
|
22
|
+
CTT::SES.new.call(template_name)
|
23
|
+
}
|
24
|
+
end
|
25
|
+
end
|
data/lib/mjml/parser.rb
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'open3'
|
2
|
+
|
3
|
+
module MJML
|
4
|
+
class Parser
|
5
|
+
class InvalidTemplate < StandardError; end
|
6
|
+
class ExecutableNotFound < StandardError; end
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
raise ExecutableNotFound if MJML.executable_version.nil?
|
10
|
+
end
|
11
|
+
|
12
|
+
def call(template)
|
13
|
+
call!(template)
|
14
|
+
rescue InvalidTemplate
|
15
|
+
puts "Parser: Template doesn't exist"
|
16
|
+
rescue StandardError => e
|
17
|
+
puts "Parser: ERROR: #{e}"
|
18
|
+
end
|
19
|
+
|
20
|
+
def call!((template))
|
21
|
+
@input_file = template + '.mjml'
|
22
|
+
@output_file = template + '.html'
|
23
|
+
|
24
|
+
exec!
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def exec!
|
30
|
+
raise InvalidTemplate unless File.file?(@input_file)
|
31
|
+
|
32
|
+
parse_to_html
|
33
|
+
end
|
34
|
+
|
35
|
+
def mjml_bin
|
36
|
+
MJML::Config.bin_path
|
37
|
+
end
|
38
|
+
|
39
|
+
def cmd()
|
40
|
+
"#{mjml_bin} --config.minify -r #{@input_file } -o #{@output_file}"
|
41
|
+
end
|
42
|
+
|
43
|
+
def parse_to_html
|
44
|
+
_out, err, _sts = Open3.capture3(cmd)
|
45
|
+
raise StandardError.new(err) unless err.empty?
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/lib/mjml.rb
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
require_relative 'mjml/parser'
|
2
|
+
|
3
|
+
# MJML library for ruby
|
4
|
+
module MJML
|
5
|
+
class BinaryNotFound < StandardError; end
|
6
|
+
|
7
|
+
# Constants
|
8
|
+
MIME_TYPE = 'text/mjml'.freeze
|
9
|
+
EXTENSION = '.mjml'.freeze
|
10
|
+
VERSION_4_REGEX = /^mjml-cli: (\d+\.\d+\.\d+)/i
|
11
|
+
|
12
|
+
# Available settings
|
13
|
+
module Config
|
14
|
+
class << self
|
15
|
+
attr_accessor :bin_path
|
16
|
+
attr_accessor :minify_output
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.setup!
|
21
|
+
# Init config
|
22
|
+
Config.bin_path = find_executable
|
23
|
+
Config.minify_output = false
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.find_executable
|
27
|
+
local_path = File.expand_path('node_modules/.bin/mjml', Dir.pwd)
|
28
|
+
return local_path if File.file?(local_path)
|
29
|
+
`/usr/bin/env which mjml`.strip
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.executable_version
|
33
|
+
@executable_version ||= extract_executable_version
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.extract_executable_version
|
37
|
+
ver, _status = Open3.capture2(Config.bin_path, '--version')
|
38
|
+
# mjml 4.x outputs two rows:
|
39
|
+
# mjml-core: 4.0.0
|
40
|
+
# mjml-cli: 4.0.0
|
41
|
+
# --> we take the second number as the version, since we call the cli
|
42
|
+
|
43
|
+
match = ver.match(VERSION_4_REGEX)
|
44
|
+
match.nil? ? nil : match[1]
|
45
|
+
rescue Errno::ENOENT => _e
|
46
|
+
raise BinaryNotFound, "mjml binary not found for path '#{Config.bin_path}'"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
MJML.setup!
|
metadata
CHANGED
@@ -1,23 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ctt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Carlos Silva
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
12
|
-
dependencies:
|
11
|
+
date: 2022-08-11 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: aws-sdk-ses
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.40.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.40.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: dotenv
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.2.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 2.2.0
|
13
41
|
description: CTT SDK to communicate with the CTT API
|
14
42
|
email:
|
15
43
|
- ops@gaspardbruno.com
|
16
|
-
executables:
|
44
|
+
executables:
|
45
|
+
- ctt
|
17
46
|
extensions: []
|
18
47
|
extra_rdoc_files: []
|
19
48
|
files:
|
20
|
-
-
|
49
|
+
- bin/ctt
|
50
|
+
- lib/ctt.rb
|
51
|
+
- lib/ctt/ses.rb
|
52
|
+
- lib/ctt/version.rb
|
53
|
+
- lib/mjml.rb
|
54
|
+
- lib/mjml/parser.rb
|
21
55
|
homepage: https://github.com/Gaspard-Bruno/ctt-ruby-gem
|
22
56
|
licenses:
|
23
57
|
- MIT
|
data/lib/NAME.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
raise 'Placeholder'
|