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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e038c60d9ed866728ea0d2f7b23084141a3489aca3ab97c8b0e9c565c81c3d2e
4
- data.tar.gz: 7bf6337e3cc2d3fce2d321a0efd783f10f9afcd585311dd9cf89153613cb362c
3
+ metadata.gz: 7dd20f9c479f208bf3f3e446c86089e9fc8d0128cc0cf5c696ac731c09a3d4c6
4
+ data.tar.gz: 49a3c5ec7c51881efec7b43a1013ef98588358003a20442dd3b2e0b794dfb49c
5
5
  SHA512:
6
- metadata.gz: 602bee9e35b13e49d57c209c0744884b2796ddee48a2153ca61a8ff657d7378a78ed577981585de57eb2d4d05c887e858ca5fb049102c6e689c21cac8329bad1
7
- data.tar.gz: 611fa969bb72b7596f413444a5274af62e92f879cdf89f9eb8463669d4c9591fbec8028951326cfc8f10610e8a46b6a33eb43f703f8755220276411098f831b1
6
+ metadata.gz: 92ebda73abd79f133d95b3d1b527e5b601050b73fd0eda4752ec27bae6e33e383ce2027f9706ca132dcbe3c5b11c36f22f38ca640ec5dd31a1103b27b2fd55ba
7
+ data.tar.gz: 0a0d64b082f61dad93a425dd03de0065700a38cc5e98a95cf3c801b34f4f4a8f1945089738d4007d0336956eb4fbd07ffbf8a7a2ecdfa581974a75ec95ea2447
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.3".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,23 +1,57 @@
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.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-07-29 00:00:00.000000000 Z
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
- - lib/NAME.rb
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'