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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5446dc5334db835f92acb44be743dff7de15fbadfea05ee17b31ee24a00839d0
4
- data.tar.gz: eaec75b620b64061ad33149270cdb6a806903b0b621dad49a3dd9f8470deda7b
3
+ metadata.gz: a9d7c3658112bf007f14c0db5b8e63c753c3ef74edb1428af29cc458229fa349
4
+ data.tar.gz: 649c891776820ff43fefeb250f7d5359dc58acf5ebd20f4e8aeffd0f4ebd3afe
5
5
  SHA512:
6
- metadata.gz: f912a678d09587f36aa4bec4ca6c62f672d6c8d12052ed3201c113312a2d4c91e0caffea70af8b52ec5eb10424e16efbcbe575bd80da3ba92482f926281218c0
7
- data.tar.gz: 76deb185bb188795754903c55ee71fa61c168728fcf19114560f3a7dc7255e80dc5f8c3730ea60d8978640bff0756eedbe84b40392b0e2a82d4f93b9486de695
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}"
@@ -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
 
@@ -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.1"
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.1
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