Initial Commit
Initial commit of Code Base.
This commit is contained in:
parent
293b1213e1
commit
c11a4ebbc2
653 changed files with 36893 additions and 1 deletions
115
addons/twitcher/lib/oOuch/oauth_setting_inspector.gd
Normal file
115
addons/twitcher/lib/oOuch/oauth_setting_inspector.gd
Normal file
|
|
@ -0,0 +1,115 @@
|
|||
@tool
|
||||
extends EditorInspectorPlugin
|
||||
|
||||
const BufferedHttpClient = preload("res://addons/twitcher/lib/http/buffered_http_client.gd")
|
||||
const EncryptionKeyProvider: CryptoKeyProvider = preload("res://addons/twitcher/lib/oOuch/default_key_provider.tres")
|
||||
|
||||
|
||||
func _can_handle(object: Object) -> bool:
|
||||
return object is OAuthSetting
|
||||
|
||||
|
||||
func _parse_property(object: Object, type: Variant.Type, name: String, hint_type: PropertyHint, hint_string: String, usage_flags: int, wide: bool) -> bool:
|
||||
if name == "well_known_url":
|
||||
add_property_editor("well_known_url", WellKnownUriProperty.new())
|
||||
return true
|
||||
if name == "client_id":
|
||||
add_property_editor("client_secret", SecretProperty.new(), true, "Client Secret")
|
||||
return false
|
||||
|
||||
|
||||
class SecretProperty extends EditorProperty:
|
||||
var _line_edit: LineEdit = LineEdit.new()
|
||||
|
||||
|
||||
func _init() -> void:
|
||||
_line_edit.secret = true
|
||||
_line_edit.text_submitted.connect(_on_text_changed)
|
||||
_line_edit.focus_exited.connect(_on_focus_exited)
|
||||
add_child(_line_edit)
|
||||
add_focusable(_line_edit)
|
||||
|
||||
|
||||
func _update_property() -> void:
|
||||
var secret = get_edited_object()[get_edited_property()]
|
||||
|
||||
if secret == "": _line_edit.text = ""
|
||||
var value_raw := Marshalls.base64_to_raw(secret)
|
||||
var value_bytes := EncryptionKeyProvider.decrypt(value_raw)
|
||||
_line_edit.text = value_bytes.get_string_from_utf8()
|
||||
|
||||
|
||||
func _on_focus_exited() -> void:
|
||||
_save()
|
||||
|
||||
|
||||
func _on_text_changed(_new_text: String) -> void:
|
||||
_save()
|
||||
|
||||
|
||||
func _save() -> void:
|
||||
var plain_value = _line_edit.text
|
||||
if plain_value == "":
|
||||
emit_changed(get_edited_property(), "")
|
||||
return
|
||||
var encrypted_value := EncryptionKeyProvider.encrypt(plain_value.to_utf8_buffer())
|
||||
emit_changed(get_edited_property(), Marshalls.raw_to_base64(encrypted_value))
|
||||
|
||||
|
||||
class WellKnownUriProperty extends EditorProperty:
|
||||
var _url_regex = RegEx.create_from_string("((https?://)?([^:/]+))(:([0-9]+))?(/.*)?")
|
||||
|
||||
var _container: VBoxContainer
|
||||
var _well_known_url: LineEdit
|
||||
var _submit: Button
|
||||
var _client: BufferedHttpClient
|
||||
|
||||
func _init() -> void:
|
||||
_container = VBoxContainer.new()
|
||||
_client = BufferedHttpClient.new()
|
||||
_client.name = "OauthSettingInspectorClient"
|
||||
add_child(_client)
|
||||
|
||||
_well_known_url = LineEdit.new()
|
||||
_well_known_url.placeholder_text = "https://id.twitch.tv/oauth2/.well-known/openid-configuration"
|
||||
_well_known_url.text_changed.connect(_on_text_changed)
|
||||
add_focusable(_well_known_url)
|
||||
_container.add_child(_well_known_url)
|
||||
|
||||
_submit = Button.new()
|
||||
_submit.pressed.connect(_on_submit_clicked)
|
||||
_submit.text = "Update URIs"
|
||||
_container.add_child(_submit)
|
||||
add_focusable(_submit)
|
||||
add_child(_container)
|
||||
|
||||
|
||||
func _on_text_changed(new_text: String) -> void:
|
||||
emit_changed(get_edited_property(), new_text)
|
||||
|
||||
|
||||
func _update_property() -> void:
|
||||
_well_known_url.text = get_edited_object()[get_edited_property()]
|
||||
|
||||
|
||||
func load_from_wellknown(wellknow_url: String) -> void:
|
||||
var request = _client.request(wellknow_url, HTTPClient.METHOD_GET, {}, "")
|
||||
var response = await _client.wait_for_request(request) as BufferedHttpClient.ResponseData
|
||||
var json = JSON.parse_string(response.response_data.get_string_from_utf8())
|
||||
|
||||
var device_code = json.get("device_authorization_endpoint", "")
|
||||
if device_code != "":
|
||||
emit_changed(&"device_authorization_url", device_code)
|
||||
var token_endpoint = json["token_endpoint"]
|
||||
if token_endpoint != "":
|
||||
emit_changed(&"token_url", token_endpoint)
|
||||
var authorization_endpoint = json["authorization_endpoint"]
|
||||
if authorization_endpoint != "":
|
||||
emit_changed(&"authorization_url", authorization_endpoint)
|
||||
|
||||
|
||||
func _on_submit_clicked() -> void:
|
||||
_submit.disabled = true
|
||||
var wellknownurl = _well_known_url.text if _well_known_url.text != "" else _well_known_url.placeholder_text
|
||||
await load_from_wellknown(wellknownurl)
|
||||
_submit.disabled = false
|
||||
Loading…
Add table
Add a link
Reference in a new issue