ctt 0.0.0 → 0.0.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: e038c60d9ed866728ea0d2f7b23084141a3489aca3ab97c8b0e9c565c81c3d2e
4
- data.tar.gz: 7bf6337e3cc2d3fce2d321a0efd783f10f9afcd585311dd9cf89153613cb362c
3
+ metadata.gz: e6f0466b2c237690bab6fb3688337441a40e0b694226825acc2b728b09cc0521
4
+ data.tar.gz: b11324574a5e059eee4cb6899ddec22cb56ec7eec954418d65b2e77990fdb050
5
5
  SHA512:
6
- metadata.gz: 602bee9e35b13e49d57c209c0744884b2796ddee48a2153ca61a8ff657d7378a78ed577981585de57eb2d4d05c887e858ca5fb049102c6e689c21cac8329bad1
7
- data.tar.gz: 611fa969bb72b7596f413444a5274af62e92f879cdf89f9eb8463669d4c9591fbec8028951326cfc8f10610e8a46b6a33eb43f703f8755220276411098f831b1
6
+ metadata.gz: e5c1d8616cf2c39e15c0ae508a69693fd57487fc1bb120858364440e063b20fa51ee25310880d6f117a65d02916426038901e01643882b5a3de0ff5f5fc72b53
7
+ data.tar.gz: bc5860981cc9e5ee672a1363a7d3960b742c84c63d9db99030a21474b1a5ef6aac88a7fff1131a54ca72918e6eee10e3282408060fa8d28ed778a35819c2c34a
data/bin/ctt ADDED
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env ruby
2
+ require 'ctt'
3
+
4
+ case ARGV[0]
5
+ when 'parse'
6
+ puts CTT::parse(ARGV[1])
7
+ when 'upload'
8
+ puts CTT::upload(ARGV[1])
9
+ when 'refresh'
10
+ puts CTT::refresh(ARGV[1])
11
+ else
12
+ puts 'need to specify which action'
13
+ end
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
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CTT
4
+ VERSION = "0.0.1".freeze
5
+ end
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
@@ -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.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-07-29 00:00:00.000000000 Z
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
- - lib/NAME.rb
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'