Add --visibility option to post command - toot - Unnamed repository; edit this file 'description' to name the repository.
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
 (DIR) commit 3864563520a83ee1ec5a326f9304d5e10ad27bdb
 (DIR) parent 9b861ec9ccebd219b308651548eb100894248647
 (HTM) Author: Ivan Habunek <ivan@habunek.com>
       Date:   Sat, 15 Apr 2017 12:39:14 +0200
       
       Add --visibility option to post command
       
       Diffstat:
         README.rst                          |       6 ++++++
         toot/__init__.py                    |       5 ++---
         toot/console.py                     |       9 ++++++++-
       
       3 files changed, 16 insertions(+), 4 deletions(-)
       ---
 (DIR) diff --git a/README.rst b/README.rst
       @@ -73,3 +73,9 @@ To post a new status to your timeline:
        Optionally attach an image or video to the status:
        
            toot post "Hello world!" --media=path/to/world.jpg
       +
       +To set post visibility:
       +
       +    toot post "Hello world!" --visibility=unlisted
       +
       +Possible visibility values are: ``public`` (default), ``unlisted``, ``private``, ``direct``. They are documented  `here <https://github.com/tootsuite/documentation/blob/aa20089756c8cf9ff5a52fb35ad1a9472f10970c/Using-Mastodon/User-guide.md#toot-privacy>`_.
 (DIR) diff --git a/toot/__init__.py b/toot/__init__.py
       @@ -7,10 +7,8 @@ from requests import Request, Session
        App = namedtuple('App', ['base_url', 'client_id', 'client_secret'])
        User = namedtuple('User', ['username', 'access_token'])
        
       -APP_NAME = 'toot'
        DEFAULT_INSTANCE = 'mastodon.social'
        
       -
        logger = logging.getLogger('toot')
        
        
       @@ -94,10 +92,11 @@ def login(app, username, password):
            return User(username, access_token)
        
        
       -def post_status(app, user, status, media_ids=None):
       +def post_status(app, user, status, visibility='public', media_ids=None):
            return _post(app, user, '/api/v1/statuses', {
                'status': status,
                'media_ids[]': media_ids,
       +        'visibility': visibility,
            })
        
        
 (DIR) diff --git a/toot/console.py b/toot/console.py
       @@ -145,19 +145,26 @@ def cmd_post_status(app, user):
            parser.add_option("-m", "--media", dest="media", type="string",
                              help="path to the media file to attach")
        
       +    parser.add_option("-v", "--visibility", dest="visibility", type="string", default="public",
       +                      help='post visibility, either "public" (default), "direct", "private", or "unlisted"')
       +
            (options, args) = parser.parse_args()
        
            if len(args) < 2:
                parser.print_help()
                raise ConsoleError("No text given")
        
       +    if options.visibility not in ['public', 'unlisted', 'private', 'direct']:
       +        raise ConsoleError("Invalid visibility value given: '{}'".format(options.visibility))
       +
            if options.media:
                media = do_upload(app, user, options.media)
                media_ids = [media['id']]
            else:
                media_ids = None
        
       -    response = post_status(app, user, args[1], media_ids=media_ids)
       +    response = post_status(
       +        app, user, args[1], media_ids=media_ids, visibility=options.visibility)
        
            print("Toot posted: " + green(response.get('url')))