blastengine 0.4.1 → 0.5.0
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 +4 -4
- data/README.md +2 -2
- data/lib/blastengine/base.rb +61 -0
- data/lib/blastengine/bulk.rb +42 -1
- data/lib/blastengine/transaction.rb +11 -1
- data/lib/blastengine/version.rb +1 -1
- data/lib/blastengine.rb +2 -0
- metadata +3 -4
- data/blastengine.gemspec +0 -39
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a9d7c3658112bf007f14c0db5b8e63c753c3ef74edb1428af29cc458229fa349
|
4
|
+
data.tar.gz: 649c891776820ff43fefeb250f7d5359dc58acf5ebd20f4e8aeffd0f4ebd3afe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b8ccb93cbf79da083e1b5260d84a90450e090dd43603aafca3bf06b217f9c67fbb56ff17290a7949e7aec002c7891b11ec3f9f437404dcd7fb1fa76cd4c08942
|
7
|
+
data.tar.gz: 3ed44fe674133c8a7bd58e661c03d9b1f65108e3e2f8cff80c521172a25d58e6e6d853cf9b36df9b16a5a47f9e8f779d9e75456f52fadb8615b937fb98c1b752
|
data/README.md
CHANGED
@@ -67,8 +67,8 @@ bulk.text_part = "This is a test email to __name__"
|
|
67
67
|
bulk.register
|
68
68
|
|
69
69
|
# Add address
|
70
|
-
bulk.
|
71
|
-
bulk.
|
70
|
+
bulk.addTo "test1@example.jp", {name: "User 1"}
|
71
|
+
bulk.addTo "test2@example.jp", {name: "User 2"}
|
72
72
|
bulk.update
|
73
73
|
|
74
74
|
# Send email immediately
|
data/lib/blastengine/base.rb
CHANGED
@@ -4,6 +4,67 @@ module Blastengine
|
|
4
4
|
attr_accessor :delivery_id, :status, :delivery_time, :delivery_type, :open_count,
|
5
5
|
:created_time, :updated_time, :hard_error_count, :soft_error_count, :drop_count, :sent_count, :total_count
|
6
6
|
|
7
|
+
def self.client
|
8
|
+
base = Base.new
|
9
|
+
base.client
|
10
|
+
end
|
11
|
+
|
12
|
+
def client
|
13
|
+
@@client
|
14
|
+
end
|
15
|
+
|
16
|
+
def sets(params)
|
17
|
+
params.each do |key, value|
|
18
|
+
self.set(key, value)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def set(key, value)
|
23
|
+
case key
|
24
|
+
when "delivery_id"
|
25
|
+
@delivery_id = value
|
26
|
+
when "status"
|
27
|
+
@status = value
|
28
|
+
when "delivery_time"
|
29
|
+
@delivery_time = Date.parse(value) if value != nil
|
30
|
+
when "delivery_type"
|
31
|
+
@delivery_type = value
|
32
|
+
when "open_count"
|
33
|
+
@open_count = value
|
34
|
+
when "created_time"
|
35
|
+
@created_time = Date.parse(value) if value != nil
|
36
|
+
when "updated_time"
|
37
|
+
@updated_time = Date.parse(value) if value != nil
|
38
|
+
when "hard_error_count"
|
39
|
+
@hard_error_count = value
|
40
|
+
when "soft_error_count"
|
41
|
+
@soft_error_count = value
|
42
|
+
when "drop_count"
|
43
|
+
@drop_count = value
|
44
|
+
when "sent_count"
|
45
|
+
@sent_count = value
|
46
|
+
when "total_count"
|
47
|
+
@total_count = value
|
48
|
+
when "from"
|
49
|
+
@_from = value
|
50
|
+
when "reservation_time"
|
51
|
+
@reservation_time = Date.parse(value) if value != nil
|
52
|
+
when "maillog_id"
|
53
|
+
@maillog_id = value
|
54
|
+
when "email"
|
55
|
+
@to = value
|
56
|
+
when "last_response_code"
|
57
|
+
@last_response_code = value
|
58
|
+
when "last_response_message"
|
59
|
+
@last_response_message = value
|
60
|
+
when "subject"
|
61
|
+
@subject = value
|
62
|
+
when "open_time"
|
63
|
+
@open_time = Date.parse(value) if value != nil
|
64
|
+
end
|
65
|
+
self
|
66
|
+
end
|
67
|
+
|
7
68
|
def get
|
8
69
|
# APIリクエスト用のパス
|
9
70
|
path = "/deliveries/#{@delivery_id}"
|
data/lib/blastengine/bulk.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
require "time"
|
2
|
+
require "tempfile"
|
3
|
+
require "csv"
|
2
4
|
|
3
5
|
module Blastengine
|
4
6
|
class Bulk < Base
|
@@ -40,7 +42,7 @@ module Blastengine
|
|
40
42
|
#
|
41
43
|
# 受信者の追加
|
42
44
|
#
|
43
|
-
def
|
45
|
+
def addTo(email, params = {})
|
44
46
|
@to << {
|
45
47
|
email: email,
|
46
48
|
insert_code: params.map{|key, value| {
|
@@ -54,6 +56,14 @@ module Blastengine
|
|
54
56
|
# バルクメールの更新
|
55
57
|
#
|
56
58
|
def update
|
59
|
+
if @to.size > 50
|
60
|
+
return self.csv_update
|
61
|
+
else
|
62
|
+
return self.normal_update
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def normal_update
|
57
67
|
# APIリクエスト用のパス
|
58
68
|
path = "/deliveries/bulk/update/#{@delivery_id}"
|
59
69
|
data = {
|
@@ -69,6 +79,36 @@ module Blastengine
|
|
69
79
|
return res["delivery_id"]
|
70
80
|
end
|
71
81
|
|
82
|
+
def csv_update
|
83
|
+
f = Tempfile.create(['blastengine', '.csv'])
|
84
|
+
f.close
|
85
|
+
csv = CSV.open(f.path, "w")
|
86
|
+
# ヘッダーの作成
|
87
|
+
headers = ["email"]
|
88
|
+
@to.each do |to|
|
89
|
+
to[:insert_code].each do |insert_code|
|
90
|
+
headers << insert_code[:key] if headers.index(insert_code[:key]) == nil
|
91
|
+
end
|
92
|
+
end
|
93
|
+
csv.puts headers
|
94
|
+
@to.each do |to|
|
95
|
+
lines = [to[:email]]
|
96
|
+
headers.each do |header|
|
97
|
+
next if header == "email"
|
98
|
+
insert_code = to[:insert_code].find{|insert_code| insert_code[:key] == header}
|
99
|
+
lines << insert_code[:value] if insert_code != nil
|
100
|
+
end
|
101
|
+
csv.puts lines
|
102
|
+
end
|
103
|
+
csv.close
|
104
|
+
job = self.import f.path
|
105
|
+
while !job.finish?
|
106
|
+
sleep 1
|
107
|
+
end
|
108
|
+
File.unlink f.path
|
109
|
+
@delivery_id
|
110
|
+
end
|
111
|
+
|
72
112
|
#
|
73
113
|
# バルクメールの送信
|
74
114
|
#
|
@@ -82,6 +122,7 @@ module Blastengine
|
|
82
122
|
# API実行
|
83
123
|
res = @@client.patch path, data
|
84
124
|
# エラーがあったら例外を投げるので、この場合は通常終了
|
125
|
+
@delivery_id = res["delivery_id"]
|
85
126
|
return res["delivery_id"]
|
86
127
|
end
|
87
128
|
|
@@ -1,13 +1,14 @@
|
|
1
1
|
module Blastengine
|
2
2
|
class Transaction < Base
|
3
3
|
include Blastengine
|
4
|
-
attr_accessor :to, :cc, :bcc, :subject, :text_part, :encode, :html_part, :attachments
|
4
|
+
attr_accessor :to, :cc, :bcc, :subject, :text_part, :encode, :html_part, :attachments, :insert_code
|
5
5
|
def initialize
|
6
6
|
@to = ""
|
7
7
|
@cc = []
|
8
8
|
@bcc = []
|
9
9
|
@attachments = []
|
10
10
|
@encode = "UTF-8"
|
11
|
+
@insert_code = {}
|
11
12
|
end
|
12
13
|
|
13
14
|
#
|
@@ -35,9 +36,18 @@ module Blastengine
|
|
35
36
|
}
|
36
37
|
# HTMLパートがある場合は追加
|
37
38
|
data[:html_part] = @html_part unless @html_part.nil?
|
39
|
+
if @insert_code != nil
|
40
|
+
data[:insert_code] = @insert_code.map do |key, value|
|
41
|
+
{
|
42
|
+
key: "__#{key}__",
|
43
|
+
value: value
|
44
|
+
}
|
45
|
+
end
|
46
|
+
end
|
38
47
|
# API実行
|
39
48
|
res = @@client.post path, data, @attachments
|
40
49
|
# エラーがあったら例外を投げるので、この場合は通常終了
|
50
|
+
@delivery_id = res["delivery_id"]
|
41
51
|
return res["delivery_id"]
|
42
52
|
end
|
43
53
|
end
|
data/lib/blastengine/version.rb
CHANGED
data/lib/blastengine.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blastengine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Atsushi Nakatsugawa
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-07-20 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: This is a SDK for sending email by blastengine.
|
14
14
|
email:
|
@@ -25,7 +25,6 @@ files:
|
|
25
25
|
- LICENSE
|
26
26
|
- README.md
|
27
27
|
- Rakefile
|
28
|
-
- blastengine.gemspec
|
29
28
|
- lib/blastengine.rb
|
30
29
|
- lib/blastengine/base.rb
|
31
30
|
- lib/blastengine/bulk.rb
|
@@ -60,7 +59,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
60
59
|
- !ruby/object:Gem::Version
|
61
60
|
version: '0'
|
62
61
|
requirements: []
|
63
|
-
rubygems_version: 3.
|
62
|
+
rubygems_version: 3.4.9
|
64
63
|
signing_key:
|
65
64
|
specification_version: 4
|
66
65
|
summary: SDK for sending email by blastengine
|
data/blastengine.gemspec
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "lib/blastengine/version"
|
4
|
-
|
5
|
-
Gem::Specification.new do |spec|
|
6
|
-
spec.name = "blastengine"
|
7
|
-
spec.version = Blastengine::VERSION
|
8
|
-
spec.authors = ["Atsushi Nakatsugawa"]
|
9
|
-
spec.email = ["atsushi@moongift.jp"]
|
10
|
-
|
11
|
-
spec.summary = "SDK for sending email by blastengine"
|
12
|
-
spec.description = "This is a SDK for sending email by blastengine."
|
13
|
-
spec.homepage = "https://blastengine.jp/"
|
14
|
-
spec.license = "MIT"
|
15
|
-
spec.required_ruby_version = ">= 2.6.0"
|
16
|
-
|
17
|
-
# spec.metadata["allowed_push_host"] = "TODO: Set to your gem server 'https://example.com'"
|
18
|
-
|
19
|
-
spec.metadata["homepage_uri"] = spec.homepage
|
20
|
-
spec.metadata["source_code_uri"] = "https://github.com/blastengineMania/blastengine-ruby"
|
21
|
-
spec.metadata["changelog_uri"] = "https://github.com/blastengineMania/blastengine-ruby/CHANGELOG.md"
|
22
|
-
|
23
|
-
# Specify which files should be added to the gem when it is released.
|
24
|
-
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
25
|
-
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
26
|
-
`git ls-files -z`.split("\x0").reject do |f|
|
27
|
-
(f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
|
28
|
-
end
|
29
|
-
end
|
30
|
-
spec.bindir = "exe"
|
31
|
-
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
32
|
-
spec.require_paths = ["lib"]
|
33
|
-
|
34
|
-
# Uncomment to register a new dependency of your gem
|
35
|
-
# spec.add_dependency "example-gem", "~> 1.0"
|
36
|
-
|
37
|
-
# For more information and examples about making a new gem, check out our
|
38
|
-
# guide at: https://bundler.io/guides/creating_gem.html
|
39
|
-
end
|