Sha256: c1e1cd84509ddf6c024b1b8c415c9b4dc5eee4a3974f2369381f93c09b9d90df
Contents?: true
Size: 1.37 KB
Versions: 2
Compression:
Stored size: 1.37 KB
Contents
# frozen_string_literal: true require "excon" module DiscoursePluginStatistics class Statistics def self.update! new.update end def update ::Excon.post( DiscoursePluginStatistics.server_url, headers: { "Content-Type" => "application/json" }, body: { discourse: discourse, plugins: plugins }.to_json ) end protected def discourse @discourse ||= DiscoursePluginStatistics::Discourse.new.json end def plugins @plugins ||= Dir["#{DiscoursePluginStatistics.root}/plugins/*/plugin.rb"].sort.each_with_object([]) do |path, result| source = File.read(path) metadata = ::Plugin::Metadata.parse(source) next unless collect_plugin_statistics?(metadata) plugin_dir = File.dirname(path) plugin = DiscoursePluginStatistics::Plugin.new(metadata.name, plugin_dir) result << plugin.json end end def collect_plugin_statistics?(metadata) github_org = github_org_from_github_url(metadata.url) github_org && github_org === "paviliondev" end def github_org_from_github_url(url) path = path_from_url(url) path && path.split("/").reject(&:empty?).first end def path_from_url(url) url && Addressable::URI.parse(url).path rescue Addressable::URI::InvalidURIError nil end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
discourse_plugin_statistics-0.1.0.pre2 | lib/discourse_plugin_statistics/statistics.rb |
discourse_plugin_statistics-0.1.0.pre1 | lib/discourse_plugin_statistics/statistics.rb |