Sha256: 003a510e276b2e5b9a508521d6aaf5564e2620dbdaff184f52681eed92e93338
Contents?: true
Size: 1.6 KB
Versions: 1
Compression:
Stored size: 1.6 KB
Contents
# frozen_string_literal: true module BusinessCentral class WebService using Refinements::Strings DEFAULT_URL = 'https://api.businesscentral.dynamics.com/v2.0/production/ODataV4' attr_reader :url, :object_url def initialize(client:, **options) @client = client opts = options.dup @url = opts.delete(:url) || DEFAULT_URL end 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 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 def post(params = {}) raise InvalidObjectURLException if @object_url.to_s.blank? Object::Request.post( @client, build_url, params ) end def patch(params = {}) raise InvalidObjectURLException if @object_url.to_s.blank? object = get Object::Request.patch( @client, build_url, object[:etag], params ) end def delete raise InvalidObjectURLException if @object_url.to_s.blank? object = get Object::Request.delete( @client, build_url, object[:etag] ) end private def build_url(filter: '') Object::URLBuilder.new( base_url: "#{@url}/#{@object_url}", filter: filter ).build end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
business-central-2.0.0 | lib/business_central/web_service.rb |