lib/flexmls_api/faraday.rb in flexmls_api-0.6.5 vs lib/flexmls_api/faraday.rb in flexmls_api-0.7.0

- old
+ new

@@ -1,20 +1,30 @@ module FlexmlsApi module FaradayExt #=Flexmls API Faraday middleware # HTTP Response after filter to package api responses and bubble up basic api errors. class FlexmlsMiddleware < Faraday::Response::ParseJson - + include FlexmlsApi::PaginateHelper # Handles pretty much all the api response parsing and error handling. All responses that # indicate a failure will raise a FlexmlsApi::ClientError exception def on_complete(finished_env) body = parse(finished_env[:body]) FlexmlsApi.logger.debug("Response Body: #{body.inspect}") unless body.is_a?(Hash) && body.key?("D") raise InvalidResponse, "The server response could not be understood" end response = ApiResponse.new body + paging = response.pagination + if paging.nil? + results = response + else + if finished_env[:url].query_values["_pagination"] == "count" + results = paging['TotalRows'] + else + results = paginate_response(response, paging) + end + end case finished_env[:status] when 400, 409 raise BadResourceRequest, {:message => response.message, :code => response.code, :status => finished_env[:status]} when 401 # Handle the WWW-Authenticate Response Header Field if present. This can be returned by @@ -31,10 +41,10 @@ when 200..299 FlexmlsApi.logger.debug("Success!") else raise ClientError, {:message => response.message, :code => response.code, :status => finished_env[:status]} end - finished_env[:body] = response + finished_env[:body] = results end def initialize(app) super(app) end