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