146 lines
5.1 KiB
GDScript3
146 lines
5.1 KiB
GDScript3
|
|
@tool
|
||
|
|
extends RefCounted
|
||
|
|
|
||
|
|
## Utilitiy Node for Inspector to calling API functionallity at any point
|
||
|
|
|
||
|
|
const EDITOR_OAUTH_TOKEN: String = "user://editor_oauth_token.tres"
|
||
|
|
const EDITOR_OAUTH_SETTING: String = "user://editor_oauth_setting.tres"
|
||
|
|
const GAME_OAUTH_TOKEN: String = "res://twitch_oauth_token.tres"
|
||
|
|
const GAME_OAUTH_SETTING: String = "res://twitch_oauth_setting.tres"
|
||
|
|
const TWITCH_DEFAULT_SCOPE: String = "res://addons/twitcher/auth/preset_overlay_scopes.tres"
|
||
|
|
|
||
|
|
const PRESET_GAME: StringName = &"Game"
|
||
|
|
const PRESET_OVERLAY: StringName = &"Overlay"
|
||
|
|
const PRESET_OTHER: StringName = &"Other"
|
||
|
|
|
||
|
|
static var _editor_oauth_token_property: ProjectSettingProperty
|
||
|
|
static var editor_oauth_token: OAuthToken:
|
||
|
|
set(val):
|
||
|
|
editor_oauth_token = val
|
||
|
|
_editor_oauth_token_property.set_val(val.resource_path)
|
||
|
|
|
||
|
|
static var _editor_oauth_setting_property: ProjectSettingProperty
|
||
|
|
static var editor_oauth_setting: OAuthSetting:
|
||
|
|
set(val):
|
||
|
|
editor_oauth_setting = val
|
||
|
|
_editor_oauth_setting_property.set_val(val.resource_path)
|
||
|
|
|
||
|
|
static var _game_oauth_token_property: ProjectSettingProperty
|
||
|
|
static var game_oauth_token: OAuthToken:
|
||
|
|
set(val):
|
||
|
|
game_oauth_token = val
|
||
|
|
_game_oauth_token_property.set_val(val.resource_path)
|
||
|
|
|
||
|
|
static var _game_oauth_setting_property: ProjectSettingProperty
|
||
|
|
static var game_oauth_setting: OAuthSetting:
|
||
|
|
set(val):
|
||
|
|
game_oauth_setting = val
|
||
|
|
_game_oauth_setting_property.set_val(val.resource_path)
|
||
|
|
|
||
|
|
static var _scope_property: ProjectSettingProperty
|
||
|
|
static var scopes: TwitchOAuthScopes:
|
||
|
|
set(val):
|
||
|
|
scopes = val
|
||
|
|
_scope_property.set_val(val.resource_path)
|
||
|
|
|
||
|
|
static var _show_setup_on_startup: ProjectSettingProperty
|
||
|
|
static var show_setup_on_startup: bool:
|
||
|
|
set(val): _show_setup_on_startup.set_val(val)
|
||
|
|
get: return _show_setup_on_startup.get_val()
|
||
|
|
|
||
|
|
static var _project_preset: ProjectSettingProperty
|
||
|
|
static var project_preset: StringName:
|
||
|
|
set(val): _project_preset.set_val(val)
|
||
|
|
get: return _project_preset.get_val()
|
||
|
|
|
||
|
|
static var _initialized: bool
|
||
|
|
|
||
|
|
|
||
|
|
static func setup() -> void:
|
||
|
|
if not _initialized:
|
||
|
|
_initialized = true
|
||
|
|
_setup_project_settings()
|
||
|
|
_reload_setting()
|
||
|
|
|
||
|
|
|
||
|
|
static func _setup_project_settings() -> void:
|
||
|
|
_editor_oauth_token_property = ProjectSettingProperty.new("twitcher/editor/editor_oauth_token", EDITOR_OAUTH_TOKEN)
|
||
|
|
_editor_oauth_token_property.as_file("*.res,*.tres")
|
||
|
|
|
||
|
|
_editor_oauth_setting_property = ProjectSettingProperty.new("twitcher/editor/editor_oauth_setting", EDITOR_OAUTH_SETTING)
|
||
|
|
_editor_oauth_setting_property.as_file("*.res,*.tres")
|
||
|
|
|
||
|
|
_game_oauth_token_property = ProjectSettingProperty.new("twitcher/editor/game_oauth_token", GAME_OAUTH_TOKEN)
|
||
|
|
_game_oauth_token_property.as_file("*.res,*.tres")
|
||
|
|
|
||
|
|
_game_oauth_setting_property = ProjectSettingProperty.new("twitcher/editor/game_oauth_setting", GAME_OAUTH_SETTING)
|
||
|
|
_game_oauth_setting_property.as_file("*.res,*.tres")
|
||
|
|
|
||
|
|
_scope_property = ProjectSettingProperty.new("twitcher/editor/default_scopes", TWITCH_DEFAULT_SCOPE)
|
||
|
|
_scope_property.as_file("*.res,*.tres")
|
||
|
|
|
||
|
|
_show_setup_on_startup = ProjectSettingProperty.new("twitcher/editor/show_setup_on_startup", true)
|
||
|
|
|
||
|
|
_project_preset = ProjectSettingProperty.new("twitcher/editor/project_preset")
|
||
|
|
_project_preset.as_select([PRESET_GAME, PRESET_OVERLAY, PRESET_OTHER], false)
|
||
|
|
|
||
|
|
|
||
|
|
static func _reload_setting() -> void:
|
||
|
|
editor_oauth_setting = load(_editor_oauth_setting_property.get_val())
|
||
|
|
editor_oauth_token = load(_editor_oauth_token_property.get_val())
|
||
|
|
game_oauth_setting = load(_game_oauth_setting_property.get_val())
|
||
|
|
game_oauth_token = load(_game_oauth_token_property.get_val())
|
||
|
|
|
||
|
|
var editor_oauth_token_path: String = _editor_oauth_token_property.get_val()
|
||
|
|
if editor_oauth_token_path:
|
||
|
|
if not FileAccess.file_exists(editor_oauth_token_path):
|
||
|
|
_create_editor_oauth_token()
|
||
|
|
|
||
|
|
var editor_oauth_setting_path: String = _editor_oauth_setting_property.get_val()
|
||
|
|
if editor_oauth_setting_path:
|
||
|
|
if not FileAccess.file_exists(editor_oauth_setting_path):
|
||
|
|
_create_editor_oauth_setting()
|
||
|
|
|
||
|
|
var scope_path: String = get_scope_path()
|
||
|
|
if scope_path and FileAccess.file_exists(scope_path):
|
||
|
|
scopes = load(scope_path)
|
||
|
|
|
||
|
|
|
||
|
|
static func save_editor_oauth_setting() -> void:
|
||
|
|
ResourceSaver.save(editor_oauth_setting)
|
||
|
|
|
||
|
|
|
||
|
|
static func save_editor_oauth_token() -> void:
|
||
|
|
ResourceSaver.save(editor_oauth_token)
|
||
|
|
|
||
|
|
|
||
|
|
static func get_scope_path() -> String:
|
||
|
|
return _scope_property.get_val()
|
||
|
|
|
||
|
|
|
||
|
|
static func set_scope_path(path: String) -> void:
|
||
|
|
_scope_property.set_val(path)
|
||
|
|
|
||
|
|
|
||
|
|
static func is_valid() -> bool:
|
||
|
|
var token_valid = is_instance_valid(editor_oauth_token) && editor_oauth_token.is_token_valid()
|
||
|
|
var setting_valid = is_instance_valid(editor_oauth_setting) && editor_oauth_setting.is_valid()
|
||
|
|
return token_valid && setting_valid
|
||
|
|
|
||
|
|
|
||
|
|
static func _create_editor_oauth_token() -> void:
|
||
|
|
var path: String = _editor_oauth_token_property.get_val()
|
||
|
|
var token = OAuthToken.new()
|
||
|
|
token._identifier = "EditorToken"
|
||
|
|
token.take_over_path(path)
|
||
|
|
editor_oauth_token = token
|
||
|
|
save_editor_oauth_token()
|
||
|
|
|
||
|
|
|
||
|
|
static func _create_editor_oauth_setting() -> void:
|
||
|
|
var path: String = _editor_oauth_setting_property.get_val()
|
||
|
|
var setting = TwitchAuth.create_default_oauth_setting()
|
||
|
|
setting.take_over_path(path)
|
||
|
|
editor_oauth_setting = setting
|
||
|
|
save_editor_oauth_setting()
|