Sha256: f4c4e1fc28daefe083d499d2ca0003bd1fa06925b5dc3f31a477526bbfc28094

Contents?: true

Size: 981 Bytes

Versions: 2

Compression:

Stored size: 981 Bytes

Contents

class SiteHub
  class ConfigServer
    BAD_JSON_MSG = 'Illegal JSON returned from config server: %s'.freeze
    UNABLE_TO_CONTACT_SERVER_MSG = 'Unabled to contact server: %s'.freeze
    NON_200_RESPONSE_MSG = 'Config server did not respond with a 200, got %s'.freeze

    class Error < StandardError
    end

    attr_reader :server_url, :http_client
    def initialize(url)
      @server_url = url
      @http_client = Faraday.new(ssl: { verify: false }) do |con|
        con.adapter :em_synchrony
      end
    end

    def get
      response = http_client.get(server_url)
      raise Error, NON_200_RESPONSE_MSG % response.status unless response.status == 200
      parse_response(response.body)
    rescue Faraday::Error => e
      raise Error, UNABLE_TO_CONTACT_SERVER_MSG % e.message
    end

    def parse_response(response_body)
      JSON(response_body, symbolize_names: true)
    rescue JSON::ParserError
      raise Error, BAD_JSON_MSG % response_body
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sitehub-0.5.0.alpha10 lib/sitehub/config_server.rb
sitehub-0.5.0.alpha8 lib/sitehub/config_server.rb