def api_call(path, args = {}, verb = 'get', options = {}, &post_processing)
      pre_call = options[:pre_call]
      pre_call_args = {path: path, args: args, verb: verb}
      pre_call_result = pre_call.call(pre_call_args) unless pre_call.nil?
      result = pre_call_result || api(path, args, verb, options) do |response|
        error = check_response(response.code, response.body)
        raise error if error
      end

      post_call = options[:post_call]
      post_call.call(result, pre_call_args) unless post_call.nil?

      # now process as appropriate for the given call (get picture header, etc.)
      post_processing ? post_processing.call(result) : result
    end
def api_call(path, args = {}, verb = 'get', options = {}, &post_processing)
      pre_call = options[:pre_call]
      pre_call_args = {path: path, args: args, verb: verb}
      pre_call_result = pre_call.call(pre_call_args) unless pre_call.nil?
      result = pre_call_result || api(path, args, verb, options) do |response|
        error = check_response(response.code, response.body)
        raise error if error
      end

      post_call = options[:post_call]
      post_call.call(result, pre_call_args) unless post_call.nil?

      # now process as appropriate for the given call (get picture header, etc.)
      post_processing ? post_processing.call(result) : result
    end
Make a call directly to the Strava API.
 (See any of the other methods for example invocations.)

 @param path the Strava API path to query (no leading / needed)
 @param args (see #get_object)
 @param verb the type of HTTP request to make (get, post, delete, etc.)
 @param options request-related options, currently unused

 @yield response when making a batch API call, you can pass in a block
        that parses the results, allowing for cleaner code.
        The block's return value is returned in the batch results.

 @raise [Stava::Api::V3::APIError] if Strava returns an error

 @return the result from Strava