ctt 0.0.0 → 0.0.1
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 +37 -4
- 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: e6f0466b2c237690bab6fb3688337441a40e0b694226825acc2b728b09cc0521
|
4
|
+
data.tar.gz: b11324574a5e059eee4cb6899ddec22cb56ec7eec954418d65b2e77990fdb050
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e5c1d8616cf2c39e15c0ae508a69693fd57487fc1bb120858364440e063b20fa51ee25310880d6f117a65d02916426038901e01643882b5a3de0ff5f5fc72b53
|
7
|
+
data.tar.gz: bc5860981cc9e5ee672a1363a7d3960b742c84c63d9db99030a21474b1a5ef6aac88a7fff1131a54ca72918e6eee10e3282408060fa8d28ed778a35819c2c34a
|
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,15 +1,43 @@
|
|
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.1
|
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-02 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.45.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.45.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.7.6
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 2.7.6
|
13
41
|
description: CTT SDK to communicate with the CTT API
|
14
42
|
email:
|
15
43
|
- ops@gaspardbruno.com
|
@@ -17,7 +45,12 @@ executables: []
|
|
17
45
|
extensions: []
|
18
46
|
extra_rdoc_files: []
|
19
47
|
files:
|
20
|
-
-
|
48
|
+
- bin/ctt
|
49
|
+
- lib/ctt.rb
|
50
|
+
- lib/ctt/ses.rb
|
51
|
+
- lib/ctt/version.rb
|
52
|
+
- lib/mjml.rb
|
53
|
+
- lib/mjml/parser.rb
|
21
54
|
homepage: https://github.com/Gaspard-Bruno/ctt-ruby-gem
|
22
55
|
licenses:
|
23
56
|
- MIT
|
data/lib/NAME.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
raise 'Placeholder'
|