import { ResourceGroupBase } from '../../resource_group_base'
import { SUBMIT_TRANSACTION_TIMEOUT } from '../constants'
const resourceType = 'reviewable_requests'
/**
* ReviewableRequests.
*
* @class
*/
export class ReviewableRequests extends ResourceGroupBase {
/**
* Get reviewable requests.
*
* @param {object} [query] Request options.
* @param {Number} [query.page.number] Page number.
* @param {Number} [query.page.size] Page size.
* @param {string[]} [query.sort] Sorting params.
* @param {string} [query.requestor] Requestor of the request.
* @param {reviewer} [query.reviewer] Reviewer of the request.
* @param {string} [query.type] Type of the request.
*
* @return {Promise.<JsonApiResponse>}
*/
getPage (query) {
return this
._makeCallBuilder()
.get(query)
}
/**
* Get a reviewable request by id
* @param requestId
* @param {object} [query] Request options.
*
* @return {Promise.<JsonApiResponse>}
*/
get (requestId, query) {
return this
._makeRequestCallBuilder(requestId)
.get(query)
}
/**
* Manage a reviewable request.
*
* @param {string} requestId Reviewable request ID.
* @param {string} hash Reviewable request hash.
* @param {string} state The new state of the request.
* @param {string} [rejectReason] The reason why the request was rejected.
*
* @return {Promise.<JsonApiResponse>}
*/
manage (requestId, hash, state, rejectReason) {
return this._makeRequestCallBuilder(requestId)
.withCredentials()
.withTimeout(SUBMIT_TRANSACTION_TIMEOUT)
.patch({
data: {
type: resourceType,
id: requestId,
attributes: {
hash,
state,
rejectReason
}
}
})
}
/**
* Cancel a reviewable request.
*
* @param {string} requestId Reviewable request ID.
*
* @return {Promise.<JsonApiResponse>}
*/
cancel (requestId) {
return this._makeRequestCallBuilder(requestId)
.withCredentials()
.withTimeout(SUBMIT_TRANSACTION_TIMEOUT)
.delete()
}
_makeCallBuilder () {
return this._server
._makeCallBuilder()
.appendUrlSegment('requests')
}
_makeRequestCallBuilder (requestId) {
return this._makeCallBuilder().appendUrlSegment(requestId)
}
}