GitXplorerGitXplorer
t

finatra

public
2272 stars
406 forks
14 issues

Commits

List of commits on branch develop.
Unverified
5ca6c0c19d1770f20b30447ebf488b7194226bf6

Twitter-oss: update OSS libraries post-release to 24.8.0-SNAPSHOT

cctutika committed 4 months ago
Unverified
f0c7ab6b5c153208df86d2a41900589954a222b2

Twitter-oss: Prepare OSS libraries for release 24.5.0

cctutika committed 4 months ago
Unverified
197dc4e9d08dcb8d6fee50d8b280328286e740c0

Revert "Twitter-oss: Prepare OSS libraries for release 24.2.0"

cctutika committed 4 months ago
Unverified
3deef004997e39bb296a6985a5a39f67bf062197

Twitter-oss: Prepare OSS libraries for release 24.2.0

cctutika committed 5 months ago
Unverified
64ec14aa48ca8f95e0c3a9f6662cdd7f9a3fe689

[source] Update PROJECT owner references to reflect deactivated ldap

ttapans committed 7 months ago
Unverified
24687fcb01595bc8f8e8076bfd1605345688e099

update to snapshot 24.2.0-snapshot

mmattdickinson5 committed a year ago

README

The README file for this repository.

Finatra

Build Status Project status Maven Central Gitter

Status

This project is used in production at Twitter (and many other organizations), and is being actively developed and maintained.

Finatra Logo

Finatra is a lightweight framework for building fast, testable, scala applications on top of TwitterServer and Finagle. Finatra provides an easy-to-use API for creating and testing Finagle servers and apps as well as powerful JSON support, modern logging via SLF4J, Finagle client utilities, and more.

Getting involved

Features

Documentation

To get started, see the Getting Started section of our User Guide to get up and running. Or check out the specific sections for building HTTP or Thrift servers.

Examples

An HTTP controller and server:

import com.twitter.finatra.http._

@Singleton
class ExampleController extends Controller {
  get("/") { request: Request =>
    "<h1>Hello, world!</h1>"
  }
}
import com.twitter.finatra.http._

class ExampleServer extends HttpServer {
  override def configureHttp(router: HttpRouter): Unit = {
    router
      .filter[CommonFilters]
      .add[ExampleController]
  }
}

A Thrift controller and server:

import com.twitter.finatra.thrift._
import com.twitter.scrooge.{Request, Response}

@Singleton
class ExampleThriftController
  extends Controller(MyThriftService) {

  handle(MyFunction).withFn { request: Request[MyFunction.Args] =>
    ...
  }
}
import com.twitter.finatra.thrift._

class ExampleServer extends ThriftServer {
  override def configureThrift(router: ThriftRouter): Unit = {
    router
      .add[ExampleThriftController]
  }
}

Example Projects

Finatra includes working examples which highlight various features of the framework and include tests. These examples are included in the root sbt build and are thus buildable as part of the entire project.

Please take a look through the examples for more detailed information on features, testing, building, and running.

Latest version

The release branch in Github tracks the latest stable release, which is currently:

Maven Central

available on Maven Central. See the First Steps section in the User Guide for how to add dependencies.

Releases are done on an approximately monthly schedule. While semver is not followed, the changelogs are detailed and include sections on public API breaks and changes in runtime behavior.

Development version

The develop branch in Github tracks the latest code which is updated every week. If you want to contribute a patch or fix, please use this branch as the basis of your Pull Request.

We feel that a welcoming community is important and we ask that you follow Twitter's Open Source Code of Conduct in all interactions with the community. For more information on providing contributions, please see our CONTRIBUTING.md documentation.

Presentations

Check out our list of presentations: Finatra Presentations.

Authors

A full list of contributors can be found on GitHub.

Follow @finatra on Twitter for updates.

License

Copyright 2013 Twitter, Inc.

Licensed under the Apache License, Version 2.0: https://www.apache.org/licenses/LICENSE-2.0