All files / lib/resolvers header.resolver.ts

84.21% Statements 16/19
55.56% Branches 5/9
100% Functions 2/2
82.35% Lines 14/17

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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44  1x 1x       1x     1x           12x   12x 12x               12x 12x 12x         12x 3x 3x         12x      
import { I18nResolver } from '../index';
import { Injectable, ExecutionContext } from '@nestjs/common';
import { I18nResolverOptions } from '../decorators/i18n-resolver-options.decorator';
import { I18nLanguages } from '../decorators/i18n-languages.decorator';
 
@Injectable()
export class HeaderResolver implements I18nResolver {
  constructor(
    @I18nResolverOptions()
    private keys: string[] = [],
  ) {}
 
  resolve(context: ExecutionContext) {
    let req: any;
 
    switch (context.getType() as string) {
      case 'http':
        req = context.switchToHttp().getRequest();
        break;
      case 'graphql':
        [, , { req }] = context.getArgs();
        break;
    }
 
    let lang: string;
 
    Eif (req) {
      for (const key of this.keys) {
        Iif (key === 'accept-language') {
          console.warn(
            'HeaderResolver does not support RFC4647 Accept-Language header. Please use AcceptLanguageResolver instead.',
          );
        }
        if (req.headers[key] !== undefined) {
          lang = req.headers[key];
          break;
        }
      }
    }
 
    return lang;
  }
}