diff --git a/APIBattery.sol b/APIBattery.sol new file mode 100644 index 0000000..6a31b89 --- /dev/null +++ b/APIBattery.sol @@ -0,0 +1,76 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.6; + +import "@chainlink/contracts/src/v0.6/ChainlinkClient.sol"; + +contract APIConsumer is ChainlinkClient { + uint256 public _endBattery; + uint256 public BatteryDecimal; + + address private link; + address private oracle; + bytes32 private jobId; + uint256 private fee; + + /** + * Network: Kovan + * Kovan link address = 0xa36085F69e2889c224210F603D836748e7dC0088 + */ + constructor() public { + link = 0xa36085F69e2889c224210F603D836748e7dC0088; + if (link == address(0)) { + setPublicChainlinkToken(); + } else { + setChainlinkToken(link); + } + // oracle = 0x7caBbcCAa965F3466387C001c3154BD69cA26AF5; + // jobId = "b2779045343f4d21879c33d1d95dca36"; + // fee = 0 + oracle = 0x7caBbcCAa965F3466387C001c3154BD69cA26AF5; + jobId = stringToBytes32("b2779045343f4d21879c33d1d95dca36"); + fee = 0; + } + + function requestVolumeData( + string memory _vehicleId, + string memory _encToken + ) public returns (bytes32 requestId) { + Chainlink.Request memory request = buildChainlinkRequest( + jobId, + address(this), + this.fulfill.selector + ); + request.add("vehicleId", _vehicleId); + request.add("encToken", _encToken); + + // Sends the request + return sendChainlinkRequestTo(oracle, request, fee); + } + + /** + * Receive the response in the form of uint256 + */ + function fulfill(bytes32 _requestId, uint256 _percentRemaining) + public + recordChainlinkFulfillment(_requestId) + { + _endBattery = _percentRemaining / 1000; + BatteryDecimal = _percentRemaining % 1000; + } + + function stringToBytes32(string memory source) + public + pure + returns (bytes32 result) + { + bytes memory tempEmptyStringTest = bytes(source); + if (tempEmptyStringTest.length == 0) { + return 0x0; + } + + assembly { + result := mload(add(source, 32)) + } + } +} diff --git a/APIConsumer.sol b/APIConsumer.sol deleted file mode 100644 index 39d300c..0000000 --- a/APIConsumer.sol +++ /dev/null @@ -1,67 +0,0 @@ -// SPDX-License-Identifier: MIT - -pragma solidity ^0.6.6; - -import "@chainlink/contracts/src/v0.6/ChainlinkClient.sol"; - -contract APIConsumer is ChainlinkClient { - - -uint256 public _endOdometer; -uint256 public OdometerDecimal; - -address private link; -address private oracle; -bytes32 private jobId; -uint256 private fee; - -/** - * Network: Kovan - * Kovan link address = 0xa36085F69e2889c224210F603D836748e7dC0088 - */ -constructor() public { - link = 0xa36085F69e2889c224210F603D836748e7dC0088; - if (link == address(0)) { - setPublicChainlinkToken(); - } else { - setChainlinkToken(link); - } - // oracle = 0x7caBbcCAa965F3466387C001c3154BD69cA26AF5; - // jobId = "b2779045343f4d21879c33d1d95dca36"; - // fee = 0 - oracle = 0x7caBbcCAa965F3466387C001c3154BD69cA26AF5; - jobId = stringToBytes32("b2779045343f4d21879c33d1d95dca36"); - fee = 0; -} - -function requestVolumeData(string memory _vehicleId, string memory _encToken) public returns (bytes32 requestId) -{ - Chainlink.Request memory request = buildChainlinkRequest(jobId, address(this), this.fulfill.selector); - request.add("vehicleId", _vehicleId); - request.add("encToken", _encToken); - - - // Sends the request - return sendChainlinkRequestTo(oracle, request, fee); -} - -/** - * Receive the response in the form of uint256 - */ -function fulfill(bytes32 _requestId, uint256 _distance) public recordChainlinkFulfillment(_requestId) -{ - _endOdometer = _distance/1000; - OdometerDecimal = _distance%1000; -} - -function stringToBytes32(string memory source) public pure returns (bytes32 result) { - bytes memory tempEmptyStringTest = bytes(source); - if (tempEmptyStringTest.length == 0) { - return 0x0; - } - - assembly { - result := mload(add(source, 32)) - } -} -} diff --git a/APIFuel.sol b/APIFuel.sol new file mode 100644 index 0000000..08e93e5 --- /dev/null +++ b/APIFuel.sol @@ -0,0 +1,76 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.6; + +import "@chainlink/contracts/src/v0.6/ChainlinkClient.sol"; + +contract APIConsumer is ChainlinkClient { + uint256 public _endFuel; + uint256 public FuelDecimal; + + address private link; + address private oracle; + bytes32 private jobId; + uint256 private fee; + + /** + * Network: Kovan + * Kovan link address = 0xa36085F69e2889c224210F603D836748e7dC0088 + */ + constructor() public { + link = 0xa36085F69e2889c224210F603D836748e7dC0088; + if (link == address(0)) { + setPublicChainlinkToken(); + } else { + setChainlinkToken(link); + } + // oracle = 0x7caBbcCAa965F3466387C001c3154BD69cA26AF5; + // jobId = "b2779045343f4d21879c33d1d95dca36"; + // fee = 0 + oracle = 0x7caBbcCAa965F3466387C001c3154BD69cA26AF5; + jobId = stringToBytes32("b2779045343f4d21879c33d1d95dca36"); + fee = 0; + } + + function requestVolumeData( + string memory _vehicleId, + string memory _encToken + ) public returns (bytes32 requestId) { + Chainlink.Request memory request = buildChainlinkRequest( + jobId, + address(this), + this.fulfill.selector + ); + request.add("vehicleId", _vehicleId); + request.add("encToken", _encToken); + + // Sends the request + return sendChainlinkRequestTo(oracle, request, fee); + } + + /** + * Receive the response in the form of uint256 + */ + function fulfill(bytes32 _requestId, uint256 _amountRemaining) + public + recordChainlinkFulfillment(_requestId) + { + _endFuel = _amountRemaining / 1000; + FuelDecimal = _amountRemaining % 1000; + } + + function stringToBytes32(string memory source) + public + pure + returns (bytes32 result) + { + bytes memory tempEmptyStringTest = bytes(source); + if (tempEmptyStringTest.length == 0) { + return 0x0; + } + + assembly { + result := mload(add(source, 32)) + } + } +} diff --git a/APIOdometer.sol b/APIOdometer.sol new file mode 100644 index 0000000..325e005 --- /dev/null +++ b/APIOdometer.sol @@ -0,0 +1,76 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.6; + +import "@chainlink/contracts/src/v0.6/ChainlinkClient.sol"; + +contract APIConsumer is ChainlinkClient { + uint256 public _endOdometer; + uint256 public OdometerDecimal; + + address private link; + address private oracle; + bytes32 private jobId; + uint256 private fee; + + /** + * Network: Kovan + * Kovan link address = 0xa36085F69e2889c224210F603D836748e7dC0088 + */ + constructor() public { + link = 0xa36085F69e2889c224210F603D836748e7dC0088; + if (link == address(0)) { + setPublicChainlinkToken(); + } else { + setChainlinkToken(link); + } + // oracle = 0x7caBbcCAa965F3466387C001c3154BD69cA26AF5; + // jobId = "b2779045343f4d21879c33d1d95dca36"; + // fee = 0 + oracle = 0x7caBbcCAa965F3466387C001c3154BD69cA26AF5; + jobId = stringToBytes32("b2779045343f4d21879c33d1d95dca36"); + fee = 0; + } + + function requestVolumeData( + string memory _vehicleId, + string memory _encToken + ) public returns (bytes32 requestId) { + Chainlink.Request memory request = buildChainlinkRequest( + jobId, + address(this), + this.fulfill.selector + ); + request.add("vehicleId", _vehicleId); + request.add("encToken", _encToken); + + // Sends the request + return sendChainlinkRequestTo(oracle, request, fee); + } + + /** + * Receive the response in the form of uint256 + */ + function fulfill(bytes32 _requestId, uint256 _distance) + public + recordChainlinkFulfillment(_requestId) + { + _endOdometer = _distance / 1000; + OdometerDecimal = _distance % 1000; + } + + function stringToBytes32(string memory source) + public + pure + returns (bytes32 result) + { + bytes memory tempEmptyStringTest = bytes(source); + if (tempEmptyStringTest.length == 0) { + return 0x0; + } + + assembly { + result := mload(add(source, 32)) + } + } +}