// Copyright 2020 Ben Hills and the project contributors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'dart:io';

/// The key required when searching via PodcastIndex.org.
const podcastIndexKey = String.fromEnvironment('PINDEX_KEY', defaultValue: '');

/// The secret required when searching via PodcastIndex.org.
const podcastIndexSecret = String.fromEnvironment(
  'PINDEX_SECRET',
  defaultValue: '',
);

/// Allows a user to override the default user agent string.
const userAgentAppString = String.fromEnvironment(
  'USER_AGENT',
  defaultValue: '',
);

/// Link to a feedback form. This will be shown in the main overflow menu if set
const feedbackUrl = String.fromEnvironment('FEEDBACK_URL', defaultValue: '');

/// This class stores version information for PinePods, including project version and
/// build number. This is then used for user agent strings when interacting with
/// APIs and RSS feeds.
///
/// The user agent string can be overridden by passing in the USER_AGENT variable
/// using dart-define.
class Environment {
  static const _applicationName = 'Pinepods';
  static const _applicationUrl =
      'https://github.com/madeofpendletonwool/pinepods';
  static const _projectVersion = '0.8.1';
  static const _build = '20252203';

  static var _agentString = userAgentAppString;

  static String userAgent() {
    if (_agentString.isEmpty) {
      var platform =
          '${Platform.operatingSystem} ${Platform.operatingSystemVersion}'
              .trim();

      _agentString =
          '$_applicationName/$_projectVersion b$_build (phone;$platform) $_applicationUrl';
    }

    return _agentString;
  }

  static String get projectVersion => '$_projectVersion b$_build';
}
