module AmocrmRails

Constants

VERSION

Public Class Methods

add_reader(name) click to toggle source
# File lib/amocrm-rails.rb, line 69
def add_reader(name)
  define_singleton_method(name) do |*args|
    send("#{name}_setting").value(*args)
  end
end
add_writer(name, type) click to toggle source
# File lib/amocrm-rails.rb, line 75
def add_writer(name, type)
  define_singleton_method("#{name}=") do |value|
    send("#{name}_setting=", DynamicSetting.build(value, type))
  end
end
generate_access_token(**options) click to toggle source
# File lib/amocrm-rails.rb, line 11
def generate_access_token(**options)
  user_id = AmocrmRails.try(:user_id)
  client_id = options[:client_id] || AmocrmRails.client_id
  client_secret = options[:client_secret] || AmocrmRails.client_secret
  refresh_token = options[:refresh_token] || AmocrmRails.try(:refresh_token)
  count = options[:count].to_i
  params = {
    client_id: client_id,
    client_secret: client_secret,
  }
  if refresh_token.present?
    params[:grant_type] = 'refresh_token'
    params[:refresh_token] = refresh_token
  else
    params[:grant_type] = 'authorization_code'
    params[:code] = AmocrmRails.code
  end
  params[:redirect_uri] = AmocrmRails.redirect_uri
  response = Faraday.post(AmocrmRails.url_token, params.to_json, "Content-Type" => "application/json")
  if AmocrmRails::Request.debug
    logger = AmocrmRails::Request.logger || ::Logger.new(STDOUT)
    logger.info "---generate_access_token---"
    logger.info "params: #{params}"
    logger.info "Responding with #{response.status.inspect} => #{response.body.inspect}"
  end
  if response.status >= 200 && response.status <= 204
    response_token = JSON.parse(response.body)
    data = YAML.load_file("config/amocrm_token.yml")
    response_token.each do |k, v|
      if user_id.present?
        data[user_id] = {} if data[user_id].nil?
        data[user_id][k] = v
      else
        data[k] = v
      end
      AmocrmRails::register(k.underscore.to_sym, v)
    end
    File.open("config/amocrm_token.yml", 'w') { |f| YAML.dump(data, f) }
  elsif count < 3 && AmocrmRails.try(:refresh_token).present?
    AmocrmRails.generate_access_token(client_id: client_id,
                                      client_secret: client_secret,
                                      refresh_token:AmocrmRails.refresh_token,
                                      count: count+1)
  end
end
register(name, value, type = nil) click to toggle source
# File lib/amocrm-rails.rb, line 61
def register(name, value, type = nil)
  cattr_accessor "#{name}_setting".to_sym

  add_reader(name)
  add_writer(name, type)
  send "#{name}=", value
end
setup() { |self| ... } click to toggle source
# File lib/amocrm-rails.rb, line 57
def setup
  yield self
end