package com.gyee.impala.common.feign;

import com.gyee.impala.common.config.GyeeConfig;
import feign.Feign;
import feign.Request;
import feign.Retryer;
import feign.jackson.JacksonDecoder;
import feign.jackson.JacksonEncoder;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;


@Slf4j
@Component
public class RemoteServiceBuilder {

    @Autowired
    private GyeeConfig config;

    @Bean
    public IAdapterService adapter() {
        return Feign.builder()
                .encoder(new JacksonEncoder())
                .decoder(new JacksonDecoder())
                .options(new Request.Options(5000, 600000))
                .retryer(new Retryer.Default(10000, 10000, 3))
                .target(IAdapterService.class, config.getGoldenUrl());
    }

    @Bean
    public IShardingService sharding() {
        return Feign.builder()
                .encoder(new JacksonEncoder())
                .decoder(new JacksonDecoder())
                .options(new Request.Options(5000, 600000))
                .retryer(new Retryer.Default(10000, 10000, 3))
                .target(IShardingService.class, config.getAlertUrl());
    }
    @Bean
    public IHostService hostparam() {
        return Feign.builder()
                .encoder(new JacksonEncoder())
                .decoder(new JacksonDecoder())
                .options(new Request.Options(5000, 600000))
                .retryer(new Retryer.Default(10000, 10000, 3))
                .target(IHostService.class, config.getHostUrl());
    }
}