ctt 0.0.0 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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'
|