forked from IBM/blockchainbean2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
commands.txt
233 lines (172 loc) · 7.02 KB
/
commands.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
{
"$class": "org.ibm.coffee.Grower",
"isFairTrade": true,
"growerId": "Grower-0201",
"organization": "Ethiopia Gedeb 1 Banko Gotiti GrainPro",
"address": {
"$class": "org.ibm.coffee.Address",
"city": "Gedeb",
"country": "Ethiopia",
"street": "N/A",
"zip": "N/A"
}
}
//the IBP blockchainClient.ts file
const { FileSystemWallet, Gateway, X509WalletMixin } = require('fabric-network');
const fs = require('fs');
const path = require('path');
// capture network variables from config.json (needed for Cloud connection)
const configPath = path.join(process.cwd(), './../server/config.json');
const configJSON = fs.readFileSync(configPath, 'utf8');
const config = JSON.parse(configJSON);
var userName = config.userName;
var gatewayDiscovery = config.gatewayDiscovery;
// connect to the connection file (needed for Cloud connection)
const credentialsPath = path.join(process.cwd(), './../server/connection.json');
const credentialsJSON = fs.readFileSync(credentialsPath, 'utf8');
const credentials = JSON.parse(credentialsJSON);
// A wallet stores a collection of identities for use
// const wallet = new FileSystemWallet('./local_fabric/wallet');
// console.log('wallet')
// console.log(wallet)
export module BlockChainModule {
export class BlockchainClient {
async connectToNetwork() {
const gateway = new Gateway();
try {
const walletPath = path.join(process.cwd(), './../server/wallet');
const wallet = new FileSystemWallet(walletPath);
console.log(`Wallet path: ${walletPath}`);
// const identityLabel = '[email protected]';
// let connectionProfile = yaml.safeLoad(fs.readFileSync('./network.yaml', 'utf8'));
// let connectionOptions = {
// identity: identityLabel,
// wallet: wallet,
// discovery: {
// asLocalhost: true
// }
// };
await gateway.connect(credentials, { wallet, identity: userName, discovery: gatewayDiscovery });
// Connect to gateway using network.yaml file and our certificates in _idwallet directory
// await gateway.connect(connectionProfile, connectionOptions);
console.log('Connected to Fabric gateway.');
// Connect to our local fabric
const network = await gateway.getNetwork('mychannel');
console.log('Connected to mychannel. ');
// Get the contract we have installed on the peer
const contract = await network.getContract('blockchainbean2');
let networkObj = {
contract: contract,
network: network
};
return networkObj;
} catch (error) {
console.log(`Error processing transaction. ${error}`);
console.log(error.stack);
} finally {
console.log('Done connecting to network.');
// gateway.disconnect();
}
}
async addMember(args: any) {
//call addMember smart contract function
//$TODO: dynamically call submitTransaction
let response = await args.contract.submitTransaction(args.function,
args.id, args.organization, args.address, args.memberType);
return response;
}
async queryByKey2(contract: any, keyPassed: any) {
// let str = 'query'
// let response = await keyPassed.contract.submitTransaction('query', 'arg1', 'arg2');
let response = await contract.evaluateTransaction('query', keyPassed);
console.log('query by key response: ')
console.log(JSON.parse(response.toString()))
console.log(response.length)
if (response.length === 2) {
response = `${keyPassed} does not exist`;
return response;
}
response = JSON.parse(response.toString());
return response;
}
async queryAll(contract: any) {
let response = await contract.evaluateTransaction('queryAll');
console.log(response.toString())
return response;
}
async queryByKey(keyPassed: any) {
// let str = 'query'
// let response = await keyPassed.contract.submitTransaction('query', 'arg1', 'arg2');
let response = await keyPassed.contract.evaluateTransaction('query', keyPassed.id);
console.log('query by key response: ')
console.log(JSON.parse(response.toString()))
console.log(response.length)
if (response.length === 2) {
response = `${keyPassed.id} does not exist`;
return response;
}
response = JSON.parse(response.toString());
return response;
}
async submitFairTradeData(args: any) {
console.log('args in the blockchain client')
console.log(args)
let response = await args.contract.submitTransaction(args.function,
args.reportName, args.orgDescription, args.reportYear, args.fairTradePremiumInvested,
args.investmentTitle1, args.investmentAmount1, args.investmentAmount2, args.investmentTitle2,
args.investmentAmount3, args.investmentTitle3, args.batchId, args.transactionId, args.timestamp);
return response;
}
async submitCupping(args: any) {
console.log('args in the blockchain client')
console.log(args)
let response = await args.contract.submitTransaction(args.function,
args.cupper, args.aroma, args.flavor, args.afterTaste,
args.acidity, args.body, args.finalScore, args.batchId,
args.transactionId, args.timestamp);
return response;
}
async submitPackingList(args: any) {
console.log('args in the blockchain client, packing list')
console.log(args)
let response = await args.contract.submitTransaction(args.function,
args.grower, args.trader, args.PL_Invoice_no, args.PL_IssueDate,
args.PL_ICO_no, args.PL_ICO_Lot, args.PL_FDA_NO,
args.PL_Bill_of_Lading_No, args.PL_LoadedVessel, args.PL_VesselVoyage_No,
args.PL_Container_No, args.PL_Seal_no, args.PL_timestamp, args.batchId,
args.transactionId, args.timestamp
);
return response;
}
async submitWeightTally(args: any) {
console.log('args in the blockchain client,weight tally')
console.log(args)
let response = await args.contract.submitTransaction(args.function,
args.dateStripped, args.marks, args.bagsExpected, args.condition,
args.insectActivity, args.batchId, args.transactionId, args.timestamp
);
return response;
}
async addCoffee(args: any) {
console.log('args in the blockchain client,addcoffee')
console.log(args)
let response = await args.contract.submitTransaction(args.function,
args.size, args.roast, args.batchState, args.grower,
args.transactionId, args.timestamp
);
return response;
}
async pourCup(args: any) {
console.log('args in the blockchain client,addcoffee')
console.log(args)
let response = await args.contract.submitTransaction(args.function,
args.cupId, args.batchId, args.transactionId
);
if (response.length === 2) {
response = `batchId ${args.batchId} does not exist`;
return response;
}
return response;
}
}
}