class NeAPI::Master

Constants

PATH_PREFIX

Attributes

access_token[RW]
access_token_end_date[RW]
refresh_token[RW]
refresh_token_end_date[RW]
retry_num[RW]
wait_flag[RW]
wait_interval[RW]

Public Class Methods

new(access_token: "", refresh_token: "") click to toggle source
# File lib/ne_api.rb, line 43
def initialize access_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 = 10
  @wait_interval = 15
end

Public Instance Methods

force_import() click to toggle source
# File lib/ne_api.rb, line 52
def force_import
  @wait_flag = true
end
method_missing(path, args={}) click to toggle source
Calls superclass method
# File lib/ne_api.rb, line 94
def method_missing(path, args={})
  super if @@params.nil? || path.nil?
  unless models = /^(.*)_.*$/.match(path.to_s)
    super
  end
  model = models.captures.first.to_sym
  method = path.to_s.split("_").last

  if @@params.key?(model) && @@params[model][:method].include?(method)
    get_key = nil
    query = (args[:query].present? ? args[:query] : nil)
    fields = (args[:fields].present? ? args[:fields] : nil)
    params = (args[:params].present? ? args[:params] : {})
    case method
    when  "count"
      get_key = "count"
    when "search"
      req= @@params[model]
      query ||= req[:query]
      fields ||= req[:fields].gsub(/^\s*/,req[:prefix]+"_").gsub(/,\s*/,","+@@params[model][:prefix]+"_")
      fields= fields
      get_key = "data"
    when "info"
      query = nil
    when "update", "upload", "receipted", "shipped", "labelprinted", "add", "bulkupdate", "bulkupdatereceipted"
      get_key = "result"
    when "divide"
      get_key = "receive_order_id"
    when "checkconnect"
      fields = nil
      get_key = nil
    else
      super
    end
    self.post method: method, model: model, query: query, fields: fields, get_key: get_key, params: params
  else
    super
  end
end
post(method: nil , model: nil, query: nil, fields: nil, get_key: nil, params: {}) click to toggle source
# File lib/ne_api.rb, line 61
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?
    post_args = {access_token: @access_token, refresh_token: @refresh_token, fields: fields}.merge(query).merge(params)

  elsif fields.present?
    post_args =  {access_token: @access_token, refresh_token: @refresh_token, fields: fields}.merge(params)
  elsif query.present?
    post_args = {access_token: @access_token, refresh_token: @refresh_token}.merge(query).merge(params)
  else
    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?
  @access_token_end_date  = res["access_token_end_date"] if res["access_token_end_date"].present?
  @refresh_token_end_date  = res["refresh_token_end_date"] if res["refresh_token_end_date"].present?

  get_key.present? ? res[get_key]  : res
end
update_token() click to toggle source
# File lib/ne_api.rb, line 56
def update_token
  
end