package Ġbr . com . j ir atorio . jira . client . config Ċ Ċ import Ġbr . com . j ir atorio . domain . CurrentUser Ċ import Ġbr . com . j ir atorio . exception . Unauthorized Exception Ċ import Ġbr . com . j ir atorio . international ization . Message Resolver Ċ import Ġbr . com . j ir atorio . jira . domain . J ira Error Ċ import Ġbr . com . j ir atorio . jira . domain . exception . J ira Exception Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġfe ign . Request Interceptor Ċ import Ġfe ign . codec . Error Decoder Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . context . annotation . Bean Ċ Ċ class ĠJira Client Configuration ( ĊĠĠĠ Ġprivate Ġval ĠobjectMapper : ĠObjectMapper , ĊĠĠĠ Ġprivate Ġval ĠcurrentUser : ĠCurrent User , ĊĠĠĠ Ġprivate Ġval Ġmessage Resolver : ĠMessage Resolver Ċ ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠLoggerFactory . getLogger ( java Class ) ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġfun Ġrequest Interceptor () Ġ= ĠRequest Interceptor Ġ{ Ġtemplate Ġ-> ĊĠĠĠĠĠĠĠ Ġtemplate . header (" Authorization ", ĠcurrentUser . jira Token ) ĊĠĠĠĠĠĠĠ Ġtemplate . header (" Accept - Language ", Ġ" en ") ĊĠĠĠĠĠĠĠ Ġtemplate . header (" X - Force - Accept - Language ", Ġ" true ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġfun Ġerror Decoder () Ġ= ĠError Decoder Ġ{ Ġmethod Key , Ġresponse Ġ-> ĊĠĠĠĠĠĠĠ Ġlog . info (" Method = error Decoder , Ġmethod Key ={}, Ġresponse ={ }", Ġmethod Key , Ġresponse ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( response . status () Ġ== Ġ 4 0 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUnauthorized Exception () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJira Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠobjectMapper . readValue ( response . body (). as InputStream (), ĠJira Error :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error (" Method = error Decoder , Ġmethod Key ={}, Ġresponse ={ }", Ġmethod Key , Ġresponse , Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJira Error ( message Resolver . resolve (" errors . session - timeout "), Ġresponse . status (). to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ