class BusinessCentral::WebService

Constants

DEFAULT_URL

Attributes

object_url[R]
url[R]

Public Class Methods

new(client:, **options) click to toggle source
# File lib/business_central/web_service.rb, line 9
def initialize(client:, **options)
  @client = client
  opts = options.dup
  @url = opts.delete(:url) || DEFAULT_URL
end

Public Instance Methods

delete() click to toggle source
# File lib/business_central/web_service.rb, line 58
def delete
  raise InvalidObjectURLException if @object_url.to_s.blank?

  object = get
  Object::Request.delete(
    @client,
    build_url,
    object[:etag]
  )
end
get(query = '', *values) click to toggle source
# File lib/business_central/web_service.rb, line 25
def get(query = '', *values)
  raise InvalidObjectURLException if @object_url.to_s.blank?

  Object::Request.get(
    @client,
    build_url(
      filter: Object::FilterQuery.sanitize(query, values)
    )
  )
end
object(object_url = '', *values) click to toggle source
# File lib/business_central/web_service.rb, line 15
def object(object_url = '', *values)
  if values.length.zero?
    @object_url = object_url
    return self
  end

  @object_url = Object::URLBuilder.sanitize(object_url, values)
  self
end
patch(params = {}) click to toggle source
# File lib/business_central/web_service.rb, line 46
def patch(params = {})
  raise InvalidObjectURLException if @object_url.to_s.blank?

  object = get
  Object::Request.patch(
    @client,
    build_url,
    object[:etag],
    params
  )
end
post(params = {}) click to toggle source
# File lib/business_central/web_service.rb, line 36
def post(params = {})
  raise InvalidObjectURLException if @object_url.to_s.blank?

  Object::Request.post(
    @client,
    build_url,
    params
  )
end

Private Instance Methods

build_url(filter: '') click to toggle source
# File lib/business_central/web_service.rb, line 71
def build_url(filter: '')
  Object::URLBuilder.new(
    base_url: "#{@url}/#{@object_url}",
    filter: filter
  ).build
end