public static void main(String... args) { Decoder decoder = new GsonDecoder(); GitHub github = Feign.builder() .decoder(decoder) .errorDecoder(new GitHubErrorDecoder(decoder)) .logger(new Logger.ErrorLogger()) .logLevel(Logger.Level.BASIC) .target(GitHub.class, "https://api.github.com"); System.out.println("Let's fetch and print a list of the contributors to this library."); List<Contributor> contributors = github.contributors("netflix", "feign"); for (Contributor contributor : contributors) { System.out.println(contributor.login + " (" + contributor.contributions + ")"); } System.out.println("Now, let's cause an error."); try { github.contributors("netflix", "some-unknown-project"); } catch (GitHubClientError e) { System.out.println(e.getMessage()); } }
public Cudami(BackendUrls backendUrls) { ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(new DigitalCollectionsModelModule()); Feign.Builder feign = ReflectiveFeign.builder() .decoder(new JacksonDecoder(mapper)) .encoder(new JacksonEncoder(mapper)) .errorDecoder(new CudamiRestErrorDecoder()) .logger(new Slf4jLogger()) .logLevel(Logger.Level.BASIC) .retryer(new Retryer.Default()); this.clientFactory = new ClientFactory(feign, backendUrls); this.clients = new ConcurrentHashMap(); }
/** * The generalized version of the method that allows more in-depth customizations via * {@link RequestInterceptor}s. * * @param endpoint * URL of Marathon * @param interceptors optional request interceptors * @return Marathon client */ public static Marathon getInstance(String endpoint, RequestInterceptor... interceptors) { Builder b = Feign.builder() .encoder(new GsonEncoder(ModelUtils.GSON)) .decoder(new GsonDecoder(ModelUtils.GSON)) .errorDecoder(new MarathonErrorDecoder()); if (interceptors != null) b.requestInterceptors(asList(interceptors)); String debugOutput = System.getenv(DEBUG_JSON_OUTPUT); if ("System.out".equals(debugOutput)) { System.setProperty("org.slf4j.simpleLogger.logFile", "System.out"); System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "debug"); b.logger(new Slf4jLogger()).logLevel(Logger.Level.FULL); } else if (debugOutput != null) { b.logger(new Logger.JavaLogger().appendToFile(debugOutput)).logLevel(Logger.Level.FULL); } b.requestInterceptor(new MarathonHeadersInterceptor()); return b.target(Marathon.class, endpoint); }
builder.client(client); builder.logger(logger); builder.logLevel(level); int connectTimeout = fc.connectTimeout(); if (connectTimeout == 0)
builder.logLevel(config.getLoggerLevel());
builder.logLevel(config.getLoggerLevel());
builder.logLevel(config.getLoggerLevel());
/** * The generalized version of the method that allows more in-depth customizations via * {@link RequestInterceptor}s. * * @param endpoint * URL of Marathon * @param interceptors * A collection of {@link RequestInterceptor} to use * @return * A {@link Marathon} instance using the given interceptors and endpoint URL. */ public static Marathon getInstance(String endpoint, RequestInterceptor... interceptors) { Builder b = Feign.builder() .encoder(new GsonEncoder(ModelUtils.GSON)) .decoder(new GsonDecoder(ModelUtils.GSON)) .errorDecoder(new MarathonErrorDecoder()); if (interceptors != null) b.requestInterceptors(asList(interceptors)); String debugOutput = System.getenv(DEBUG_JSON_OUTPUT); if ("System.out".equals(debugOutput)) { System.setProperty("org.slf4j.simpleLogger.logFile", "System.out"); System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "debug"); b.logger(new Slf4jLogger()).logLevel(Logger.Level.FULL); } else if (debugOutput != null) { b.logger(new Logger.JavaLogger().appendToFile(debugOutput)).logLevel(Logger.Level.FULL); } b.requestInterceptor(new MarathonHeadersInterceptor()); return b.target(Marathon.class, endpoint); }
.client(client) .logger(new Slf4jLogger()) .logLevel(logLevel) .contract(new JAXRSContract()) .encoder(new JacksonEncoder(mapper))
protected void configureUsingConfiguration(FeignContext context, Feign.Builder builder) { Logger.Level level = getOptional(context, Logger.Level.class); if (level != null) { builder.logLevel(level); } Retryer retryer = getOptional(context, Retryer.class); if (retryer != null) { builder.retryer(retryer); } ErrorDecoder errorDecoder = getOptional(context, ErrorDecoder.class); if (errorDecoder != null) { builder.errorDecoder(errorDecoder); } Request.Options options = getOptional(context, Request.Options.class); if (options != null) { builder.options(options); } Map<String, RequestInterceptor> requestInterceptors = context.getInstances( this.contextId, RequestInterceptor.class); if (requestInterceptors != null) { builder.requestInterceptors(requestInterceptors.values()); } if (decode404) { builder.decode404(); } }
protected void configureUsingConfiguration(FeignContext context, Feign.Builder builder) { Logger.Level level = getOptional(context, Logger.Level.class); if (level != null) { builder.logLevel(level); } Retryer retryer = getOptional(context, Retryer.class); if (retryer != null) { builder.retryer(retryer); } ErrorDecoder errorDecoder = getOptional(context, ErrorDecoder.class); if (errorDecoder != null) { builder.errorDecoder(errorDecoder); } Request.Options options = getOptional(context, Request.Options.class); if (options != null) { builder.options(options); } Map<String, RequestInterceptor> requestInterceptors = context.getInstances( this.contextId, RequestInterceptor.class); if (requestInterceptors != null) { builder.requestInterceptors(requestInterceptors.values()); } if (decode404) { builder.decode404(); } }
public BittrexClient( String baseUrl, @Nullable ApiCredentials credentials, @Nullable Logger.Level logLevel) { Util.checkNotNull(baseUrl, "The baseUrl must not be null!"); ApiBuilderFactory apiBuilderFactory = new ApiBuilderFactory(baseUrl); Feign.Builder apiBuilder = apiBuilderFactory.createApiBuilder(credentials); if (logLevel != null) { apiBuilder .logger(new Slf4jLogger(BittrexClient.class)) .logLevel(logLevel); } publicApi = apiBuilder.target(BittrexPublicApi.class, baseUrl); credentialsAvailable = credentials != null; if(credentialsAvailable) { marketApi = apiBuilder.target(BittrexMarketApi.class, baseUrl); accountApi = apiBuilder.target(BittrexAccountApi.class, baseUrl); } }
public final <T> T build(Class<T> serviceClass, UserAgent userAgent) { ObjectMapper objectMapper = getObjectMapper(); ObjectMapper cborObjectMapper = getCborObjectMapper(); Preconditions.checkNotNull(hostEventsSink, "hostEventsSink must be set"); okhttp3.OkHttpClient okHttpClient = OkHttpClients.create(config, userAgent, hostEventsSink, serviceClass); return Feign.builder() .contract(createContract()) .encoder( new ConjureInputStreamDelegateEncoder( new ConjureTextDelegateEncoder( new ConjureCborDelegateEncoder( cborObjectMapper, new JacksonEncoder(objectMapper))))) .decoder(createDecoder(objectMapper, cborObjectMapper)) .client(new OkHttpClient(okHttpClient)) .options(createRequestOptions()) .logLevel(Logger.Level.NONE) // we use OkHttp interceptors for logging. (note that NONE is the default) .retryer(new Retryer.Default(0, 0, 1)) // use OkHttp retry mechanism only .target(serviceClass, primaryUri); }
public final <T> T build(Class<T> serviceClass, UserAgent userAgent) { ObjectMapper objectMapper = getObjectMapper(); ObjectMapper cborObjectMapper = getCborObjectMapper(); Preconditions.checkNotNull(hostEventsSink, "hostEventsSink must be set"); okhttp3.OkHttpClient okHttpClient = OkHttpClients.create(config, userAgent, hostEventsSink, serviceClass); return Feign.builder() .contract(createContract()) .encoder( new ConjureInputStreamDelegateEncoder( new ConjureTextDelegateEncoder( new ConjureCborDelegateEncoder( cborObjectMapper, new JacksonEncoder(objectMapper))))) .decoder(createDecoder(objectMapper, cborObjectMapper)) .client(new OkHttpClient(okHttpClient)) .options(createRequestOptions()) .logLevel(Logger.Level.NONE) // we use OkHttp interceptors for logging. (note that NONE is the default) .retryer(new Retryer.Default(0, 0, 1)) // use OkHttp retry mechanism only .target(serviceClass, primaryUri); }
public final <T> T build(Class<T> serviceClass, UserAgent userAgent) { ObjectMapper objectMapper = getObjectMapper(); ObjectMapper cborObjectMapper = getCborObjectMapper(); okhttp3.OkHttpClient okHttpClient = Optional.ofNullable(hostEventsSink) .map(hostEvents -> OkHttpClients.create(config, userAgent, hostEvents, serviceClass)) .orElseGet(() -> OkHttpClients.create(config, userAgent, serviceClass)); return Feign.builder() .contract(createContract()) .encoder( new InputStreamDelegateEncoder( new TextDelegateEncoder( new CborDelegateEncoder( cborObjectMapper, new JacksonEncoder(objectMapper))))) .decoder(createDecoder(objectMapper, cborObjectMapper)) .requestInterceptor(PathTemplateHeaderRewriter.INSTANCE) .client(new OkHttpClient(okHttpClient)) .options(createRequestOptions()) .logLevel(Logger.Level.NONE) // we use OkHttp interceptors for logging. (note that NONE is the default) .retryer(new Retryer.Default(0, 0, 1)) // use OkHttp retry mechanism only .target(serviceClass, primaryUri); }
@Provides @Singleton Feign feign(Logger logger, Logger.Level logLevel) { return Feign.builder() .logger(logger) .logLevel(logLevel) .encoder(new GsonEncoder()) .decoder(new GsonDecoder(Arrays.asList( new KeystoneAccessAdapter("rax:dns"), new JobAdapter(), new DomainListAdapter(), new RecordListAdapter())) ) .build(); } }
@Override default UpdatedResource updateContent(String repoFullName, String path, DirectCommit directCommit, String oauthToken) throws GitHubAuthorizationException { ContentClient contentClient = Feign.builder() .logger(new Slf4jLogger(ContentClient.class)) .encoder(new JacksonEncoder()) .decoder(new JacksonDecoder()) .errorDecoder(new UpdateContentErrorDecoder()) .requestInterceptor(new OAuthInterceptor(oauthToken)) .logLevel(Logger.Level.FULL) .target(ContentClient.class, GlobalProperties.getGitHubApiUrl() + "/repos/" + repoFullName + "/contents/" + path); return contentClient.updateContent(directCommit); }
static Feign.Builder buildGitReferenceClient(String oauthToken) { return Feign.builder() .logger(new Slf4jLogger(GitReferenceClient.class)) .encoder(new JacksonEncoder()) .decoder(new JacksonDecoder()) .errorDecoder(new BranchCreationErrorDecoder()) .requestInterceptor(new OAuthInterceptor(oauthToken)) .logLevel(Logger.Level.FULL); } }
@Override public Builder logLevel(Logger.Level logLevel) { return (Builder) super.logLevel(logLevel); }