blastengine 0.4.0 → 0.5.0

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: cb192455e96f1e16a8c2d70ac2035758bef80f0d5e56c0c651b33dd118558f15
4
- data.tar.gz: 6fc1ef4846f1090cb4b57b38fe1ff1c063a8eeb4f47cadff2a930fb62b1af0f4
3
+ metadata.gz: a9d7c3658112bf007f14c0db5b8e63c753c3ef74edb1428af29cc458229fa349
4
+ data.tar.gz: 649c891776820ff43fefeb250f7d5359dc58acf5ebd20f4e8aeffd0f4ebd3afe
5
5
  SHA512:
6
- metadata.gz: 6c44da8ddac18082ebcf1fe7a3007bf242e7b3d3236c4b6479df8ae643b1f0f8762122716b87f8795cc245ad6ebe97aafa0de0e5325a6db2f59d6ad96da1cb76
7
- data.tar.gz: 7001480e3afe9debb0d7ec8c95996450c79bb0e92eafbdbdc37758ea2aa7c277e938b8772b2a362d537f8ca32ca904d506028a2ac4645d265cb5208c53d6a842
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.add "test1@example.jp", {name: "User 1"}
71
- bulk.add "test2@example.jp", {name: "User 2"}
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
@@ -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}"
@@ -37,11 +98,5 @@ module Blastengine
37
98
  res = @@client.delete path
38
99
  return res["delivery_id"]
39
100
  end
40
-
41
- def report
42
- report = Blastengine::Report.new @delivery_id
43
- report.create
44
- report
45
- end
46
101
  end
47
102
  end
@@ -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 add(email, params = {})
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
 
@@ -4,6 +4,7 @@ module Blastengine
4
4
  attr_accessor :job_id, :delivery_id, :percentage, :status, :mail_open_file_url, :total_count, :report
5
5
  def initialize delivery_id
6
6
  @delivery_id = delivery_id
7
+ create
7
8
  end
8
9
 
9
10
  def create
@@ -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Blastengine
4
- VERSION = "0.4.0"
4
+ VERSION = "0.5.0"
5
5
  end
data/lib/blastengine.rb CHANGED
@@ -10,6 +10,8 @@ require "blastengine/job"
10
10
  require "blastengine/usage"
11
11
  require "blastengine/email"
12
12
  require "blastengine/report"
13
+ require "blastengine/mail"
14
+ require "blastengine/log"
13
15
 
14
16
  module Blastengine
15
17
  class Error < StandardError; end
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.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: 2022-10-25 00:00:00.000000000 Z
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.3.7
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