blastengine 0.1.0 → 0.2.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: a32c93429a747fae165318a2078c7e39750469c07f4fe8e974adc162d4ab0db8
4
- data.tar.gz: 7eaa9bf6dc06fd82269c860307a870a18a369bc7a8189372ff6d672164b812be
3
+ metadata.gz: b5f2374200e5fe2ca4fda4eb5440c4d443252cf87c771edf80ebd67e65408f6d
4
+ data.tar.gz: 238f73b30b0786fdb7376dc9ebdf10c854c7539093acf1a07db3d7bcbd2ae55d
5
5
  SHA512:
6
- metadata.gz: 716f9265649718d4aa3a5d7895b3bc46c63bb920adceecb8ca650ee4a0a171788c8a7c574d934580d4db64a3c10d228732d026f95ddede1d7dc80725bb9c4fdb
7
- data.tar.gz: fdf904fea321762b809b43ef43ca534279189f16bf814aa7d47772bc1a24c8d106c40d24f0037a9a35c967179e7e03833dbcb00b20162f02e0876d47cc09520d
6
+ metadata.gz: f738c2aaa8efe12b219ff97b3189b17f163ae452c7a37d1aac5a7342f735c90a29659b43fc80cdf52ea0ca7b9181fe5bd40654b3b3fdbb44e5f363d842f76bf9
7
+ data.tar.gz: 481c6708c05f9b4d6d3273574fb5b8c2700bc2bdebb53cec9e67fcb04b1295509282ccae09f392a5b4d3c6b4fcc13b2d227d98e0e6a518ff88a6d24e977ea801
@@ -0,0 +1,39 @@
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
@@ -0,0 +1,98 @@
1
+ require "time"
2
+
3
+ module Blastengine
4
+ class Bulk
5
+ include Blastengine
6
+ attr_accessor :subject, :text_part, :encode, :html_part, :attachments, :delivery_id
7
+ def initialize
8
+ @to = []
9
+ @attachments = []
10
+ @encode = "UTF-8"
11
+ end
12
+
13
+ #
14
+ # 送信主の追加
15
+ #
16
+ def from(email, name = "")
17
+ @_from = {email: email, name: name}
18
+ end
19
+
20
+ #
21
+ # バルクメールの登録
22
+ #
23
+ def register
24
+ # APIリクエスト用のパス
25
+ path = "/deliveries/bulk/begin"
26
+ data = {
27
+ from: @_from,
28
+ subject: @subject,
29
+ encode: @encode,
30
+ text_part: @text_part,
31
+ }
32
+ # HTMLパートがある場合は追加
33
+ data[:html_part] = @html_part unless @html_part.nil?
34
+ # API実行
35
+ res = @@client.post path, data, @attachments
36
+ @delivery_id = res["delivery_id"]
37
+ return res["delivery_id"]
38
+ end
39
+
40
+ #
41
+ # 受信者の追加
42
+ #
43
+ def add(email, params = {})
44
+ @to << {
45
+ email: email,
46
+ insert_code: params.map{|key, value| {
47
+ key: "__#{key}__",
48
+ value: value
49
+ }}
50
+ }
51
+ end
52
+
53
+ #
54
+ # バルクメールの更新
55
+ #
56
+ def update
57
+ # APIリクエスト用のパス
58
+ path = "/deliveries/bulk/update/#{@delivery_id}"
59
+ data = {
60
+ to: @to
61
+ }
62
+ # subject, text_part, from, html_partはあれば追加
63
+ data[:subject] = @subject unless @subject.nil?
64
+ data[:from] = @_from unless @_from.nil?
65
+ data[:text_part] = @text_part unless @text_part.nil?
66
+ data[:html_part] = @html_part unless @html_part.nil?
67
+ # API実行
68
+ res = @@client.put path, data
69
+ return res["delivery_id"]
70
+ end
71
+
72
+ #
73
+ # バルクメールの削除
74
+ #
75
+ def delete
76
+ path = "/deliveries/#{@delivery_id}"
77
+ # API実行
78
+ res = @@client.delete path
79
+ return res["delivery_id"]
80
+ end
81
+
82
+ #
83
+ # バルクメールの送信
84
+ #
85
+ def send(date = nil)
86
+ # APIリクエスト用のパス
87
+ path = date ?
88
+ "/deliveries/bulk/commit/#{@delivery_id}" :
89
+ "/deliveries/bulk/commit/#{@delivery_id}/immediate"
90
+ # APIリクエスト用のデータ
91
+ data = date ? {reservation_time: date.iso8601} : {}
92
+ # API実行
93
+ res = @@client.patch path, data
94
+ # エラーがあったら例外を投げるので、この場合は通常終了
95
+ return res["delivery_id"]
96
+ end
97
+ end
98
+ end
@@ -64,7 +64,7 @@ module Blastengine
64
64
  # APIリクエストを行うFaradayのインスタンスを返す
65
65
  # 添付ファイルの有無によって返すオブジェクトが異なる
66
66
  #
67
- def conn(attachment_count)
67
+ def conn(attachment_count = 0)
68
68
  # 共通の設定
69
69
  url = "https://#{DOMAIN}"
70
70
  headers = {
@@ -93,7 +93,7 @@ module Blastengine
93
93
  #
94
94
  # POSTリクエスト用のデータを生成する
95
95
  #
96
- def post_data(data, attachments)
96
+ def post_data(data, attachments = [])
97
97
  # 添付ファイルがない場合は、データをJSONに変換して返す
98
98
  return data.to_json if attachments.length == 0
99
99
  # 添付ファイルがある場合はファイルを読み込んで返す
@@ -115,6 +115,41 @@ module Blastengine
115
115
  params = self.post_data data, attachments
116
116
  # リクエスト実行
117
117
  res = self.conn(attachments.size).post("#{BASE_PATH}#{path}", params)
118
+ # レスポンスを処理
119
+ return self.handle_response res
120
+ end
121
+
122
+ #
123
+ # PUTリクエストを行う
124
+ #
125
+ def put(path, data)
126
+ # リクエスト実行
127
+ res = self.conn.put("#{BASE_PATH}#{path}", data.to_json)
128
+ # レスポンスを処理
129
+ return self.handle_response res
130
+ end
131
+
132
+ #
133
+ # PATCHリクエストを行う
134
+ #
135
+ def patch(path, data)
136
+ # リクエスト実行
137
+ res = self.conn.patch("#{BASE_PATH}#{path}", data.to_json)
138
+ # レスポンスを処理
139
+ return self.handle_response res
140
+ end
141
+
142
+ def delete(path)
143
+ # リクエスト実行
144
+ res = self.conn.delete("#{BASE_PATH}#{path}")
145
+ # レスポンスを処理
146
+ return self.handle_response res
147
+ end
148
+
149
+ #
150
+ # レスポンスのハンドリング用
151
+ #
152
+ def handle_response(res)
118
153
  # レスポンスをJSONパース
119
154
  json = JSON.parse res.body
120
155
  # 200または201なら、レスポンスを返す
@@ -124,6 +159,5 @@ module Blastengine
124
159
  @@last_error = Blastengine::Error.new message
125
160
  raise @@last_error
126
161
  end
127
-
128
162
  end
129
163
  end
@@ -8,6 +8,9 @@ module Blastengine
8
8
  @encode = "UTF-8"
9
9
  end
10
10
 
11
+ #
12
+ # 送信主の追加
13
+ #
11
14
  def from(email, name = "")
12
15
  @_from = {email: email, name: name}
13
16
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Blastengine
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
data/lib/blastengine.rb CHANGED
@@ -3,6 +3,7 @@
3
3
  require_relative "blastengine/version"
4
4
  require "blastengine/client"
5
5
  require "blastengine/transaction"
6
+ require "blastengine/bulk"
6
7
 
7
8
  module Blastengine
8
9
  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.1.0
4
+ version: 0.2.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-09-23 00:00:00.000000000 Z
11
+ date: 2022-09-24 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,9 @@ files:
25
25
  - LICENSE
26
26
  - README.md
27
27
  - Rakefile
28
+ - blastengine.gemspec
28
29
  - lib/blastengine.rb
30
+ - lib/blastengine/bulk.rb
29
31
  - lib/blastengine/client.rb
30
32
  - lib/blastengine/transaction.rb
31
33
  - lib/blastengine/version.rb