class RestApiService < ApplicationService private def base_url raise NotImplementedError end def headers raise NotImplementedError end def endpoint_url(path) "#{base_url}/#{path.gsub(/^\//, '')}" end def parse_responses? true end def get(path, params = {}) res = Faraday.get endpoint_url(path), params, headers parse_responses? ? JSON.parse(res.body) : res end def post(path, payload) res = Faraday.post endpoint_url(path), payload.to_json, headers parse_responses? ? JSON.parse(res.body) : res end end