lib/ne_api.rb in ne_api-0.0.4 vs lib/ne_api.rb in ne_api-0.0.5
- old
+ new
@@ -20,26 +20,32 @@
end
def response response
body = JSON.parse response.body
if body["result"] != "success"
- raise NeAPIException, body["message"]
+ if (body["code"] == "003001" || body["code"] == "003002")
+ return false
+ else
+ raise NeAPIException, sprintf("%s:%s", body["code"], body["message"])
+ end
return false
end
body
end
class Master
include NeAPI
- attr_accessor :access_token, :refresh_token, :wait_flag
+ attr_accessor :access_token, :refresh_token, :wait_flag, :retry_num, :wait_interval
PATH_PREFIX="/api_v1_"
def initialize access_token: access_token, refresh_token: refresh_token
@@params = YAML.load_file(File.join(File.dirname(__FILE__),"../config/api.yaml"))
@access_token = access_token
@refresh_token = refresh_token
@wait_flag = false
+ @retry_num = 1
+ @wait_interval = 30
end
def force_import
@wait_flag = true
end
@@ -52,18 +58,31 @@
def post method: nil , model: nil, query: nil, fields: nil, get_key: nil, params: {}
raise NeAPIException, "no token!" if @access_token.nil? || @refresh_token.nil?
params = params.merge({wait_flag: 1}) if @wait_flag
if fields.present? && query.present?
- res =response(conn.post PATH_PREFIX+model.to_s+ "/" + method, {access_token: @access_token, refresh_token: @refresh_token, fields: fields}.merge(query).merge(params))
+ post_args = {access_token: @access_token, refresh_token: @refresh_token, fields: fields}.merge(query).merge(params)
+
elsif fields.present?
- res =response(conn.post PATH_PREFIX+model.to_s+ "/" + method, {access_token: @access_token, refresh_token: @refresh_token, fields: fields}.merge(params))
+ post_args = {access_token: @access_token, refresh_token: @refresh_token, fields: fields}.merge(params)
elsif query.present?
- res =response(conn.post PATH_PREFIX+model.to_s+ "/" + method, {access_token: @access_token, refresh_token: @refresh_token}.merge(query).merge(params))
+ post_args = {access_token: @access_token, refresh_token: @refresh_token}.merge(query).merge(params)
else
- res =response(conn.post PATH_PREFIX+model.to_s+ "/" + method, {access_token: @access_token, refresh_token: @refresh_token}.merge(params))
+ post_args = {access_token: @access_token, refresh_token: @refresh_token}.merge(params)
end
+ res = false
+
+ self.retry_num.times do
+ res =response(conn.post PATH_PREFIX+model.to_s+ "/" + method, post_args)
+ break if res != false
+ sleep(self.wait_interval)
+ end
+ if res == false
+ raise NeAPIException, "003001:Next Engineが大変混み合っています。APIの接続を#{self.retry_num}回、#{self.wait_interval}秒間隔でアクセスを試みましたが、失敗をしました"
+ return false
+ end
+
@access_token = res["access_token"] if res["access_token"].present?
@refresh_token = res["refresh_token"] if res["refresh_token"].present?
get_key.present? ? res[get_key] : res
end
@@ -110,14 +129,15 @@
class Auth
include NeAPI
SIGN_IN_PATH = "/users/sign_in/"
NEAUTH_PATH = "/api_neauth/"
- attr_accessor :redirect_url, :ne_user
+ attr_accessor :redirect_url, :ne_user, :wait_flag
def initialize redirect_url: nil
raise NeAPIException, "no redirect_url" if redirect_url.nil?
+ @wait_flag = false
@redirect_url = redirect_url
end
#uid/state取得
def sign_in client_id = ENV["CLIENT_ID"] , client_secret = ENV["CLIENT_SECRET"]
@@ -125,9 +145,10 @@
end
#access_token/企業情報取得
def ne_auth uid, state
@ne_user = response ( conn.post NEAUTH_PATH, {uid: uid, state: state})
+ raise NeAPIException, "003001:Next Engineが大変混み合っているようです" if @ne_user == false
@ne_user
end
def tokens
@ne_user.nil? ? nil : {access_token: @ne_user["access_token"], refresh_token: @ne_user["refresh_token"]}
end