Sha256: 7d82f661128985a5e7f33992c94fa680b21471d213de5ee1e2c4d16f04175feb

Contents?: true

Size: 1.96 KB

Versions: 3

Compression:

Stored size: 1.96 KB

Contents

module Oxidized
  module Output
    class Http < Output
      attr_reader :commitref

      def initialize
        super
        @cfg = Oxidized.config.output.http
      end

      def setup
        return unless @cfg.empty?

        Oxidized.asetus.user.output.http.user = 'Oxidized'
        Oxidized.asetus.user.output.http.pasword = 'secret'
        Oxidized.asetus.user.output.http.url = 'http://localhost/web-api/oxidized'
        Oxidized.asetus.save :user
        raise NoConfig, "no output http config, edit #{Oxidized::Config.configfile}"
      end

      require "net/http"
      require "uri"
      require "json"

      def store(node, outputs, opt = {})
        @commitref = nil
        uri = URI.parse @cfg.url
        http = Net::HTTP.new uri.host, uri.port
        # http.use_ssl = true if uri.scheme = 'https'
        req = Net::HTTP::Post.new(uri.request_uri, 'Content-Type' => 'application/json')
        req.basic_auth @cfg.user, @cfg.password
        req.body = generate_json(node, outputs, opt)
        response = http.request req

        case response.code.to_i
        when 200 || 201
          Oxidized.logger.info "Configuration http backup complete for #{node}"
          p [:success]
        when (400..499)
          Oxidized.logger.info "Configuration http backup for #{node} failed status: #{response.body}"
          p [:bad_request]
        when (500..599)
          p [:server_problems]
          Oxidized.logger.info "Configuration http backup for #{node} failed status: #{response.body}"
        end
      end

      private

      def generate_json(node, outputs, opt)
        JSON.pretty_generate(
          'msg'    => opt[:msg],
          'user'   => opt[:user],
          'email'  => opt[:email],
          'group'  => opt[:group],
          'node'   => node,
          'config' => outputs.to_cfg
          # actually we need to also iterate outputs, for other types like in gitlab. But most people don't use 'type' functionality.
        )
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
oxidized-0.32.1 lib/oxidized/output/http.rb
oxidized-0.32.0 lib/oxidized/output/http.rb
oxidized-0.31.0 lib/oxidized/output/http.rb