(Object initialFeatures, Object marketType, Object... optionalArgs)
| 5767 | } |
| 5768 | |
| 5769 | public Object featuresMapper(Object initialFeatures, Object marketType, Object... optionalArgs) |
| 5770 | { |
| 5771 | Object subType = Helpers.getArg(optionalArgs, 0, null); |
| 5772 | Object featuresObj = ((Helpers.isTrue((!Helpers.isEqual(subType, null))))) ? Helpers.GetValue(Helpers.GetValue(initialFeatures, ((String)marketType)), subType) : Helpers.GetValue(initialFeatures, ((String)marketType)); |
| 5773 | // if exchange does not have that market-type (eg. future>inverse) |
| 5774 | if (Helpers.isTrue(Helpers.isEqual(featuresObj, null))) |
| 5775 | { |
| 5776 | return null; |
| 5777 | } |
| 5778 | Object extendsStr = this.safeString(featuresObj, "extends"); |
| 5779 | if (Helpers.isTrue(!Helpers.isEqual(extendsStr, null))) |
| 5780 | { |
| 5781 | featuresObj = this.omit(featuresObj, "extends"); |
| 5782 | Object extendObj = this.featuresMapper(initialFeatures, extendsStr); |
| 5783 | featuresObj = this.deepExtend(extendObj, featuresObj); |
| 5784 | } |
| 5785 | // |
| 5786 | // ### corrections ### |
| 5787 | // |
| 5788 | // createOrder |
| 5789 | if (Helpers.isTrue(Helpers.inOp(featuresObj, "createOrder"))) |
| 5790 | { |
| 5791 | Object value = this.safeDict(Helpers.GetValue(featuresObj, "createOrder"), "attachedStopLossTakeProfit"); |
| 5792 | Helpers.addElementToObject(Helpers.GetValue(featuresObj, "createOrder"), "stopLoss", value); |
| 5793 | Helpers.addElementToObject(Helpers.GetValue(featuresObj, "createOrder"), "takeProfit", value); |
| 5794 | if (Helpers.isTrue(Helpers.isEqual(marketType, "spot"))) |
| 5795 | { |
| 5796 | // default 'hedged': false |
| 5797 | Helpers.addElementToObject(Helpers.GetValue(featuresObj, "createOrder"), "hedged", false); |
| 5798 | // default 'leverage': false |
| 5799 | if (!Helpers.isTrue((Helpers.inOp(Helpers.GetValue(featuresObj, "createOrder"), "leverage")))) |
| 5800 | { |
| 5801 | Helpers.addElementToObject(Helpers.GetValue(featuresObj, "createOrder"), "leverage", false); |
| 5802 | } |
| 5803 | } |
| 5804 | // default 'GTC' to true |
| 5805 | if (Helpers.isTrue(Helpers.isEqual(this.safeBool(Helpers.GetValue(Helpers.GetValue(featuresObj, "createOrder"), "timeInForce"), "GTC"), null))) |
| 5806 | { |
| 5807 | Helpers.addElementToObject(Helpers.GetValue(Helpers.GetValue(featuresObj, "createOrder"), "timeInForce"), "GTC", true); |
| 5808 | } |
| 5809 | } |
| 5810 | // other methods |
| 5811 | Object keys = Helpers.objectKeys(featuresObj); |
| 5812 | for (var i = 0; Helpers.isLessThan(i, Helpers.getArrayLength(keys)); i++) |
| 5813 | { |
| 5814 | Object key = Helpers.GetValue(keys, i); |
| 5815 | Object featureBlock = Helpers.GetValue(featuresObj, key); |
| 5816 | if (Helpers.isTrue(!Helpers.isTrue(this.inArray(key, new java.util.ArrayList<Object>(java.util.Arrays.asList("sandbox")))) && Helpers.isTrue(!Helpers.isEqual(featureBlock, null)))) |
| 5817 | { |
| 5818 | // default "symbolRequired" to false to all methods (except `createOrder`) |
| 5819 | if (!Helpers.isTrue((Helpers.inOp(featureBlock, "symbolRequired")))) |
| 5820 | { |
| 5821 | Helpers.addElementToObject(featureBlock, "symbolRequired", this.inArray(key, new java.util.ArrayList<Object>(java.util.Arrays.asList("createOrder", "createOrders", "fetchOHLCV")))); |
| 5822 | } |
| 5823 | } |
| 5824 | } |
| 5825 | return featuresObj; |
| 5826 | } |
no test coverage detected