#!/usr/bin/env python
# encoding: utf-8
import argparse
from loklak import Loklak
from pprint import pprint
import os

parser = argparse.ArgumentParser(description="Python wrapper around the loklak API.")
parser.add_argument('-s', '--search', nargs='+', help='Search API Wrapper which helps to query loklak for JSON results.')
parser.add_argument('-t', '--status', action='store_true', help='Status API Wrapper for the loklak status check.')
parser.add_argument('-st', '--suggest', nargs='+', help='Suggestions API Wrapper , Works better with local loklak instance.')
parser.add_argument('-c', '--crawler', action='store_true', help='Crawler API Wrapper on Loklak to crawl for tweets for a particular crawl depth.')
parser.add_argument('-hl', '--hello', action='store_true', help='Loklak status check API.')
parser.add_argument('-g', '--geocode', help='Geocode API for geolocation based information.')
parser.add_argument('-p', '--peers', action='store_true', help='Loklak API for peers connected on the distributed network.')
parser.add_argument('-pg', '--pushgeojson', action='store_true', help='Public API to push geojson objects to the loklak server.')
parser.add_argument('-u', '--user', help='User API to show twitter user information.')
parser.add_argument('-m', '--map', help='Map Visualization render using Loklak service.')
parser.add_argument('-md', '--markdown', help='Markdown conversion API to render markdown as image using Loklak.')
args = parser.parse_args()

loklak = Loklak()
if args.search:
    pprint(loklak.search(args.search))
elif args.status:
    pprint(loklak.status())
elif args.suggest:
    print(args.suggest)
    pprint(loklak.suggest(args.suggest))
elif args.crawler:
    pass
elif args.hello:
    pprint(loklak.hello())
elif args.geocode:
    pprint(loklak.geocode(args.geocode.split(', ')))
elif args.peers:
    pprint(loklak.peers())
elif args.pushgeojson:
    pass
elif args.user:
    params = args.user.split()
    pprint(loklak.search(*params))
elif args.map:
    data = loklak.get_map(args.map.split(',')[0],
                          args.map.split(',')[1].strip())
    with open(os.path.join(os.getcwd(), 'map.png'), 'wb') as f:
        f.write(data)
elif args.markdown:
    data = loklak.get_markdown(args.markdown)
    with open(os.path.join(os.getcwd(), 'markdown.png'), 'wb') as f:
        f.write(data)
else:
    print('Choose API method.')
