firebase-app-distribution
Version:
A library that uses Firebase App Distribution APIs.
145 lines • 6.18 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("./utils");
class Groups {
constructor(parent, projectNumber) {
this.projectNumber = projectNumber;
this.parent = parent;
}
create({ displayName, groupId = "" }) {
return __awaiter(this, void 0, void 0, function* () {
const query = groupId !== "" ? `?groupId=${groupId}` : "";
const accessToken = yield this.parent.getAccessToken();
const url = `${(0, utils_1.constructUrl)(this.projectNumber, "groups")}${query}`;
const requestBody = JSON.stringify({
displayName,
});
const response = yield (0, utils_1.makeRequest)(url, {
headers: {
authorization: `Bearer ${accessToken}`,
},
body: requestBody,
method: "POST",
});
return response;
});
}
delete(groupId) {
return __awaiter(this, void 0, void 0, function* () {
const accessToken = yield this.parent.getAccessToken();
const url = `${(0, utils_1.constructUrl)(this.projectNumber, `groups/${groupId}`)}`;
// This response body is an empty object if successfull.
// See: https://firebase.google.com/docs/reference/app-distribution/rest/v1/projects.groups/delete#response-body
yield (0, utils_1.makeRequest)(url, {
headers: {
authorization: `Bearer ${accessToken}`,
},
body: null,
method: "DELETE",
});
return 200;
});
}
get(groupId) {
return __awaiter(this, void 0, void 0, function* () {
const accessToken = yield this.parent.getAccessToken();
const url = `${(0, utils_1.constructUrl)(this.projectNumber, `groups/${groupId}`)}`;
try {
const response = yield (0, utils_1.makeRequest)(url, {
headers: {
authorization: `Bearer ${accessToken}`,
},
body: null,
method: "GET",
});
return response;
}
catch (_) {
return null;
}
});
}
list({ pageSize = 25, maxPages = 10 } = {}) {
return __awaiter(this, void 0, void 0, function* () {
const accessToken = yield this.parent.getAccessToken();
let groupList = [];
let query = `?pageSize=${pageSize}`;
let nextPageToken = "";
for (let page = 0; page < maxPages; page++) {
nextPageToken =
nextPageToken !== ""
? `&pageToken=${encodeURIComponent(nextPageToken)}`
: "";
const url = `${(0, utils_1.constructUrl)(this.projectNumber, "groups")}${query}${nextPageToken}`;
const response = yield (0, utils_1.makeRequest)(url, {
headers: {
authorization: `Bearer ${accessToken}`,
},
body: null,
method: "GET",
});
if (response.groups === undefined) {
break;
}
groupList.push(...response.groups);
if (response.nextPageToken !== undefined) {
nextPageToken = response.nextPageToken;
}
else {
break;
}
}
return groupList;
});
}
removeTesters({ groupId, emails, }) {
return __awaiter(this, void 0, void 0, function* () {
const accessToken = yield this.parent.getAccessToken();
const url = (0, utils_1.constructUrl)(this.projectNumber, `groups/${groupId}:batchLeave`);
const reuqestBody = JSON.stringify({
emails,
});
// This response body is an empty object if successfull.
// See: https://firebase.google.com/docs/reference/app-distribution/rest/v1/projects.groups/batchLeave#response-body
yield (0, utils_1.makeRequest)(url, {
headers: {
authorization: `Bearer ${accessToken}`,
},
body: reuqestBody,
method: "POST",
});
return 200;
});
}
addTesters({ groupId, emails }) {
return __awaiter(this, void 0, void 0, function* () {
const accessToken = yield this.parent.getAccessToken();
const url = (0, utils_1.constructUrl)(this.projectNumber, `groups/${groupId}:batchJoin`);
const reuqestBody = JSON.stringify({
emails,
createMissingTesters: true,
});
// This response body is an empty object if successfull.
// See: https://firebase.google.com/docs/reference/app-distribution/rest/v1/projects.groups/batchJoin#response-body
yield (0, utils_1.makeRequest)(url, {
headers: {
authorization: `Bearer ${accessToken}`,
},
body: reuqestBody,
method: "POST",
});
return 200;
});
}
}
exports.default = Groups;
//# sourceMappingURL=groups.js.map