def checkUrlParameters(inputCurrency, outputCurrency, amount):
    """Checks if the URL parameters are valid and returns currency
    three letter code representation and a float amount value"""

    Utility.checkArguments(inputCurrency, amount)
    inputCurrency = Currencies.getCurrencyCode(inputCurrency)

    if None not in outputCurrency:
        outputCurrency = [Currencies.getCurrencyCode(outputCurrency[0])]

    if None in outputCurrency:
        outputCurrency = copy.copy(Currencies.listOfCurrencies)
        outputCurrency.remove(inputCurrency)

    amount = abs(float(amount))

    return {
        'input_currency': inputCurrency,
        'output_currency': outputCurrency,
        'amount': amount
    }
Example #2
0
    def parseArguments() -> dict:
        """Parses the command line arguments"""

        conversionAmount = -1
        inputCurrency = None
        outputCurrencies = [None]

        if len(sys.argv) == 1:
            print(Utility.help())
            sys.exit()

        try:
            optlist, args = getopt.getopt(
                sys.argv[1:], 'h',
                ['amount=', 'input_currency=', 'output_currency=', 'help'])
        except getopt.GetoptError:
            raise InvalidArgumentError(
                "Oops, it looks like you entered an invalid option.")

        if not len(args) == 0:
            raise InvalidArgumentError(
                "Oops, it looks like you entered an invalid option.")

        for option, argument in optlist:
            if option in ('-h', '--help'):
                print(Utility.help())
                sys.exit()

            elif option in '--amount':
                if conversionAmount is not -1:
                    raise InvalidArgumentError(
                        "Please select only one amount, output or input currency."
                    )
                conversionAmount = argument

            elif option in '--input_currency':
                if inputCurrency is not None:
                    raise InvalidArgumentError(
                        "Please select only one amount, output or input currency."
                    )
                inputCurrency = argument

            elif option in '--output_currency':
                if not None in outputCurrencies:
                    raise InvalidArgumentError(
                        "Please select only one amount, output or input currency."
                    )
                outputCurrencies = [argument]

        Utility.checkArguments(inputCurrency, conversionAmount)
        inputCurrency = Currencies.getCurrencyCode(inputCurrency)
        conversionAmount = abs(float(conversionAmount))

        if None not in outputCurrencies:
            outputCurrencies = [
                Currencies.getCurrencyCode(outputCurrencies[0])
            ]

        else:
            outputCurrencies = copy.copy(Currencies.listOfCurrencies)
            outputCurrencies.remove(inputCurrency)

        return {
            'amount': conversionAmount,
            'input': inputCurrency,
            'output': outputCurrencies
        }