improve logging for alt rfq request (#158)
* improve logging for alt rfq request * clean up unsuccessful status code logic * Fix quote requestor tests * get rid of unnecessary promise handling * remove unused code * update changelog * changed warning message for no quote * appease prettier
This commit is contained in:
		@@ -13,6 +13,10 @@
 | 
			
		||||
            {
 | 
			
		||||
                "note": "Rename {Rfqt=>Rfq} for many types in Asset Swapper",
 | 
			
		||||
                "pr": 179
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "note": "improve logging for alt RFQ requests",
 | 
			
		||||
                "pr": 158
 | 
			
		||||
            }
 | 
			
		||||
        ]
 | 
			
		||||
    },
 | 
			
		||||
 
 | 
			
		||||
@@ -12,8 +12,11 @@ import {
 | 
			
		||||
    AltQuoteRequestData,
 | 
			
		||||
    AltQuoteSide,
 | 
			
		||||
    AltRfqMakerAssetOfferings,
 | 
			
		||||
    LogFunction,
 | 
			
		||||
} from '../types';
 | 
			
		||||
 | 
			
		||||
const SUCCESS_CODE = 201;
 | 
			
		||||
 | 
			
		||||
function getAltMarketInfo(
 | 
			
		||||
    offerings: AltOffering[],
 | 
			
		||||
    buyTokenAddress: string,
 | 
			
		||||
@@ -122,6 +125,7 @@ export async function returnQuoteFromAltMMAsync<ResponseT>(
 | 
			
		||||
    altRfqAssetOfferings: AltRfqMakerAssetOfferings,
 | 
			
		||||
    takerRequestQueryParams: TakerRequestQueryParams,
 | 
			
		||||
    axiosInstance: AxiosInstance,
 | 
			
		||||
    warningLogger: LogFunction,
 | 
			
		||||
    cancelToken: CancelToken,
 | 
			
		||||
): Promise<{ data: ResponseT; status: number }> {
 | 
			
		||||
    const altPair = getAltMarketInfo(
 | 
			
		||||
@@ -212,14 +216,44 @@ export async function returnQuoteFromAltMMAsync<ResponseT>(
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const response = await axiosInstance.post(`${url}/quotes`, data, {
 | 
			
		||||
    const response = await axiosInstance
 | 
			
		||||
        .post(`${url}/quotes`, data, {
 | 
			
		||||
            headers: { Authorization: `Bearer ${apiKey}` },
 | 
			
		||||
            timeout: maxResponseTimeMs,
 | 
			
		||||
            cancelToken,
 | 
			
		||||
        })
 | 
			
		||||
        .catch(err => {
 | 
			
		||||
            warningLogger(err, `Alt RFQ MM request failed`);
 | 
			
		||||
            throw new Error(`Alt RFQ MM request failed`);
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
    // empty response will get filtered out in validation
 | 
			
		||||
    const emptyResponse = {};
 | 
			
		||||
 | 
			
		||||
    // tslint:disable-next-line:custom-no-magic-numbers
 | 
			
		||||
    if (response.status !== SUCCESS_CODE) {
 | 
			
		||||
        const rejectedRequestInfo = {
 | 
			
		||||
            status: response.status,
 | 
			
		||||
            message: response.data,
 | 
			
		||||
        };
 | 
			
		||||
        warningLogger(rejectedRequestInfo, `Alt RFQ MM did not return a status of ${SUCCESS_CODE}`);
 | 
			
		||||
        return {
 | 
			
		||||
            data: (emptyResponse as unknown) as ResponseT,
 | 
			
		||||
            status: response.status,
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
    // successful handling but no quote is indicated by status = 'rejected'
 | 
			
		||||
    if (response.data.status === 'rejected') {
 | 
			
		||||
        throw new Error('alt MM rejected quote');
 | 
			
		||||
        warningLogger(
 | 
			
		||||
            response.data.id,
 | 
			
		||||
            `Alt RFQ MM handled the request successfully but did not return a quote (status = 'rejected')`,
 | 
			
		||||
        );
 | 
			
		||||
        return {
 | 
			
		||||
            data: (emptyResponse as unknown) as ResponseT,
 | 
			
		||||
            // hack: set the http status to 204 no content so we can more
 | 
			
		||||
            // easily track when no quote is returned
 | 
			
		||||
            status: 204,
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const parsedResponse =
 | 
			
		||||
 
 | 
			
		||||
@@ -10,8 +10,8 @@ import {
 | 
			
		||||
    AltRfqMakerAssetOfferings,
 | 
			
		||||
    LogFunction,
 | 
			
		||||
    MarketOperation,
 | 
			
		||||
    RfqPairType,
 | 
			
		||||
    RfqMakerAssetOfferings,
 | 
			
		||||
    RfqPairType,
 | 
			
		||||
    RfqRequestOpts,
 | 
			
		||||
    SignedNativeOrder,
 | 
			
		||||
    TypedMakerUrl,
 | 
			
		||||
@@ -455,6 +455,7 @@ export class QuoteRequestor {
 | 
			
		||||
                            options.altRfqAssetOfferings || {},
 | 
			
		||||
                            requestParams,
 | 
			
		||||
                            this._quoteRequestorHttpClient,
 | 
			
		||||
                            this._warningLogger,
 | 
			
		||||
                            cancelTokenSource.token,
 | 
			
		||||
                        );
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -40,6 +40,8 @@ const ALT_RFQ_CREDS = {
 | 
			
		||||
    altRfqProfile: ALT_PROFILE,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const CREATED_STATUS_CODE = 201;
 | 
			
		||||
 | 
			
		||||
function makeThreeMinuteExpiry(): BigNumber {
 | 
			
		||||
    const expiry = new Date(Date.now());
 | 
			
		||||
    expiry.setMinutes(expiry.getMinutes() + 3);
 | 
			
		||||
@@ -188,7 +190,7 @@ describe('QuoteRequestor', async () => {
 | 
			
		||||
            altMockedRequests.push({
 | 
			
		||||
                endpoint: 'https://132.0.0.1',
 | 
			
		||||
                mmApiKey: ALT_MM_API_KEY,
 | 
			
		||||
                responseCode: StatusCodes.Success,
 | 
			
		||||
                responseCode: CREATED_STATUS_CODE,
 | 
			
		||||
                requestData: altFirmRequestData,
 | 
			
		||||
                responseData: altFirmResponse,
 | 
			
		||||
            });
 | 
			
		||||
@@ -566,7 +568,7 @@ describe('QuoteRequestor', async () => {
 | 
			
		||||
            altMockedRequests.push({
 | 
			
		||||
                endpoint: 'https://132.0.0.1',
 | 
			
		||||
                mmApiKey: ALT_MM_API_KEY,
 | 
			
		||||
                responseCode: StatusCodes.Success,
 | 
			
		||||
                responseCode: CREATED_STATUS_CODE,
 | 
			
		||||
                requestData: buyAmountAltRequest,
 | 
			
		||||
                responseData: buyAmountAltResponse,
 | 
			
		||||
            });
 | 
			
		||||
@@ -612,7 +614,7 @@ describe('QuoteRequestor', async () => {
 | 
			
		||||
            altMockedRequests.push({
 | 
			
		||||
                endpoint: 'https://132.0.0.1',
 | 
			
		||||
                mmApiKey: ALT_MM_API_KEY,
 | 
			
		||||
                responseCode: StatusCodes.Success,
 | 
			
		||||
                responseCode: CREATED_STATUS_CODE,
 | 
			
		||||
                requestData: buyValueAltRequest,
 | 
			
		||||
                responseData: buyValueAltResponse,
 | 
			
		||||
            });
 | 
			
		||||
@@ -658,7 +660,7 @@ describe('QuoteRequestor', async () => {
 | 
			
		||||
            altMockedRequests.push({
 | 
			
		||||
                endpoint: 'https://132.0.0.1',
 | 
			
		||||
                mmApiKey: ALT_MM_API_KEY,
 | 
			
		||||
                responseCode: StatusCodes.Success,
 | 
			
		||||
                responseCode: CREATED_STATUS_CODE,
 | 
			
		||||
                requestData: sellAmountAltRequest,
 | 
			
		||||
                responseData: sellAmountAltResponse,
 | 
			
		||||
            });
 | 
			
		||||
@@ -704,7 +706,7 @@ describe('QuoteRequestor', async () => {
 | 
			
		||||
            altMockedRequests.push({
 | 
			
		||||
                endpoint: 'https://132.0.0.1',
 | 
			
		||||
                mmApiKey: ALT_MM_API_KEY,
 | 
			
		||||
                responseCode: StatusCodes.Success,
 | 
			
		||||
                responseCode: CREATED_STATUS_CODE,
 | 
			
		||||
                requestData: sellValueAltRequest,
 | 
			
		||||
                responseData: sellValueAltResponse,
 | 
			
		||||
            });
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user