lib/acumatica/client.rb in acumatica-0.2.1 vs lib/acumatica/client.rb in acumatica-0.3.0
- old
+ new
@@ -1,42 +1,71 @@
+# frozen_string_literal: true
+
+require "faraday"
+require "faraday"
+require "faraday_middleware"
+require "faraday-cookie_jar"
+require "singleton"
+
module Acumatica
class Client
include Singleton
- API_VERSION = "6.00.001".freeze
+ API_VERSION = "6.00.001"
- attr_accessor :url, :name, :password, :token
+ attr_accessor :url, :name, :password, :token, :debug
def self.configure
yield(instance)
instance
end
+ def base_url
+ @base_url ||= URI.join(url, "entity/Default/#{API_VERSION}/")
+ end
+
def connection
@connection ||= Faraday.new do |conn|
conn.request :json
if token
conn.request :oauth2, token
else
conn.use :cookie_jar
end
+ conn.use Acumatica::ErrorHandler
conn.response :json
+ conn.response :logger, nil, bodies: true if debug
conn.adapter Faraday.default_adapter
end
end
+ def session
+ login
+ result = yield
+ logout
+ result
+ end
+
def login
response = connection.post do |req|
req.url URI.join(@url, "/entity/auth/login")
req.body = { name: @name, password: @password }
end
response.success?
end
def logout
connection.post(URI.join(@url, "/entity/auth/logout")).success?
+ end
+
+ def customers
+ Acumatica::Customer
+ end
+
+ def sales_orders
+ Acumatica::SalesOrder
end
def stock_items
Acumatica::StockItem
end