diff --git a/Editor.meta b/Editor.meta
deleted file mode 100644
index 8543b50..0000000
--- a/Editor.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 806e06ea7f4e7444fbee6a0d073d0a01
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Editor/AppDependencies.xml b/Editor/AppDependencies.xml
deleted file mode 100755
index e770198..0000000
--- a/Editor/AppDependencies.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Assets/Firebase/m2repository
-
-
-
-
diff --git a/Editor/AppDependencies.xml.meta b/Editor/AppDependencies.xml.meta
deleted file mode 100644
index 75f860b..0000000
--- a/Editor/AppDependencies.xml.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 9b63af95d9364af4a3d8ce58738b6223
-labels:
-- gvh
-- gvh_version-10.3.0
-- gvhp_exportpath-Firebase/Editor/AppDependencies.xml
-timeCreated: 1480838400
-DefaultImporter:
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Editor/AuthDependencies.xml b/Editor/AuthDependencies.xml
deleted file mode 100755
index b81a83e..0000000
--- a/Editor/AuthDependencies.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Assets/Firebase/m2repository
-
-
-
-
diff --git a/Editor/AuthDependencies.xml.meta b/Editor/AuthDependencies.xml.meta
deleted file mode 100644
index 645c3f0..0000000
--- a/Editor/AuthDependencies.xml.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 2bec2bf8d84d4997ba2dd66263781f3d
-labels:
-- gvh
-- gvh_version-10.3.0
-- gvhp_exportpath-Firebase/Editor/AuthDependencies.xml
-timeCreated: 1480838400
-DefaultImporter:
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Editor/Firebase.Editor.dll b/Editor/Firebase.Editor.dll
deleted file mode 100755
index 89628f8..0000000
Binary files a/Editor/Firebase.Editor.dll and /dev/null differ
diff --git a/Editor/Firebase.Editor.dll.meta b/Editor/Firebase.Editor.dll.meta
deleted file mode 100644
index e3788d4..0000000
--- a/Editor/Firebase.Editor.dll.meta
+++ /dev/null
@@ -1,118 +0,0 @@
-fileFormatVersion: 2
-guid: 9f2edbf81053418f879076c05f816dc2
-labels:
-- gvh
-- gvh_targets-editor
-- gvh_version-10.3.0
-- gvhp_exportpath-Firebase/Editor/Firebase.Editor.dll
-PluginImporter:
- externalObjects: {}
- serializedVersion: 2
- iconMap: {}
- executionOrder: {}
- defineConstraints: []
- isPreloaded: 0
- isOverridable: 0
- isExplicitlyReferenced: 0
- validateReferences: 1
- platformData:
- - first:
- : Linux
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- : LinuxUniversal
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- : OSXIntel
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- : OSXIntel64
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- : Web
- second:
- enabled: 0
- settings: {}
- - first:
- : WebStreamed
- second:
- enabled: 0
- settings: {}
- - first:
- Android: Android
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Any:
- second:
- enabled: 0
- settings: {}
- - first:
- Editor: Editor
- second:
- enabled: 1
- settings:
- CPU: AnyCPU
- DefaultValueInitialized: true
- OS: AnyOS
- - first:
- Standalone: Linux64
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: OSXUniversal
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: Win
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: Win64
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Windows Store Apps: WindowsStoreApps
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- iPhone: iOS
- second:
- enabled: 0
- settings:
- CompileFlags:
- FrameworkDependencies:
- - first:
- tvOS: tvOS
- second:
- enabled: 0
- settings:
- CompileFlags:
- FrameworkDependencies:
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Editor/Firebase.Editor.pdb b/Editor/Firebase.Editor.pdb
deleted file mode 100755
index 2beb6e2..0000000
Binary files a/Editor/Firebase.Editor.pdb and /dev/null differ
diff --git a/Editor/Firebase.Editor.pdb.meta b/Editor/Firebase.Editor.pdb.meta
deleted file mode 100644
index b0a5e84..0000000
--- a/Editor/Firebase.Editor.pdb.meta
+++ /dev/null
@@ -1,13 +0,0 @@
-fileFormatVersion: 2
-guid: f2ceb9c446ee4196b6476d4978a416b6
-labels:
-- gvh
-- gvh_rename_to_disable
-- gvh_targets-editor
-- gvh_version-10.3.0
-- gvhp_exportpath-Firebase/Editor/Firebase.Editor.pdb
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Editor/FirebaseAuth_version-10.3.0_manifest.txt b/Editor/FirebaseAuth_version-10.3.0_manifest.txt
deleted file mode 100644
index 21e4dd6..0000000
--- a/Editor/FirebaseAuth_version-10.3.0_manifest.txt
+++ /dev/null
@@ -1,71 +0,0 @@
-Assets/Editor Default Resources/Firebase/fb_analytics.png
-Assets/Editor Default Resources/Firebase/fb_analytics_dark.png
-Assets/Editor Default Resources/Firebase/fb_auth.png
-Assets/Editor Default Resources/Firebase/fb_auth_dark.png
-Assets/Editor Default Resources/Firebase/fb_cloud_messaging.png
-Assets/Editor Default Resources/Firebase/fb_cloud_messaging_dark.png
-Assets/Editor Default Resources/Firebase/fb_config.png
-Assets/Editor Default Resources/Firebase/fb_config_dark.png
-Assets/Editor Default Resources/Firebase/fb_crashlytics.png
-Assets/Editor Default Resources/Firebase/fb_crashlytics_dark.png
-Assets/Editor Default Resources/Firebase/fb_database.png
-Assets/Editor Default Resources/Firebase/fb_database_dark.png
-Assets/Editor Default Resources/Firebase/fb_dynamic_links.png
-Assets/Editor Default Resources/Firebase/fb_dynamic_links_dark.png
-Assets/Editor Default Resources/Firebase/fb_functions.png
-Assets/Editor Default Resources/Firebase/fb_functions_dark.png
-Assets/Editor Default Resources/Firebase/fb_invites.png
-Assets/Editor Default Resources/Firebase/fb_invites_dark.png
-Assets/Editor Default Resources/Firebase/fb_storage.png
-Assets/Editor Default Resources/Firebase/fb_storage_dark.png
-Assets/Editor Default Resources/Firebase/firebase_lockup.png
-Assets/Editor Default Resources/Firebase/firebase_lockup_dark.png
-Assets/ExternalDependencyManager/Editor/1.2.175/Google.IOSResolver.dll
-Assets/ExternalDependencyManager/Editor/1.2.175/Google.IOSResolver.dll.mdb
-Assets/ExternalDependencyManager/Editor/1.2.175/Google.JarResolver.dll
-Assets/ExternalDependencyManager/Editor/1.2.175/Google.JarResolver.dll.mdb
-Assets/ExternalDependencyManager/Editor/1.2.175/Google.PackageManagerResolver.dll
-Assets/ExternalDependencyManager/Editor/1.2.175/Google.PackageManagerResolver.dll.mdb
-Assets/ExternalDependencyManager/Editor/1.2.175/Google.VersionHandlerImpl.dll
-Assets/ExternalDependencyManager/Editor/1.2.175/Google.VersionHandlerImpl.dll.mdb
-Assets/ExternalDependencyManager/Editor/CHANGELOG.md
-Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll
-Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll.mdb
-Assets/ExternalDependencyManager/Editor/LICENSE
-Assets/ExternalDependencyManager/Editor/README.md
-Assets/ExternalDependencyManager/Editor/external-dependency-manager_version-1.2.175_manifest.txt
-Assets/Firebase/Editor/AppDependencies.xml
-Assets/Firebase/Editor/AuthDependencies.xml
-Assets/Firebase/Editor/Firebase.Editor.dll
-Assets/Firebase/Editor/Firebase.Editor.pdb
-Assets/Firebase/Editor/generate_xml_from_google_services_json.exe
-Assets/Firebase/Editor/generate_xml_from_google_services_json.py
-Assets/Firebase/Editor/network_request.exe
-Assets/Firebase/Editor/network_request.py
-Assets/Firebase/Plugins/Firebase.App.dll
-Assets/Firebase/Plugins/Firebase.App.pdb
-Assets/Firebase/Plugins/Firebase.Auth.dll
-Assets/Firebase/Plugins/Firebase.Auth.pdb
-Assets/Firebase/Plugins/Firebase.Platform.dll
-Assets/Firebase/Plugins/Firebase.Platform.pdb
-Assets/Firebase/Plugins/Firebase.TaskExtension.dll
-Assets/Firebase/Plugins/Firebase.TaskExtension.pdb
-Assets/Firebase/Plugins/Google.MiniJson.dll
-Assets/Firebase/Plugins/iOS/Firebase.App.dll
-Assets/Firebase/Plugins/iOS/Firebase.App.pdb
-Assets/Firebase/Plugins/iOS/Firebase.Auth.dll
-Assets/Firebase/Plugins/iOS/Firebase.Auth.pdb
-Assets/Firebase/Plugins/x86_64/FirebaseCppApp-10_3_0.bundle
-Assets/Firebase/Plugins/x86_64/FirebaseCppApp-10_3_0.dll
-Assets/Firebase/Plugins/x86_64/FirebaseCppApp-10_3_0.so
-Assets/Firebase/Plugins/x86_64/FirebaseCppAuth.bundle
-Assets/Firebase/Plugins/x86_64/FirebaseCppAuth.dll
-Assets/Firebase/Plugins/x86_64/FirebaseCppAuth.so
-Assets/Firebase/m2repository/com/google/firebase/firebase-app-unity/10.3.0/firebase-app-unity-10.3.0.pom
-Assets/Firebase/m2repository/com/google/firebase/firebase-app-unity/10.3.0/firebase-app-unity-10.3.0.srcaar
-Assets/Firebase/m2repository/com/google/firebase/firebase-app-unity/maven-metadata.xml
-Assets/Firebase/m2repository/com/google/firebase/firebase-auth-unity/10.3.0/firebase-auth-unity-10.3.0.pom
-Assets/Firebase/m2repository/com/google/firebase/firebase-auth-unity/10.3.0/firebase-auth-unity-10.3.0.srcaar
-Assets/Firebase/m2repository/com/google/firebase/firebase-auth-unity/maven-metadata.xml
-Assets/Plugins/iOS/Firebase/libFirebaseCppApp.a
-Assets/Plugins/iOS/Firebase/libFirebaseCppAuth.a
diff --git a/Editor/FirebaseAuth_version-10.3.0_manifest.txt.meta b/Editor/FirebaseAuth_version-10.3.0_manifest.txt.meta
deleted file mode 100644
index 49ee98a..0000000
--- a/Editor/FirebaseAuth_version-10.3.0_manifest.txt.meta
+++ /dev/null
@@ -1,10 +0,0 @@
-fileFormatVersion: 2
-guid: e7c782cb27424ab6a09499e9edde5994
-labels:
-- gvh
-- gvh_manifest
-- gvh_version-10.3.0
-- gvhp_exportpath-Firebase/Editor/FirebaseAuth_version-10.3.0_manifest.txt
-- gvhp_manifestname-0Firebase Authentication
-- gvhp_manifestname-1FirebaseAuth
-timeCreated: 0
diff --git a/Editor/generate_xml_from_google_services_json.exe b/Editor/generate_xml_from_google_services_json.exe
deleted file mode 100755
index 3d26497..0000000
Binary files a/Editor/generate_xml_from_google_services_json.exe and /dev/null differ
diff --git a/Editor/generate_xml_from_google_services_json.exe.meta b/Editor/generate_xml_from_google_services_json.exe.meta
deleted file mode 100644
index 443143c..0000000
--- a/Editor/generate_xml_from_google_services_json.exe.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: ae88c0972b7448b5b36def1716f1d711
-labels:
-- gvh
-- gvh_version-10.3.0
-- gvhp_exportpath-Firebase/Editor/generate_xml_from_google_services_json.exe
-timeCreated: 1480838400
-DefaultImporter:
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Editor/generate_xml_from_google_services_json.py b/Editor/generate_xml_from_google_services_json.py
deleted file mode 100755
index 88dbb16..0000000
--- a/Editor/generate_xml_from_google_services_json.py
+++ /dev/null
@@ -1,496 +0,0 @@
-#!/usr/bin/python
-
-# Copyright 2016 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Stand-alone implementation of the Gradle Firebase plugin.
-
-Converts the services json file to xml:
-https://googleplex-android.googlesource.com/platform/tools/base/+/studio-master-dev/build-system/google-services/src/main/groovy/com/google/gms/googleservices
-"""
-
-__author__ = 'Wouter van Oortmerssen'
-
-import argparse
-import ctypes
-import json
-import os
-import platform
-import sys
-from xml.etree import ElementTree
-
-if platform.system().lower() == 'windows':
- import ctypes.wintypes # pylint: disable=g-import-not-at-top
-
-# Map Python 2's unicode method to encode a string as bytes in python 3.
-try:
- unicode('') # See whether unicode class is available (Python < 3)
-except NameError:
- unicode = str # pylint: disable=redefined-builtin,invalid-name
-
-# Input filename if it isn't set.
-DEFAULT_INPUT_FILENAME = 'app/google-services.json'
-# Output filename if it isn't set.
-DEFAULT_OUTPUT_FILENAME = 'res/values/googleservices.xml'
-# Input filename for .plist files, if it isn't set.
-DEFAULT_PLIST_INPUT_FILENAME = 'GoogleService-Info.plist'
-# Output filename for .json files, if it isn't set.
-DEFAULT_JSON_OUTPUT_FILENAME = 'google-services-desktop.json'
-
-OAUTH_CLIENT_TYPE_ANDROID_APP = 1
-OAUTH_CLIENT_TYPE_WEB = 3
-
-
-def read_xml_value(xml_node):
- """Utility method for reading values from the plist XML.
-
- Args:
- xml_node: An ElementTree node, that contains a value.
-
- Returns:
- The value of the node, or None, if it could not be read.
- """
- if xml_node.tag == 'string':
- return xml_node.text
- elif xml_node.tag == 'integer':
- return int(xml_node.text)
- elif xml_node.tag == 'real':
- return float(xml_node.text)
- elif xml_node.tag == 'false':
- return 0
- elif xml_node.tag == 'true':
- return 1
- else:
- # other types of input are ignored. (data, dates, arrays, etc.)
- return None
-
-
-def construct_plist_dictionary(xml_root):
- """Constructs a dictionary of values based on the contents of a plist file.
-
- Args:
- xml_root: An ElementTree node, that represents the root of the xml file
- that is to be parsed. (Which should be a dictionary containing
- key-value pairs of the properties that need to be extracted.)
-
- Returns:
- A dictionary, containing key-value pairs for all (supported) entries in the
- node.
- """
- xml_dict = xml_root.find('dict')
-
- if xml_dict is None:
- return None
-
- plist_dict = {}
- i = 0
- while i < len(xml_dict):
- if xml_dict[i].tag == 'key':
- key = xml_dict[i].text
- i += 1
- if i < len(xml_dict):
- value = read_xml_value(xml_dict[i])
- if value is not None:
- plist_dict[key] = value
- i += 1
-
- return plist_dict
-
-
-def update_dict_keys(key_map, input_dict):
- """Creates a dict from input_dict with the same values but new keys.
-
- Two dictionaries are passed to this function: the key_map that represents a
- mapping of source keys to destination keys, and the input_dict that is the
- dictionary that is to be duplicated, replacing any key that matches a source
- key with a destination key. Source keys that are not present in the
- input_dict will not have their destination key represented in the result.
-
- In other words, if key_map is `{'old': 'new', 'foo': 'bar'}`, and input_dict
- is `{'old': 10}`, the result will be `{'new': 10}`.
-
- Args:
- key_map (dict): A dictionary of strings to strings that maps source keys to
- destination keys.
- input_dict (dict): The dictionary of string keys to any value type, which
- is to be duplicated, replacing source keys with the corresponding
- destination keys from key_map.
-
- Returns:
- dict: A new dictionary with updated keys.
- """
- return {
- new_key: input_dict[old_key]
- for (old_key, new_key) in key_map.items()
- if old_key in input_dict
- }
-
-
-def construct_google_services_json(xml_dict):
- """Constructs a google services json file from a dictionary.
-
- Args:
- xml_dict: A dictionary of all the key/value pairs that are needed for the
- output json file.
- Returns:
- A string representing the output json file.
- """
-
- try:
- json_struct = {
- 'project_info':
- update_dict_keys(
- {
- 'GCM_SENDER_ID': 'project_number',
- 'DATABASE_URL': 'firebase_url',
- 'PROJECT_ID': 'project_id',
- 'STORAGE_BUCKET': 'storage_bucket'
- }, xml_dict),
- 'client': [{
- 'client_info': {
- 'mobilesdk_app_id': xml_dict['GOOGLE_APP_ID'],
- 'android_client_info': {
- 'package_name': xml_dict['BUNDLE_ID']
- }
- },
- 'oauth_client': [{
- 'client_id': xml_dict['CLIENT_ID'],
- }],
- 'api_key': [{
- 'current_key': xml_dict['API_KEY']
- }],
- 'services': {
- 'analytics_service': {
- 'status': xml_dict['IS_ANALYTICS_ENABLED']
- },
- 'appinvite_service': {
- 'status': xml_dict['IS_APPINVITE_ENABLED']
- }
- }
- },],
- 'configuration_version':
- '1'
- }
- return json.dumps(json_struct, indent=2)
- except KeyError as e:
- sys.stderr.write('Could not find key in plist file: [%s]\n' % (e.args[0]))
- return None
-
-
-def convert_plist_to_json(plist_string, input_filename):
- """Converts an input plist string into a .json file and saves it.
-
- Args:
- plist_string: The contents of the loaded plist file.
-
- input_filename: The file name that the plist data was read from.
- Returns:
- the converted string, or None if there were errors.
- """
-
- try:
- root = ElementTree.fromstring(plist_string)
- except ElementTree.ParseError:
- sys.stderr.write('Error parsing file %s.\n'
- 'It does not appear to be valid XML.\n' % (input_filename))
- return None
-
- plist_dict = construct_plist_dictionary(root)
- if plist_dict is None:
- sys.stderr.write('In file %s, could not locate a top-level \'dict\' '
- 'element.\n'
- 'File format should be plist XML, with a top-level '
- 'dictionary containing project settings as key-value '
- 'pairs.\n' % (input_filename))
- return None
-
- json_string = construct_google_services_json(plist_dict)
- return json_string
-
-
-def gen_string(parent, name, text):
- """Generate one element and put into the list of keeps.
-
- Args:
- parent: The object that will hold the string.
- name: The name to store the string under.
- text: The text of the string.
- """
- if text:
- prev = parent.get('tools:keep', '')
- if prev:
- prev += ','
- parent.set('tools:keep', prev + '@string/' + name)
- child = ElementTree.SubElement(parent, 'string', {
- 'name': name,
- 'translatable': 'false'
- })
- child.text = text
-
-
-def indent(elem, level=0):
- """Recurse through XML tree and add indentation.
-
- Args:
- elem: The element to recurse over
- level: The current indentation level.
- """
- i = '\n' + level*' '
- if elem is not None:
- if not elem.text or not elem.text.strip():
- elem.text = i + ' '
- if not elem.tail or not elem.tail.strip():
- elem.tail = i
- for elem in elem:
- indent(elem, level+1)
- if not elem.tail or not elem.tail.strip():
- elem.tail = i
- else:
- if level and (not elem.tail or not elem.tail.strip()):
- elem.tail = i
-
-
-def argv_as_unicode_win32():
- """Returns unicode command line arguments on windows.
- """
-
- get_command_line_w = ctypes.cdll.kernel32.GetCommandLineW
- get_command_line_w.restype = ctypes.wintypes.LPCWSTR
-
- # CommandLineToArgvW parses the Unicode command line
- command_line_to_argv_w = ctypes.windll.shell32.CommandLineToArgvW
- command_line_to_argv_w.argtypes = [
- ctypes.wintypes.LPCWSTR,
- ctypes.POINTER(ctypes.c_int)
- ]
- command_line_to_argv_w.restype = ctypes.POINTER(
- ctypes.wintypes.LPWSTR)
-
- argc = ctypes.c_int(0)
- argv = command_line_to_argv_w(get_command_line_w(), argc)
-
- # Strip the python executable from the arguments if it exists
- # (It would be listed as the first argument on the windows command line, but
- # not in the arguments to the python script)
- sys_argv_len = len(sys.argv)
- return [unicode(argv[i]) for i in
- range(argc.value - sys_argv_len, argc.value)]
-
-
-def main():
- parser = argparse.ArgumentParser(
- description=((
- 'Converts a Firebase %s into %s similar to the Gradle plugin, or '
- 'converts a Firebase %s into a %s suitible for use on desktop apps.' %
- (DEFAULT_INPUT_FILENAME, DEFAULT_OUTPUT_FILENAME,
- DEFAULT_PLIST_INPUT_FILENAME, DEFAULT_JSON_OUTPUT_FILENAME))))
- parser.add_argument('-i', help='Override input file name',
- metavar='FILE', required=False)
- parser.add_argument('-o', help='Override destination file name',
- metavar='FILE', required=False)
- parser.add_argument('-p', help=('Package ID to select within the set of '
- 'packages in the input file. If this is '
- 'not specified, the first package in the '
- 'input file is selected.'))
- parser.add_argument('-l', help=('List all package IDs referenced by the '
- 'input file. If this is specified, '
- 'the output file is not created.'),
- action='store_true', default=False, required=False)
- parser.add_argument('-f', help=('Print project fields from the input file '
- 'in the form \'name=value\\n\' for each '
- 'field. If this is specified, the output '
- 'is not created.'),
- action='store_true', default=False, required=False)
- parser.add_argument(
- '--plist',
- help=(
- 'Specifies a plist file to convert to a JSON configuration file. '
- 'If this is enabled, the script will expect a .plist file as input, '
- 'which it will convert into %s file. The output file is '
- '*not* suitable for use with Firebase on Android.' %
- (DEFAULT_JSON_OUTPUT_FILENAME)),
- action='store_true',
- default=False,
- required=False)
-
- # python 2 on Windows doesn't handle unicode arguments well, so we need to
- # pre-process the command line arguments before trying to parse them.
- if platform.system() == 'Windows':
- sys.argv = argv_as_unicode_win32()
-
- args = parser.parse_args()
-
- if args.plist:
- input_filename = DEFAULT_PLIST_INPUT_FILENAME
- output_filename = DEFAULT_JSON_OUTPUT_FILENAME
- else:
- input_filename = DEFAULT_INPUT_FILENAME
- output_filename = DEFAULT_OUTPUT_FILENAME
-
- if args.i:
- # Encode the input string (type unicode) as a normal string (type str)
- # using the 'utf-8' encoding so that it can be worked with the same as
- # input names from other sources (like the defaults).
- input_filename_raw = args.i.encode('utf-8')
- # Decode the filename to a unicode string using the 'utf-8' encoding to
- # properly handle filepaths with unicode characters in them.
- input_filename = input_filename_raw.decode('utf-8')
-
- if args.o:
- output_filename = args.o
-
- with open(input_filename, 'r') as ifile:
- file_string = ifile.read()
-
- json_string = None
- if args.plist:
- json_string = convert_plist_to_json(file_string, input_filename)
- if json_string is None:
- return 1
- jsobj = json.loads(json_string)
- else:
- jsobj = json.loads(file_string)
-
- root = ElementTree.Element('resources')
- root.set('xmlns:tools', 'http://schemas.android.com/tools')
-
- project_info = jsobj.get('project_info')
- if project_info:
- gen_string(root, 'firebase_database_url', project_info.get('firebase_url'))
- gen_string(root, 'gcm_defaultSenderId', project_info.get('project_number'))
- gen_string(root, 'google_storage_bucket',
- project_info.get('storage_bucket'))
- gen_string(root, 'project_id', project_info.get('project_id'))
-
- if args.f:
- if not project_info:
- sys.stderr.write('No project info found in %s.' % input_filename)
- return 1
- for field, value in sorted(project_info.items()):
- sys.stdout.write('%s=%s\n' % (field, value))
- return 0
-
- packages = set()
- client_list = jsobj.get('client')
- if client_list:
- # Search for the user specified package in the file.
- selected_package_name = ''
- selected_client = client_list[0]
- find_package_name = args.p
- for client in client_list:
- package_name = client.get('client_info', {}).get(
- 'android_client_info', {}).get('package_name', '')
- if not package_name:
- package_name = client.get('oauth_client', {}).get(
- 'android_info', {}).get('package_name', '')
- if package_name:
- if not selected_package_name:
- selected_package_name = package_name
- selected_client = client
- if package_name == find_package_name:
- selected_package_name = package_name
- selected_client = client
- packages.add(package_name)
-
- if args.p and selected_package_name != find_package_name:
- sys.stderr.write('No packages found in %s which match the package '
- 'name %s\n'
- '\n'
- 'Found the following:\n'
- '%s\n' % (input_filename, find_package_name,
- '\n'.join(packages)))
- return 1
-
- client_api_key = selected_client.get('api_key')
- if client_api_key:
- client_api_key0 = client_api_key[0]
- gen_string(root, 'google_api_key', client_api_key0.get('current_key'))
- gen_string(root, 'google_crash_reporting_api_key',
- client_api_key0.get('current_key'))
-
- client_info = selected_client.get('client_info')
- if client_info:
- gen_string(root, 'google_app_id', client_info.get('mobilesdk_app_id'))
-
- # Only include the first matching OAuth client ID per type.
- client_id_web_parsed = False
- client_id_android_parsed = False
-
- oauth_client_list = selected_client.get('oauth_client')
- if oauth_client_list:
- for oauth_client in oauth_client_list:
- client_type = oauth_client.get('client_type')
- client_id = oauth_client.get('client_id')
- if not (client_type and client_id): continue
- if (client_type == OAUTH_CLIENT_TYPE_WEB and
- not client_id_web_parsed):
- gen_string(root, 'default_web_client_id', client_id)
- client_id_web_parsed = True
- if (client_type == OAUTH_CLIENT_TYPE_ANDROID_APP and
- not client_id_android_parsed):
- gen_string(root, 'default_android_client_id', client_id)
- client_id_android_parsed = True
-
- services = selected_client.get('services')
- if services:
- ads_service = services.get('ads_service')
- if ads_service:
- gen_string(root, 'test_banner_ad_unit_id',
- ads_service.get('test_banner_ad_unit_id'))
- gen_string(root, 'test_interstitial_ad_unit_id',
- ads_service.get('test_interstitial_ad_unit_id'))
- analytics_service = services.get('analytics_service')
- if analytics_service:
- analytics_property = analytics_service.get('analytics_property')
- if analytics_property:
- gen_string(root, 'ga_trackingId',
- analytics_property.get('tracking_id'))
- # enable this once we have an example if this service being present
- # in the json data:
- maps_service_enabled = False
- if maps_service_enabled:
- maps_service = services.get('maps_service')
- if maps_service:
- maps_api_key = maps_service.get('api_key')
- if maps_api_key:
- for k in range(0, len(maps_api_key)):
- # generates potentially multiple of these keys, which is
- # the same behavior as the java plugin.
- gen_string(root, 'google_maps_key',
- maps_api_key[k].get('maps_api_key'))
-
- tree = ElementTree.ElementTree(root)
-
- indent(root)
-
- if args.l:
- for package in sorted(packages):
- if package:
- sys.stdout.write(package + '\n')
- else:
- path = os.path.dirname(output_filename)
-
- if path and not os.path.exists(path):
- os.makedirs(path)
-
- if not args.plist:
- tree.write(output_filename, 'utf-8', True)
- else:
- with open(output_filename, 'w') as ofile:
- ofile.write(json_string)
-
- return 0
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/Editor/generate_xml_from_google_services_json.py.meta b/Editor/generate_xml_from_google_services_json.py.meta
deleted file mode 100644
index c3de3ae..0000000
--- a/Editor/generate_xml_from_google_services_json.py.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 8f18ed76c0f04ce0a65736104f913ef8
-labels:
-- gvh
-- gvh_version-10.3.0
-- gvhp_exportpath-Firebase/Editor/generate_xml_from_google_services_json.py
-timeCreated: 1480838400
-DefaultImporter:
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Editor/network_request.exe b/Editor/network_request.exe
deleted file mode 100755
index 30f5e8e..0000000
Binary files a/Editor/network_request.exe and /dev/null differ
diff --git a/Editor/network_request.exe.meta b/Editor/network_request.exe.meta
deleted file mode 100644
index 6f8e125..0000000
--- a/Editor/network_request.exe.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: d3cd5d0a941c4cdc8ab4b1b684b05191
-labels:
-- gvh
-- gvh_version-10.3.0
-- gvhp_exportpath-Firebase/Editor/network_request.exe
-timeCreated: 1480838400
-DefaultImporter:
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Editor/network_request.py b/Editor/network_request.py
deleted file mode 100755
index 04f055f..0000000
--- a/Editor/network_request.py
+++ /dev/null
@@ -1,416 +0,0 @@
-# Copyright 2019 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Wrapper script which makes a network request.
-
-Basic Usage: network_request.py post
- --url
- --header (optional, support multiple)
- --body (optional)
- --timeout (optional)
- --verbose (optional)
-"""
-
-import argparse
-import inspect
-import logging
-import socket
-import sys
-
-# pylint: disable=g-import-not-at-top
-# pylint: disable=g-importing-member
-try:
- from six.moves.http_client import HTTPSConnection
- from six.moves.http_client import HTTPConnection
- from six.moves.http_client import HTTPException
-except ImportError:
- from http.client import HTTPSConnection
- from http.client import HTTPConnection
- from http.client import HTTPException
-
-try:
- from six.moves.urllib.parse import urlparse
-except ImportError:
- from urllib.parse import urlparse
-# pylint: enable=g-import-not-at-top
-# pylint: enable=g-importing-member
-
-# Set up logger as soon as possible
-formatter = logging.Formatter('[%(levelname)s] %(message)s')
-
-handler = logging.StreamHandler(stream=sys.stdout)
-handler.setFormatter(formatter)
-handler.setLevel(logging.INFO)
-
-logger = logging.getLogger(__name__)
-logger.addHandler(handler)
-logger.setLevel(logging.INFO)
-
-# Custom exit codes for known issues.
-# System exit codes in python are valid from 0 - 256, so we will map some common
-# ones here to understand successes and failures.
-# Uses lower ints to not collide w/ HTTP status codes that the script may return
-EXIT_CODE_SUCCESS = 0
-EXIT_CODE_SYS_ERROR = 1
-EXIT_CODE_INVALID_REQUEST_VALUES = 2
-EXIT_CODE_GENERIC_HTTPLIB_ERROR = 3
-EXIT_CODE_HTTP_TIMEOUT = 4
-EXIT_CODE_HTTP_REDIRECT_ERROR = 5
-EXIT_CODE_HTTP_NOT_FOUND_ERROR = 6
-EXIT_CODE_HTTP_SERVER_ERROR = 7
-EXIT_CODE_HTTP_UNKNOWN_ERROR = 8
-
-MAX_EXIT_CODE = 8
-
-# All used http verbs
-POST = 'POST'
-
-
-def unwrap_kwarg_namespace(func):
- """Transform a Namespace object from argparse into proper args and kwargs.
-
- For a function that will be delegated to from argparse, inspect all of the
- argments and extract them from the Namespace object.
-
- Args:
- func: the function that we are wrapping to modify behavior
-
- Returns:
- a new function that unwraps all of the arguments in a namespace and then
- delegates to the passed function with those args.
- """
- # When we move to python 3, getfullargspec so that we can tell the
- # difference between args and kwargs -- then this could be used for functions
- # that have both args and kwargs
- if 'getfullargspec' in dir(inspect):
- argspec = inspect.getfullargspec(func)
- else:
- argspec = inspect.getargspec(func) # Python 2 compatibility.
-
- def wrapped(argparse_namespace=None, **kwargs):
- """Take a Namespace object and map it to kwargs.
-
- Inspect the argspec of the passed function. Loop over all the args that
- are present in the function and try to map them by name to arguments in the
- namespace. For keyword arguments, we do not require that they be present
- in the Namespace.
-
- Args:
- argparse_namespace: an arparse.Namespace object, the result of calling
- argparse.ArgumentParser().parse_args()
- **kwargs: keyword arguments that may be passed to the original function
- Returns:
- The return of the wrapped function from the parent.
-
- Raises:
- ValueError in the event that an argument is passed to the cli that is not
- in the set of named kwargs
- """
- if not argparse_namespace:
- return func(**kwargs)
-
- reserved_namespace_keywords = ['func']
- new_kwargs = {}
-
- args = argspec.args or []
- for arg_name in args:
- passed_value = getattr(argparse_namespace, arg_name, None)
- if passed_value is not None:
- new_kwargs[arg_name] = passed_value
-
- for namespace_key in vars(argparse_namespace).keys():
- # ignore namespace keywords that have been set not passed in via cli
- if namespace_key in reserved_namespace_keywords:
- continue
-
- # make sure that we haven't passed something we should be processing
- if namespace_key not in args:
- raise ValueError('CLI argument "{}" does not match any argument in '
- 'function {}'.format(namespace_key, func.__name__))
-
- return func(**new_kwargs)
-
- wrapped.__name__ = func.__name__
- return wrapped
-
-
-class NetworkRequest(object):
- """A container for an network request object.
-
- This class holds on to all of the attributes necessary for making a
- network request via httplib.
- """
-
- def __init__(self, url, method, headers, body, timeout):
- self.url = url.lower()
- self.parsed_url = urlparse(self.url)
- self.method = method
- self.headers = headers
- self.body = body
- self.timeout = timeout
- self.is_secure_connection = self.is_secure_connection()
-
- def execute_request(self):
- """"Execute the request, and get a response.
-
- Returns:
- an HttpResponse object from httplib
- """
- if self.is_secure_connection:
- conn = HTTPSConnection(self.get_hostname(), timeout=self.timeout)
- else:
- conn = HTTPConnection(self.get_hostname(), timeout=self.timeout)
-
- conn.request(self.method, self.url, self.body, self.headers)
- response = conn.getresponse()
- return response
-
- def get_hostname(self):
- """Return the hostname for the url."""
- return self.parsed_url.netloc
-
- def is_secure_connection(self):
- """Checks for a secure connection of https.
-
- Returns:
- True if the scheme is "https"; False if "http"
-
- Raises:
- ValueError when the scheme does not match http or https
- """
- scheme = self.parsed_url.scheme
-
- if scheme == 'http':
- return False
- elif scheme == 'https':
- return True
- else:
- raise ValueError('The url scheme is not "http" nor "https"'
- ': {}'.format(scheme))
-
-
-def parse_colon_delimited_options(option_args):
- """Parses a key value from a string.
-
- Args:
- option_args: Key value string delimited by a color, ex: ("key:value")
-
- Returns:
- Return an array with the key as the first element and value as the second
-
- Raises:
- ValueError: If the key value option is not formatted correctly
- """
- options = {}
-
- if not option_args:
- return options
-
- for single_arg in option_args:
- values = single_arg.split(':')
- if len(values) != 2:
- raise ValueError('An option arg must be a single key/value pair '
- 'delimited by a colon - ex: "thing_key:thing_value"')
-
- key = values[0].strip()
- value = values[1].strip()
- options[key] = value
-
- return options
-
-
-def make_request(request):
- """Makes a synchronous network request and return the HTTP status code.
-
- Args:
- request: a well formulated request object
-
- Returns:
- The HTTP status code of the network request.
- '1' maps to invalid request headers.
- """
-
- logger.info('Sending network request -')
- logger.info('\tUrl: %s', request.url)
- logger.debug('\tMethod: %s', request.method)
- logger.debug('\tHeaders: %s', request.headers)
- logger.debug('\tBody: %s', request.body)
-
- try:
- response = request.execute_request()
- except socket.timeout:
- logger.exception(
- 'Timed out post request to %s in %d seconds for request body: %s',
- request.url, request.timeout, request.body)
- return EXIT_CODE_HTTP_TIMEOUT
- except (HTTPException, socket.error):
- logger.exception(
- 'Encountered generic exception in posting to %s with request body %s',
- request.url, request.body)
- return EXIT_CODE_GENERIC_HTTPLIB_ERROR
-
- status = response.status
- headers = response.getheaders()
- logger.info('Received Network response -')
- logger.info('\tStatus code: %d', status)
- logger.debug('\tResponse headers: %s', headers)
-
- if status < 200 or status > 299:
- logger.error('Request (%s) failed with status code %d\n', request.url,
- status)
-
- # If we wanted this script to support get, we need to
- # figure out what mechanism we intend for capturing the response
- return status
-
-
-@unwrap_kwarg_namespace
-def post(url=None, header=None, body=None, timeout=5, verbose=False):
- """Sends a post request.
-
- Args:
- url: The url of the request
- header: A list of headers for the request
- body: The body for the request
- timeout: Timeout in seconds for the request
- verbose: Should debug logs be displayed
-
- Returns:
- Return an array with the key as the first element and value as the second
- """
-
- if verbose:
- handler.setLevel(logging.DEBUG)
- logger.setLevel(logging.DEBUG)
-
- try:
- logger.info('Parsing headers: %s', header)
- headers = parse_colon_delimited_options(header)
- except ValueError:
- logging.exception('Could not parse the parameters with "--header": %s',
- header)
- return EXIT_CODE_INVALID_REQUEST_VALUES
-
- try:
- request = NetworkRequest(url, POST, headers, body, float(timeout))
- except ValueError:
- logger.exception('Invalid request values passed into the script.')
- return EXIT_CODE_INVALID_REQUEST_VALUES
-
- status = make_request(request)
-
- # View exit code after running to get the http status code: 'echo $?'
- return status
-
-
-def get_argsparser():
- """Returns the argument parser.
-
- Returns:
- Argument parser for the script.
- """
-
- parser = argparse.ArgumentParser(
- description='The script takes in the arguments of a network request. '
- 'The network request is sent and the http status code will be'
- 'returned as the exit code.')
- subparsers = parser.add_subparsers(help='Commands:')
- post_parser = subparsers.add_parser(
- post.__name__, help='{} help'.format(post.__name__))
- post_parser.add_argument(
- '--url',
- help='Request url. Ex: https://www.google.com/somePath/',
- required=True,
- dest='url')
- post_parser.add_argument(
- '--header',
- help='Request headers as a space delimited list of key '
- 'value pairs. Ex: "key1:value1 key2:value2"',
- action='append',
- required=False,
- dest='header')
- post_parser.add_argument(
- '--body',
- help='The body of the network request',
- required=True,
- dest='body')
- post_parser.add_argument(
- '--timeout',
- help='The timeout in seconds',
- default=10.0,
- required=False,
- dest='timeout')
- post_parser.add_argument(
- '--verbose',
- help='Should verbose logging be outputted',
- action='store_true',
- default=False,
- required=False,
- dest='verbose')
- post_parser.set_defaults(func=post)
- return parser
-
-
-def map_http_status_to_exit_code(status_code):
- """Map an http status code to the appropriate exit code.
-
- Exit codes in python are valid from 0-256, so we want to map these to
- predictable exit codes within range.
-
- Args:
- status_code: the input status code that was output from the network call
- function
-
- Returns:
- One of our valid exit codes declared at the top of the file or a generic
- unknown error code
- """
- if status_code <= MAX_EXIT_CODE:
- return status_code
-
- if status_code > 199 and status_code < 300:
- return EXIT_CODE_SUCCESS
-
- if status_code == 302:
- return EXIT_CODE_HTTP_REDIRECT_ERROR
-
- if status_code == 404:
- return EXIT_CODE_HTTP_NOT_FOUND_ERROR
-
- if status_code > 499:
- return EXIT_CODE_HTTP_SERVER_ERROR
-
- return EXIT_CODE_HTTP_UNKNOWN_ERROR
-
-
-def main():
- """Main function to run the program.
-
- Parse system arguments and delegate to the appropriate function.
-
- Returns:
- A status code - either an http status code or a custom error code
- """
- parser = get_argsparser()
- subparser_action = parser.parse_args()
- try:
- return subparser_action.func(subparser_action)
- except ValueError:
- logger.exception('Invalid arguments passed.')
- parser.print_help(sys.stderr)
- return EXIT_CODE_INVALID_REQUEST_VALUES
- return EXIT_CODE_GENERIC_HTTPLIB_ERROR
-
-if __name__ == '__main__':
- exit_code = map_http_status_to_exit_code(main())
- sys.exit(exit_code)
diff --git a/Editor/network_request.py.meta b/Editor/network_request.py.meta
deleted file mode 100644
index d9a71b7..0000000
--- a/Editor/network_request.py.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: e6e32fecbfd44fab946fa160e4861924
-labels:
-- gvh
-- gvh_version-10.3.0
-- gvhp_exportpath-Firebase/Editor/network_request.py
-timeCreated: 1480838400
-DefaultImporter:
- userData:
- assetBundleName:
- assetBundleVariant: