require 'faraday' module ApigeeCli class Base attr_accessor :org, :environment def initialize(environment = nil) @username = ApigeeCli.configuration.username @password = ApigeeCli.configuration.password @org = ApigeeCli.configuration.org @environment = environment || ApigeeCli.configuration.environment end def get(url, params = {}) conn = Faraday.new(url: url) conn.basic_auth(@username, @password) conn.get do |request| request.params = params end end def upload_file(url, file) conn = Faraday.new(url: url) conn.basic_auth(@username, @password) conn.post do |request| request.headers['Content-Type'] = "application/octet-stream" request.headers['Content-Length'] = File.size(file).to_s request.body = Faraday::UploadIO.new(file, 'text/plain') end end def post(url, body) conn = Faraday.new(url: url) conn.basic_auth(@username, @password) conn.post do |request| request.headers['Content-Type'] = "application/json" request.body = body.to_json end end def put(url, body) conn = Faraday.new(url: url) conn.basic_auth(@username, @password) conn.put do |request| request.headers['Content-Type'] = "application/json" request.body = body.to_json end end def delete(url) conn = Faraday.new(url: url) conn.basic_auth(@username, @password) conn.delete end def response_error(response) raise "Response Error: #{response.status} #{response.body}" end end end