---
name: "Twitter::API::Trait::NormalizeBooleans"
section: "3pm"
platform: "linux"
package: "libtwitter-api-perl"
version: "1.0006-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Twitter::API::Trait::NormalizeBooleans"
---

# Twitter::API::Trait::NormalizeBooleans(3pm)

Normalize Booleans

## NAME

Twitter::API::Trait::NormalizeBooleans - Normalize Booleans

## VERSION

version 1.0006

## SYNOPSIS

```
    use Twitter::API;
    my $client = Twitter::API->new_with_traits(
        traits => [ qw/ApiMethods NormalizeBooleans/ ],
        %other_new_options
    );
    my ( $r, $c ) = $client->home_timeline({ trim_user => 1 });
    say $c->http_request->uri;
    # output:
    https://api.twitter.com/1.1/statuses/home_timeline.json?trim_user=true
```

## DESCRIPTION

Twitter has a strange concept of boolean values. Usually, the API accepts `"t"`, `"true"`, or `1` for true. Sometimes it accepts `"f"`, `"false"`, or `0` for false. But then you have strange cases like the `"include_email"` parameter used for authorized applications by the `"verify_credentials"` endpoint. It only accepts `"true"`. Worse, for some boolean values, passing `"f"`, `"false"`, or `0` all work as if you passed `"true"`. For those values, false means not including the parameter at all.

So, this trait attempts to normalize booleans by transforming any perl truthy value to the Twitter API's preference, `"true"`. It transforms falsey values to `"false"`. And then it removes false parameters that the API always treats as true.

You're welcome.

## AUTHOR

Marc Mims \<marc@questright.com\>

## COPYRIGHT AND LICENSE

This software is copyright (c) 2015-2021 by Marc Mims.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
