Skip to content

Commit

Permalink
FA1.2 token contract operations
Browse files Browse the repository at this point in the history
  • Loading branch information
keefertaylor committed Jan 19, 2020
1 parent 8583b45 commit 8648614
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 9 deletions.
22 changes: 22 additions & 0 deletions Tests/IntegrationTests/Dexter/TokenContractIntegrationTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,28 @@ class TokenContractClientIntegrationTests: XCTestCase {
wait(for: [ completionExpectation ], timeout: .expectationTimeout)
}

public func testApproveAllowanceTokens() {
let completionExpectation = XCTestExpectation(description: "Completion called")

tokenContractClient.approveAllowance(
source: Wallet.tokenOwner.address,
spender: Address.tokenRecipient,
allowance: 1,
signatureProvider: Wallet.tokenOwner
) { result in
switch result {
case .success(let hash):
print(hash)
completionExpectation.fulfill()
case .failure(let error):
print(error)
XCTFail()
}
}

wait(for: [ completionExpectation ], timeout: .expectationTimeout)
}

public func testGetBalance() {
let completionExpectation = XCTestExpectation(description: "Completion called")

Expand Down
5 changes: 0 additions & 5 deletions TezosKit/Common/Services/NetworkClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,6 @@ public class NetworkClientImpl: NetworkClient {
let payload = rpc.payload,
let payloadData = payload.data(using: .utf8)
{
print("payload: \(payload)")
urlRequest.httpMethod = "POST"
urlRequest.cachePolicy = .reloadIgnoringCacheData
urlRequest.httpBody = payloadData
Expand All @@ -116,10 +115,6 @@ public class NetworkClientImpl: NetworkClient {
return
}

print("Data: \(String(data: data!, encoding: .utf8))")
print("Error: \(error)")
print("----------------------------------------")

let result = self.responseHandler.handleResponse(
response: response,
data: data,
Expand Down
45 changes: 41 additions & 4 deletions TezosKit/Dexter/TokenContractClient.swift
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
// Copyright Keefer Taylor, 2019.

/// A client for a token contract.
/// A client for an FA1.2 Token Contract.
///
/// - See: https://gitlab.com/camlcase-dev/dexter
/// - See: https://gitlab.com/tzip/tzip/tree/master/proposals/tzip-7
public class TokenContractClient {
private enum EntryPoint {
public static let approve = "approve"
public static let transfer = "transfer"
}

private enum JSON {
public enum Keys {
public static let args = "args"
Expand Down Expand Up @@ -49,7 +54,6 @@ public class TokenContractClient {
completion: @escaping (Result<String, TezosKitError>) -> Void
) {
let amount = Tez.zeroBalance
let entrypoint = "transfer"
let parameter = PairMichelsonParameter(
left: PairMichelsonParameter(
left: StringMichelsonParameter(string: source),
Expand All @@ -61,7 +65,40 @@ public class TokenContractClient {
tezosNodeClient.call(
contract: tokenContractAddress,
amount: amount,
entrypoint: entrypoint,
entrypoint: EntryPoint.transfer,
parameter: parameter,
source: source,
signatureProvider: signatureProvider,
operationFeePolicy: .estimate,
completion: completion
)
}

/// Approve an allowance.
///
/// - Parameters:
/// - source: The address initiating the approval.
/// - spender: The address being approved.
/// - allowance: The number of tokens to approve.
/// - signatureProvider: An opaque object that can sign the transaction.
/// - completion: A completion block called with the operation hash or an error.
public func approveAllowance(
source: Address,
spender: Address,
allowance: Int,
signatureProvider: SignatureProvider,
completion: @escaping (Result<String, TezosKitError>) -> Void
) {
let amount = Tez.zeroBalance
let parameter = PairMichelsonParameter(
left: StringMichelsonParameter(string: spender),
right: IntMichelsonParameter(int: allowance)
)

tezosNodeClient.call(
contract: tokenContractAddress,
amount: amount,
entrypoint: EntryPoint.approve,
parameter: parameter,
source: source,
signatureProvider: signatureProvider,
Expand Down

0 comments on commit 8648614

Please sign in to comment.