Skip to content

Commit b0fd0eb

Browse files
committed
finish team code review of protoParser
1 parent 396d688 commit b0fd0eb

File tree

1 file changed

+27
-143
lines changed

1 file changed

+27
-143
lines changed

src/client/protoParser.js

Lines changed: 27 additions & 143 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,20 @@ async function protoParserFunc(protoBodyData) {
1212
//store the original .proto content in the storage before parsing
1313
protoStorage.protoMaster = protoBodyData;
1414
//make unique protoID for file we are saving
15-
let protoID = Math.floor(Math.random() * 1000);
15+
let protoID = Math.floor(Math.random() * 10000);
1616
//if file path for that ID already exists, increment the ID
1717
try {
1818
while (fs.existsSync('src/client/components/composer/protos/' + protoID + '.proto')) {
19-
//file exists
19+
//if file name exists try incrementing by 1
2020
protoID += 1;
2121
}
2222
} catch(err) {
2323
console.error(err)
2424
}
25+
// const dirName = remote.app.getAppPath(); // remote.app.getAppPath() stopped working at some point so switched to process.cwd()
26+
2527
// write to saveProto file for interaction with the server
26-
// const dirName = remote.app.getAppPath(); // uncomment when done testing above
27-
fs.writeFileSync(path.join(process.cwd(), 'src/client/components/composer/protos/' + protoID + '.proto'), protoBodyData, 'utf-8')
28-
console.log('Proto file has been saved')
29-
// });
28+
fs.writeFileSync(path.join(process.cwd(), 'src/client/components/composer/protos/' + protoID + '.proto'), protoBodyData, 'utf-8');
3029

3130
// define the modular client for testing
3231
// declare path variable of imported proto file
@@ -40,40 +39,31 @@ async function protoParserFunc(protoBodyData) {
4039
defaults: true,
4140
oneofs:true
4241
};
43-
// console.log('before protoLoader');
44-
//create gRPC package definition w/ protoLoader
42+
43+
//create gRPC package definition w/ protoLoader library
4544
protoStorage.packageDefinition = protoLoader.loadSync(PROTO_PATH, protoOptionsObj);
46-
// console.log('after protoLoader');
45+
4746
//create descriptor from package packageDefinition
4847
//descriptor --> gRPC uses the Protobuf .proto file format to define your messages, services and some aspects of the code generation.
4948
protoStorage.descriptor = grpc.loadPackageDefinition(protoStorage.packageDefinition);
50-
// console.log(protoStorage.descriptor);
5149
protoStorage.packageName = Object.keys(protoStorage.descriptor)[0];
52-
// console.log('package name: ',protoStorage.packageName);
5350
protoStorage.descriptorDefinition = protoStorage.descriptor[protoStorage.packageName];
54-
// console.log('protoStorage.descriptorDefinition: ',protoStorage.descriptorDefinition);
5551
protoStorage.protoPath = PROTO_PATH;
56-
// console.log(PROTO_PATH);
52+
53+
// Store the services from the current .proto file
5754
const serviceArr = [];
5855
for (let [serviceName, serviceDef] of Object.entries(protoStorage.descriptorDefinition)){
5956
if (typeof serviceDef === 'function') {
60-
// console.log('serviceName: ', serviceName);
61-
// console.log('serviceDef: ', serviceDef);
6257
const serviceObj = {};
6358
serviceObj.packageName = protoStorage.packageName;
64-
// console.log('serviceName, serviceDef: ', serviceName, serviceDef);
6559
serviceObj.name = serviceName;
6660
serviceObj.rpcs = [];
6761
serviceObj.messages = []
68-
let counter = 1;
62+
6963
for (let [requestName, requestDef] of Object.entries(serviceDef.service)) {
70-
// console.log('counter: ', counter);
71-
counter++
72-
// console.log('requestName: ', requestName);
73-
// console.log('requestDef: ', requestDef);
7464
const streamingReq = requestDef.requestStream;
7565
const streamingRes = requestDef.responseStream;
76-
// console.log('streamingReq, streamingRes: ', streamingReq, streamingRes);
66+
7767
let stream = 'UNARY';
7868
if (streamingReq) stream = 'CLIENT STREAM';
7969
if (streamingRes) stream = 'SERVER STREAM';
@@ -87,13 +77,11 @@ async function protoParserFunc(protoBodyData) {
8777
res: messageNameRes
8878
});
8979

90-
// console.log('serviceName: ', serviceName); // ServiceName
91-
// console.log('requestName: ', requestName); // RPC Request Name
92-
// console.log('requestDef: ', requestDef); // too much info
80+
// create object with proto info that is formatted for interaction with Swell frontend
9381
let draftObj;
9482
requestDef.requestType.type.field.forEach((msgObj) => {
9583
let mName = msgObj.name;
96-
// let mType = msgObj.type;
84+
// bool will track if the message is a nested type
9785
let bool = false;
9886
if (msgObj.type === 'TYPE_MESSAGE') bool = true;
9987
if (!draftObj) {
@@ -108,6 +96,7 @@ async function protoParserFunc(protoBodyData) {
10896
draftObj.def[mName].nested = bool ;
10997
draftObj.def[mName].dependent = msgObj.typeName ;
11098

99+
// Frontend expects a message object in the following format
111100
// {
112101
// name: messageNameReq,
113102
// def: {
@@ -121,37 +110,9 @@ async function protoParserFunc(protoBodyData) {
121110

122111
})
123112
serviceObj.messages.push(draftObj)
124-
/*
125-
requestDef.responseType.type.field.forEach((msgObj) => {
126-
let mName = msgObj.name;
127-
// let mType = msgObj.type;
128-
let bool = false;
129-
if (msgObj.type === 'TYPE_MESSAGE') bool = true;
130113

131-
serviceObj.messages.push({
132-
name: messageNameRes,
133-
def: {[mName]: msgObj.type},
134-
nested: bool,
135-
dependent: msgObj.typeName
136-
})
137-
// serviceObj.messages.def =
138-
})
139-
*/ // not using the details of the response object since user will run
114+
// not using the details of the response object (requestDef.responseType) since user will run
140115
// their own server
141-
142-
// serviceObj[serviceName][requestName]
143-
// console.log('Request message type: ',requestDef.requestType.type); // need to iterate through .field to get all types per message
144-
// console.log('Request message name: ',requestDef.requestType.type.name); // Request message name
145-
// console.log('Request message type.field: ',requestDef.requestType.type.field);
146-
// console.log('message reqField [0].name: ', (requestDef.requestType.type.field)[0].name); // name of individual message field within message
147-
// console.log('message reqField [0].type: ', (requestDef.requestType.type.field)[0].type); // type of individual message field per message
148-
// console.log('Response message name: ',requestDef.responseType.type.name);// Response message name
149-
// console.log('Response message type.field: ',requestDef.responseType.type.field);
150-
// console.log('message resField [0].name: ', (requestDef.responseType.type.field)[0].name); // name of individual content type within message
151-
// console.log('message resField [0].type: ', (requestDef.responseType.type.field)[0].type);// type of individual content type per message
152-
153-
// console.log('serviceObj: ', serviceObj);
154-
// console.log('serviceObj.messages: ', serviceObj.messages);
155116
}
156117
serviceArr.push(serviceObj);
157118
}
@@ -162,102 +123,25 @@ async function protoParserFunc(protoBodyData) {
162123
// test run of protoParser
163124
// protoParser(tempData);
164125
//
126+
//current target shape of parsed grpc service object for frontend
165127
//this.state.services = [
166128
// {name: 'ServiceName',
167-
// messages: [{name: 'messageName',
168-
// def: {messageDef}
169-
// }]
129+
// messages: [{
130+
// name: messageNameReq,
131+
// def: {
132+
// [mName]: {
133+
// type:msgObj.type,
134+
// nested: bool,
135+
// dependent: msgObj.typeName}
136+
// }
137+
// }]
170138
// rpcs: [{name: 'RPC Name',
171139
// type: 'Stream Type',
172140
// req: 'MessageName for Requst',
173141
// res: 'MessageName for Response'}]
174142
// }]
175143
//
176-
// this.state.services: [
177-
// {
178-
// name: 'BookService',
179-
// messages: [
180-
// {
181-
// name: "Book",
182-
// def: {
183-
// isbn: 'int64',
184-
// title: 'string',
185-
// author: 'string',
186-
// }
187-
// },
188-
// {
189-
// name: "GetBookRequest",
190-
// def: {
191-
// isbn: 'int64'
192-
// }
193-
// },
194-
// {
195-
// name: "GetBookViaAuthor",
196-
// def: {
197-
// author: 'string',
198-
// }
199-
// }
200-
// ],
201-
// rpcs: [
202-
// {
203-
// name: "GetBook",
204-
// type: 'UNARY',
205-
// req: 'GetBookRequest',
206-
// res: 'Book'
207-
// },
208-
// {
209-
// name: "GetBooksViaAuthor",
210-
// type: 'SERVER STREAM',
211-
// req: 'GetBookViaAuthor',
212-
// res: 'Book'
213-
// },
214-
// {
215-
// name: "GetGreatestBook",
216-
// type: 'CLIENT STREAM',
217-
// req: 'GetBookRequest',
218-
// res: 'Book'
219-
// },
220-
// {
221-
// name: "GetBooks",
222-
// type: 'BIDIRECTIONAL',
223-
// req: 'GetBookRequest',
224-
// res: 'Book'
225-
// },
226-
// ]
227-
// },
228-
// {
229-
// name: 'DogService',
230-
// messages: [
231-
// {
232-
// name: "Info",
233-
// def: {
234-
// name: 'string',
235-
// breed: 'string'
236-
// }
237-
// },
238-
// {
239-
// name: "GetAge",
240-
// def: {
241-
// age: 'string'
242-
// }
243-
// }
244-
// ],
245-
// rpcs: [
246-
// {
247-
// name: "GetInfo",
248-
// type: 'UNARY',
249-
// req: 'GetAge',
250-
// res: 'Info',
251-
// },
252-
// {
253-
// name: "GetBackground",
254-
// type: 'BIDIRECTIONAL',
255-
// req: 'GetAge',
256-
// res: 'Info'
257-
// },
258-
// ]
259-
// }
260-
// ]
144+
261145
// console.log(tempData);
262146
// protoParserFunc(tempData).catch((err) => console.log(err));
263147
export default protoParserFunc

0 commit comments

Comments
 (0)