diff --git a/README.md b/README.md index 7904815..a8710d0 100644 --- a/README.md +++ b/README.md @@ -138,11 +138,6 @@ Use these functions to directly interact with the key image cache. Contains functions to validating payment ID formats. To generate payment IDs, see `monero_utils`. ------ -### `monero_utils/monero_requestURI_utils` - -Functions for generating and parsing monero request URIs. Supports multiple currencies and formats. - ----- ### `monero_utils/monero_sendingFunds_utils` diff --git a/index.js b/index.js index 4b7d8fa..40a4e29 100644 --- a/index.js +++ b/index.js @@ -36,7 +36,6 @@ const mymonero_core_js = {}; mymonero_core_js.monero_config = require("./monero_utils/monero_config"); mymonero_core_js.monero_txParsing_utils = require("./monero_utils/monero_txParsing_utils"); mymonero_core_js.monero_sendingFunds_utils = require("./monero_utils/monero_sendingFunds_utils"); -mymonero_core_js.monero_requestURI_utils = require("./monero_utils/monero_requestURI_utils"); mymonero_core_js.monero_keyImage_cache_utils = require("./monero_utils/monero_keyImage_cache_utils"); mymonero_core_js.monero_paymentID_utils = require("./monero_utils/monero_paymentID_utils"); mymonero_core_js.monero_amount_format_utils = require("./monero_utils/monero_amount_format_utils"); diff --git a/monero_utils/monero_requestURI_utils.js b/monero_utils/monero_requestURI_utils.js deleted file mode 100644 index a14c347..0000000 --- a/monero_utils/monero_requestURI_utils.js +++ /dev/null @@ -1,161 +0,0 @@ -// Copyright (c) 2014-2018, MyMonero.com -// -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without modification, are -// permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, this list of -// conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright notice, this list -// of conditions and the following disclaimer in the documentation and/or other -// materials provided with the distribution. -// -// 3. Neither the name of the copyright holder nor the names of its contributors may be -// used to endorse or promote products derived from this software without specific -// prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL -// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF -// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -"use strict"; -// -const monero_config = require("./monero_config"); -// -const URITypes = { - addressAsFirstPathComponent: 1, - addressAsAuthority: 2, -}; -exports.URITypes = URITypes; -// -function New_RequestFunds_URI(args) { - // -> String? - const address = args.address; - if (!address) { - throw "missing address"; - // return null - } - var mutable_uri = ""; - mutable_uri += monero_config.coinUriPrefix; - { - const uriType = args.uriType; - if (uriType === URITypes.addressAsAuthority) { - mutable_uri += "//"; // use for inserting a // so data detectors pick it up… - } else if (uriType === URITypes.addressAsFirstPathComponent) { - // nothing to do - } else { - throw "Illegal args.uriType"; - } - } - mutable_uri += address; - var isAppendingParam0 = true; - function addParam(parameterName, value) { - if ( - value == null || - value == "" /*important*/ || - typeof value === "undefined" - ) { - return; - } - var conjunctionStr = "&"; - if (isAppendingParam0 === true) { - isAppendingParam0 = false; - conjunctionStr = "?"; - } - mutable_uri += conjunctionStr; - mutable_uri += parameterName + "=" + encodeURIComponent(value); - } - { - addParam("tx_amount", args.amount); - if ( - (args.amountCcySymbol || "").toLowerCase() != - monero_config.coinSymbol.toLowerCase() - ) { - addParam("tx_amount_ccy", args.amountCcySymbol); - } - addParam("tx_description", args.description); - addParam("tx_payment_id", args.payment_id); - addParam("tx_message", args.message); - } - return mutable_uri; -} -exports.New_RequestFunds_URI = New_RequestFunds_URI; -// -function New_ParsedPayload_FromPossibleRequestURIString(string, nettype, monero_utils/*pass this so this fn remains sync*/) { - // throws; -> {} - // - // detect no-scheme moneroAddr and possible OA addr - if has no monero: prefix - if (string.indexOf(monero_config.coinUriPrefix) !== 0) { - const stringHasQMark = string.indexOf("?") !== -1; - if (stringHasQMark) { - // fairly sure this is correct.. (just an extra failsafe/filter) - throw "Unrecognized URI format"; - } - let couldBeOAAddress = string.indexOf(".") != -1; // contains period - would be nice to get this from DoesStringContainPeriodChar_excludingAsXMRAddress_qualifyingAsPossibleOAAddress so maybe mymonero_core_js should gain local_modules/OpenAlias - if (couldBeOAAddress) { - return { - address: string, - }; - } - var address__decode_result; - try { - address__decode_result = monero_utils.decode_address( - string, - nettype, - ); - } catch (e) { - throw "No Monero request info"; - return; - } - // then it looks like a monero address - return { - address: string, - }; - } - const uriString = string; - const url = new URL(uriString); - const protocol = url.protocol; - if (protocol !== monero_config.coinUriPrefix) { - throw "Request URI has non-Monero protocol"; - } - var target_address = url.pathname; // var instead of const as have to finalize it - // it seems that if the URL has // in it, pathname will be empty, but host will contain the address instead - if ( - target_address === "" || - typeof target_address === "undefined" || - !target_address - ) { - target_address = url.host || url.hostname; - } - if (target_address.indexOf("//") == 0) { - target_address = target_address.slice( - 0 + "//".length, - target_address.length, - ); // strip prefixing "//" in case URL had protocol:// instead of protocol: - } - const searchParams = url.searchParams; // needs to be parsed it seems - // - const payload = { - address: target_address, - }; - const keyPrefixToTrim = "tx_"; - const lengthOf_keyPrefixToTrim = keyPrefixToTrim.length; - searchParams.forEach(function(value, key) { - var storeAt_key = key; - if (key.indexOf(keyPrefixToTrim) === 0) { - storeAt_key = key.slice(lengthOf_keyPrefixToTrim, key.length); - } - payload["" + storeAt_key] = value; - }); - // - return payload; -} -exports.New_ParsedPayload_FromPossibleRequestURIString = New_ParsedPayload_FromPossibleRequestURIString;