MCPcopy
hub / github.com/ccxt/ccxt / featuresMapper

Method featuresMapper

java/lib/src/main/java/io/github/ccxt/Exchange.java:5769–5826  ·  view source on GitHub ↗
(Object initialFeatures, Object marketType, Object... optionalArgs)

Source from the content-addressed store, hash-verified

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 }

Callers 1

featuresGeneratorMethod · 0.95

Calls 15

getArgMethod · 0.95
isTrueMethod · 0.95
isEqualMethod · 0.95
GetValueMethod · 0.95
safeStringMethod · 0.95
omitMethod · 0.95
deepExtendMethod · 0.95
inOpMethod · 0.95
safeDictMethod · 0.95
addElementToObjectMethod · 0.95
safeBoolMethod · 0.95
objectKeysMethod · 0.95

Tested by

no test coverage detected