Skip to content

Commit

Permalink
Update Contract*Transactions to be more idiomatic
Browse files Browse the repository at this point in the history
    - Use `Bytes` instead of `[UInt8]`
    - Use labels for functions which are overloaded
    - Use `id` label for `setContract` or similar methods
    - Implement more overloading methods for `setFunctionParameters`
        - Bytes, Data, String, [Bytes], [String]
  • Loading branch information
janaakhterov authored and qtbeee committed Nov 6, 2019
1 parent a783e31 commit 1b9229f
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 14 deletions.
21 changes: 18 additions & 3 deletions Sources/Hedera/contract/ContractCreateTransaction.swift
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import SwiftProtobuf
import Foundation
import Sodium

public class ContractCreateTransaction: TransactionBuilder {
public override init(client: Client) {
Expand All @@ -24,18 +25,32 @@ public class ContractCreateTransaction: TransactionBuilder {


@discardableResult
public func setBytecodeFile(_ id: FileId) -> Self {
public func setBytecodeFile(id: FileId) -> Self {
body.contractCreateInstance.fileID = id.toProto()

return self
}

@discardableResult
public func setConstuctorParams(_ bytes: [UInt8]) -> Self {
public func setConstuctorParams(bytes: Bytes) -> Self {
body.contractCreateInstance.constructorParameters = Data(bytes)

return self
}

@discardableResult
public func setConstuctorParams(data: Data) -> Self {
body.contractCreateInstance.constructorParameters = data

return self
}

@discardableResult
public func setConstuctorParams(string: String) -> Self {
body.contractCreateInstance.constructorParameters = Data(Array(string.utf8))

return self
}

@discardableResult
public func setGas(_ gas: UInt64) -> Self {
Expand All @@ -52,7 +67,7 @@ public class ContractCreateTransaction: TransactionBuilder {
}

@discardableResult
public func setProxyAccount(_ id: AccountId) -> Self {
public func setProxyAccount(id: AccountId) -> Self {
body.contractCreateInstance.proxyAccountID = id.toProto()

return self
Expand Down
2 changes: 1 addition & 1 deletion Sources/Hedera/contract/ContractDeleteTransaction.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ public class ContractDeleteTransaction: TransactionBuilder {
}

@discardableResult
public func setContract(_ id: ContractId) -> Self {
public func setContract(id: ContractId) -> Self {
body.contractDeleteInstance.contractID = id.toProto()

return self
Expand Down
40 changes: 34 additions & 6 deletions Sources/Hedera/contract/ContractExecuteTransaction.swift
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import SwiftProtobuf
import Foundation
import Sodium

public class ContractExecuteTransaction: TransactionBuilder {
public override init(client: Client) {
Expand All @@ -16,29 +17,56 @@ public class ContractExecuteTransaction: TransactionBuilder {
}

@discardableResult
public func setContract(_ id: ContractId) -> Self {
public func setContract(id: ContractId) -> Self {
body.contractCall.contractID = id.toProto()

return self
}

@discardableResult
public func setFunctionParameters(_ bytes: [UInt8]) -> Self {
public func setFunctionParameters(bytes: Bytes) -> Self {
body.contractCall.functionParameters = Data(bytes)

return self
}

@discardableResult
public func setFunctionParameters(_ data: Data) -> Self {
body.contractCall.functionParameters = data
public func setFunctionParameters(arrayOfBytes: [Bytes]) -> Self {
var data = Data()

for bytes in arrayOfBytes {
data.append(contentsOf: bytes)
}

body.contractCall.functionParameters = Data(data)

return self
}


@discardableResult
public func setFunctionParameters(data: Data) -> Self {
body.contractCall.functionParameters = Data(data)

return self
}

@discardableResult
public func setFunctionParameters(_ params: String) -> Self {
body.contractCall.functionParameters = Data(Array(params.utf8))
public func setFunctionParameters(string: String) -> Self {
body.contractCall.functionParameters = Data(Array(string.utf8))

return self
}

@discardableResult
public func setFunctionParameters(strings: [String]) -> Self {
var data = Data()

for string in strings {
data.append(contentsOf: Array(string.utf8))
}

body.contractCall.functionParameters = Data(data)

return self
}
Expand Down
8 changes: 4 additions & 4 deletions Sources/Hedera/contract/ContractUpdateTransaction.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,28 +23,28 @@ public class ContractUpdateTransaction: TransactionBuilder {
}

@discardableResult
public func setBytecodeFile(_ id: FileId) -> Self {
public func setBytecodeFile(id: FileId) -> Self {
body.contractUpdateInstance.fileID = id.toProto()

return self
}

@discardableResult
public func setContract(_ id: ContractId) -> Self {
public func setContract(id: ContractId) -> Self {
body.contractUpdateInstance.contractID = id.toProto()

return self
}

@discardableResult
public func setExpirationTime(_ date: Date) -> Self {
public func setExpirationTime(date: Date) -> Self {
body.fileCreate.expirationTime = date.toProto()

return self
}

@discardableResult
public func setProxyAccount(_ id: AccountId) -> Self {
public func setProxyAccount(id: AccountId) -> Self {
body.contractUpdateInstance.proxyAccountID = id.toProto()

return self
Expand Down

0 comments on commit 1b9229f

Please sign in to comment.