lib/smartsheet/api/request_spec.rb in smartsheet-1.0.0 vs lib/smartsheet/api/request_spec.rb in smartsheet-1.1.0

- old
+ new

@@ -1,44 +1,57 @@ -require 'json' -require 'awrence' - -module Smartsheet - module API - # Specification for a single API request's arguments - class RequestSpec - attr_reader :file_spec, :url_args, :params, :header_overrides, :body, :filename, :content_type - private :file_spec - - def initialize(params: {}, header_overrides: {}, body: nil, file_spec: nil, **url_args) - @url_args = url_args - @params = params - @header_overrides = header_overrides - @body = body - @file_spec = file_spec - end - - def filename - file_spec.filename - end - - def content_type - file_spec.content_type - end - - def file_length - file_spec.file_length - end - - def json_body - if body.nil? || body.is_a?(String) - body - else - body.to_camelback_keys.to_json - end - end - - def file_body - file_spec.upload_io - end - end - end -end \ No newline at end of file +require 'json' +require 'awrence' + +module Smartsheet + module API + # Specification for a single API request's arguments + class RequestSpec + attr_reader :file_spec, :url_args, :params, :header_overrides, :body + private :file_spec + + # @param params [Hash{Object=>Object}] URL parameters for the request + # + # @param header_overrides [Hash{Object=>Object}] HTTP headers to sent in the request; these + # override all default headers sent by the SDK and the particular endpoint + # + # @param body [Object] The body of the HTTP request, to be interpreted based on the endpoint + # specification + # + # @param file_spec [PathFileSpec, ObjectFileSpec] Specification for files, to be used when + # an endpoint requires a file upload + # + # @param **url_args [Hash{Symbol=>Object}] Values that will be used to fill in parameterized + # segments of an endpoint path specificaiton + def initialize(params: {}, header_overrides: {}, body: nil, file_spec: nil, **url_args) + @url_args = url_args + @params = params + @header_overrides = header_overrides + @body = body + @file_spec = file_spec + end + + def filename + file_spec.filename + end + + def content_type + file_spec.content_type + end + + def file_length + file_spec.file_length + end + + def json_body + if body.nil? || body.is_a?(String) + body + else + body.to_camelback_keys.to_json + end + end + + def file_body + file_spec.upload_io + end + end + end +end