Class: Blastengine::Client
- Inherits:
-
Object
- Object
- Blastengine::Client
- Includes:
- Blastengine
- Defined in:
- lib/blastengine/client.rb
Overview
Blastengine SDKクライアント基本的に各メール機能から呼ばれる
Constant Summary
Constants included from Blastengine
Instance Attribute Summary collapse
-
#api_key ⇒ Object
アクセッサー.
-
#token ⇒ Object
アクセッサー.
-
#user_name ⇒ Object
アクセッサー.
Instance Method Summary collapse
-
#conn(attachment_count = 0) ⇒ Object
APIリクエストを行うFaradayのインスタンスを返す 添付ファイルの有無によって返すオブジェクトが異なる.
- #delete(path) ⇒ Object
-
#generate_token ⇒ Object
トークンを生成する.
-
#get(path, binary = false) ⇒ Object
GETリクエストを行う.
-
#handle_response(res, binary = false) ⇒ Object
レスポンスのハンドリング用.
-
#initialize(api_key, user_name) ⇒ Client
constructor
コンストラクター APIキー、ユーザー名の設定とトークンの生成を行う.
-
#patch(path, data) ⇒ Object
PATCHリクエストを行う.
-
#post(path, data = {}, attachments = []) ⇒ Object
POSTリクエストを行う.
-
#post_data(data, attachments = []) ⇒ Object
POSTリクエスト用のデータを生成する.
-
#put(path, data) ⇒ Object
PUTリクエストを行う.
Methods included from Blastengine
Constructor Details
#initialize(api_key, user_name) ⇒ Client
コンストラクターAPIキー、ユーザー名の設定とトークンの生成を行う
47 48 49 50 51 |
# File 'lib/blastengine/client.rb', line 47 def initialize(api_key, user_name) self.api_key = api_key self.user_name = user_name self.generate_token end |
Instance Attribute Details
#api_key ⇒ Object
アクセッサー
53 54 55 |
# File 'lib/blastengine/client.rb', line 53 def api_key @api_key end |
#token ⇒ Object
アクセッサー
53 54 55 |
# File 'lib/blastengine/client.rb', line 53 def token @token end |
#user_name ⇒ Object
アクセッサー
53 54 55 |
# File 'lib/blastengine/client.rb', line 53 def user_name @user_name end |
Instance Method Details
#conn(attachment_count = 0) ⇒ Object
APIリクエストを行うFaradayのインスタンスを返す添付ファイルの有無によって返すオブジェクトが異なる
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/blastengine/client.rb', line 68 def conn( = 0) # 共通の設定 url = "https://#{DOMAIN}" headers = { "Authorization": "Bearer #{@token}" } # 添付ファイルがある場合 if > 0 # MultiPartの設定をして返す Faraday.new( url: url, headers: headers ) do |faraday| faraday.request :multipart, flat_encode: true end else # 添付ファイルがない場合 # JSONの設定をして返す headers["Content-Type"] = "application/json" Faraday.new( url: url, headers: headers ) end end |
#delete(path) ⇒ Object
153 154 155 156 157 158 |
# File 'lib/blastengine/client.rb', line 153 def delete(path) # リクエスト実行 res = self.conn.delete("#{BASE_PATH}#{path}") # レスポンスを処理 return self.handle_response res end |
#generate_token ⇒ Object
トークンを生成する
58 59 60 61 62 |
# File 'lib/blastengine/client.rb', line 58 def generate_token return @token unless @token.nil? str = "#{@user_name}#{@api_key}"; @token = Base64.urlsafe_encode64 Digest::SHA256.hexdigest(str).downcase end |
#get(path, binary = false) ⇒ Object
GETリクエストを行う
114 115 116 117 118 119 |
# File 'lib/blastengine/client.rb', line 114 def get(path, binary = false) # リクエスト実行 res = self.conn.get("#{BASE_PATH}#{path}") # レスポンスを処理 return self.handle_response res, binary end |
#handle_response(res, binary = false) ⇒ Object
レスポンスのハンドリング用
163 164 165 166 167 168 169 170 171 172 |
# File 'lib/blastengine/client.rb', line 163 def handle_response(res, binary = false) # レスポンスをJSONパース body = binary ? res.body : JSON.parse(res.body) # 200または201なら、レスポンスを返す return body if res.status == 200 or res.status == 201 # それ以外はエラーを生成して例外処理 = body["error_messages"].map{|key, value| "Error in #{key} (#{value})"}.join("\n") @@last_error = Blastengine::Error.new raise @@last_error end |
#patch(path, data) ⇒ Object
PATCHリクエストを行う
146 147 148 149 150 151 |
# File 'lib/blastengine/client.rb', line 146 def patch(path, data) # リクエスト実行 res = self.conn.patch("#{BASE_PATH}#{path}", data.to_json) # レスポンスを処理 return self.handle_response res end |
#post(path, data = {}, attachments = []) ⇒ Object
POSTリクエストを行う
124 125 126 127 128 129 130 131 |
# File 'lib/blastengine/client.rb', line 124 def post(path, data = {}, = []) # リクエストボディの生成 params = self.post_data data, # リクエスト実行 res = self.conn(.size).post("#{BASE_PATH}#{path}", params) # レスポンスを処理 return self.handle_response res end |
#post_data(data, attachments = []) ⇒ Object
POSTリクエスト用のデータを生成する
97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/blastengine/client.rb', line 97 def post_data(data, = []) # 添付ファイルがない場合は、データをJSONに変換して返す return data.to_json if .length == 0 # 添付ファイルがある場合はファイルを読み込んで返す return { data: Faraday::Multipart::ParamPart.new(data.to_json, "application/json"), file: .map{|a| Faraday::Multipart::FilePart.new( File.open(a), MiniMime.lookup_by_filename(a) ? MiniMime.lookup_by_filename(a).content_type : "application/octet-stream", File.basename(a) )} } end |
#put(path, data) ⇒ Object
PUTリクエストを行う
136 137 138 139 140 141 |
# File 'lib/blastengine/client.rb', line 136 def put(path, data) # リクエスト実行 res = self.conn.put("#{BASE_PATH}#{path}", data.to_json) # レスポンスを処理 return self.handle_response res end |