# frozen_string_literal: true module Configuration KNOWN_SERVICES = %i[twitter tumblr wordpress].freeze module Methods def pod_uri return @pod_uri.dup unless @pod_uri.nil? url = environment.url.get begin @pod_uri = Addressable::URI.heuristic_parse(url) rescue puts "WARNING: pod url #{url} is not a legal URI" end @pod_uri.scheme = "https" if environment.require_ssl? @pod_uri.path = "/" @pod_uri.dup end # @param path [String] # @return [String] def url_to(path) pod_uri.tap {|uri| uri.path = path }.to_s end def bare_pod_uri pod_uri.authority.gsub('www.', '') end def configured_services return @configured_services unless @configured_services.nil? @configured_services = [] KNOWN_SERVICES.each do |service| @configured_services << service if services.send(service).enable? end @configured_services end attr_writer :configured_services def show_service?(service, user) return false unless self["services.#{service}.enable"] # Return true only if 'authorized' is true or equal to user username (user && self["services.#{service}.authorized"] == user.username) || self["services.#{service}.authorized"] == true end def local_posts_stream?(user) return true if settings.enable_local_posts_stream == "admins" && user.admin? return true if settings.enable_local_posts_stream == "moderators" && user.moderator? settings.enable_local_posts_stream == "everyone" end def secret_token if heroku? return ENV["SECRET_TOKEN"] if ENV["SECRET_TOKEN"] warn "FATAL: Running on Heroku with SECRET_TOKEN unset" warn " Run heroku config:add SECRET_TOKEN=#{SecureRandom.hex(40)}" abort else token_file = File.expand_path( "../config/initializers/secret_token.rb", File.dirname(__FILE__) ) system "DISABLE_SPRING=1 bin/rake generate:secret_token" unless File.exist? token_file require token_file Diaspora::Application.config.secret_key_base end end def version_string return @version_string unless @version_string.nil? @version_string = version.number.to_s @version_string = "#{@version_string}-p#{git_revision[0..7]}" if git_available? @version_string end def git_available? return @git_available unless @git_available.nil? if heroku? @git_available = false else `which git` `git status 2> /dev/null` if $?.success? @git_available = $?.success? end end def git_revision get_git_info if git_available? @git_revision end def git_update get_git_info if git_available? @git_update end def rails_asset_id (git_revision || version)[0..8] end def get_redis_options redis_url = ENV["REDIS_URL"] || environment.redis.get return {} unless redis_url.present? unless redis_url.start_with?("redis://", "unix:///") warn "WARNING: Your redis url (#{redis_url}) doesn't start with redis:// or unix:///" end {url: redis_url} end def sidekiq_log path = Pathname.new environment.sidekiq.log.get path = Rails.root.join(path) unless path.absolute? path.to_s end def postgres? ActiveRecord::Base.connection.adapter_name == "PostgreSQL" end def mysql? ActiveRecord::Base.connection.adapter_name == "Mysql2" end def bitcoin_donation_address if AppConfig.settings.bitcoin_address.present? AppConfig.settings.bitcoin_address end end private def get_git_info return if git_info_present? || !git_available? git_cmd = `git log -1 --pretty="format:%H %ci"` if git_cmd =~ /^(\w+?)\s(.+)$/ @git_revision = $1 @git_update = $2.strip end end def git_info_present? @git_revision || @git_update end end end