Sha256: 2b5b35b8ee783b2e847ff248b6f3c361427a3c683efc7365cf4862fe37f0726e
Contents?: true
Size: 1.36 KB
Versions: 7
Compression:
Stored size: 1.36 KB
Contents
# frozen_string_literal: true module Motor module Configs module SyncWithRemote UnableToSync = Class.new(StandardError) ApiNotFound = Class.new(StandardError) module_function def call(remote_url, api_key) url = remote_url.sub(%r{/\z}, '') + Motor::Configs::SYNC_API_PATH sync_from_remote!(url, api_key) sync_to_remote!(url, api_key) end def sync_from_remote!(remote_url, api_key) response = Motor::NetHttpUtils.get(remote_url, {}, { 'X-Authorization' => api_key }) raise ApiNotFound if response.is_a?(Net::HTTPNotFound) raise UnableToSync, [response.message, response.body].join(': ') unless response.is_a?(Net::HTTPSuccess) configs_hash = JSON.parse(response.body) Motor::Configs::SyncFromHash.call(configs_hash) end def sync_to_remote!(remote_url, api_key) configs_hash = Motor::Configs::BuildConfigsHash.call response = Motor::NetHttpUtils.post( remote_url, {}, { 'X-Authorization' => api_key, 'Content-Type' => 'application/json' }, configs_hash.to_json ) raise ApiNotFound if response.is_a?(Net::HTTPNotFound) raise UnableToSync, [response.message, response.body].join(': ') unless response.is_a?(Net::HTTPSuccess) end end end end
Version data entries
7 entries across 7 versions & 1 rubygems