Sha256: c33c9a9aac572e9eab971902972a8ca72f80af8fd70138bac25f2949c5dafcb2
Contents?: true
Size: 1.79 KB
Versions: 1
Compression:
Stored size: 1.79 KB
Contents
# frozen_string_literal: true require 'concurrent/array' require 'concurrent/atomic/event' require 'net/http' module Infield module DeprecationWarning Task = Struct.new(:message, :callstack) module Runner class << self def event @event ||= Concurrent::Event.new end def tasks @tasks ||= Concurrent::Array.new end def run Thread.new do loop do event.wait deliver event.reset end end end private def default_api_params { repo_environment_id: Infield.repo_environment_id, environment: Infield.environment } end def infield_api_uri URI.parse(Infield.infield_api_url) end def upload_message(task) uri = infield_api_uri Net::HTTP.start(uri.host, uri.port, use_ssl: (uri.scheme == 'https')) do |http| http.post('/api/raw_deprecation_warnings', default_api_params.merge(message: task.message).to_json, { 'Content-Type' => 'application/json', 'Authorization' => "bearer #{Infield.api_key}" }) end end def deliver while (task = tasks.shift) upload_message(task) end end end end class << self def log(*messages, callstack: nil, validated: false) messages = messages.select(&method(:valid_message)) unless validated messages.each { |message| tasks << Task.new(message, callstack) } Runner.event.set end private delegate :tasks, to: 'Infield::DeprecationWarning::Runner' def valid_message(message) message =~ /(?:^|\W)deprecated(?:$|\W)/i end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
infield-0.1.4 | lib/infield/deprecation_warning.rb |