All files / lib/resolvers accept-language.resolver.ts

100% Statements 11/11
75% Branches 3/4
100% Functions 2/2
100% Lines 9/9

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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  1x   1x     1x           6x   6x       6x 3x 3x   3x      
import { I18nResolver } from '../index';
import { Injectable, ExecutionContext } from '@nestjs/common';
import { I18nService } from '../services/i18n.service';
import { pick } from 'accept-language-parser';
 
@Injectable()
export class AcceptLanguageResolver implements I18nResolver {
  constructor() {}
 
  async resolve(
    context: ExecutionContext,
  ): Promise<string | string[] | undefined> {
    const req = context.switchToHttp().getRequest();
 
    const lang: string = req.raw
      ? req.raw.headers['accept-language']
      : req.headers['accept-language'];
 
    if (lang) {
      const service: I18nService = req.i18nService;
      return pick(await service.getSupportedLanguages(), lang);
    }
    return lang;
  }
}