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 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'