Esempio n. 1
0
def authorized():

    redirect_uri = "{}oauth/github/authorized".format(request.host_url)

    logging.warn(redirect_uri)
    r = requests.post('https://github.com/login/oauth/access_token', data={
        'client_id': config.get("github", 'client_id'),
        'client_secret': config.get("github", 'client_secret'),
        'code': request.args['code'],
        'redirect_uri': redirect_uri
    }, headers={"Accept": 'application/json'})

    logging.warn(r.json())
    response_data = r.json()

    access_token = response_data['access_token']

    user_data = requests.get("https://api.github.com/user", params=dict(access_token=access_token))

    user_info = user_data.json()

    user = create_user_from_github_user(access_token, user_info)

    if user is not None:
        login_user(user)
        return redirect("/")
    else:
        return redirect("/")
Esempio n. 2
0
def authorized():

    redirect_uri = "{}oauth/github/authorized".format(request.host_url)

    logging.warn(redirect_uri)
    r = requests.post('https://github.com/login/oauth/access_token',
                      data={
                          'client_id': config.get("github", 'client_id'),
                          'client_secret': config.get("github",
                                                      'client_secret'),
                          'code': request.args['code'],
                          'redirect_uri': redirect_uri
                      },
                      headers={"Accept": 'application/json'})

    logging.warn(r.json())
    response_data = r.json()

    access_token = response_data['access_token']

    user_data = requests.get("https://api.github.com/user",
                             params=dict(access_token=access_token))

    user_info = user_data.json()

    user = create_user_from_github_user(access_token, user_info)

    if user is not None:
        login_user(user)
        return redirect("/")
    else:
        return redirect("/")
Esempio n. 3
0
 def __init__(self, user_id, social_account_id, config):
     self.user_id = user_id
     self.social_account_id = social_account_id
     self.client_id = config.get("github", 'client_id')
     self.client_secret = config.get("github", 'client_secret')
     self.access_token = None
     self.g = None
     self.github_user = None
     self.github_user_detail = None
     self.users_discovered = set()
     self.previous_link = None
Esempio n. 4
0
def start():
    global redis_conn
    redis_conn = redis.StrictRedis(host="localhost", port=6379, db=0)
    consumer_key = config.get("twitter", "client_id")
    consumer_secret = config.get("twitter", "client_secret")
    access_token = config.get("twitter", "access_token")
    access_token_secret = config.get("twitter", "access_token_secret")

    l = StdOutListener()
    auth = OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_token_secret)
    api = API(auth)
    friend_ids = api.friends_ids()
    stream = Stream(auth, l)
    #        ,track=['startup','entrepreneurship','marketing','SEO']
    stream.filter(follow=friend_ids, track=["clojure"])  # ,track=[
Esempio n. 5
0
def start():
    global redis_conn
    redis_conn = redis.StrictRedis(host="localhost", port=6379, db=0)
    consumer_key = config.get("twitter", "client_id")
    consumer_secret = config.get("twitter", "client_secret")
    access_token = config.get("twitter", "access_token")
    access_token_secret = config.get("twitter", "access_token_secret")

    l = StdOutListener()
    auth = OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_token_secret)
    api = API(auth)
    friend_ids = api.friends_ids()
    stream = Stream(auth, l)
    logging.warn(friend_ids)
    friend_ids = [str(i) for i in friend_ids]
    #        ,track=['startup','entrepreneurship','marketing','SEO']
    stream.filter(follow=friend_ids, track=['clojure']) #,track=[
Esempio n. 6
0
def setup(hosts=None, keyspace=None):

    model_keyspace = None
    cassa_hosts = None

    if hosts is None or keyspace is None:
        from pyhackers.config import config
        cassa_hosts = hosts or config.get("cassandra", "host")
        model_keyspace = config.get("cassandra", "keyspace")
    else:
        model_keyspace = keyspace
        cassa_hosts = hosts

    if isinstance(cassa_hosts, basestring):
        cassa_hosts = cassa_hosts.split(",")

    logging.warn("Keyspace: [{}] Hosts: [{}]".format(model_keyspace, cassa_hosts))

    return cassa_hosts, model_keyspace
Esempio n. 7
0
def start():
    global redis_conn
    redis_conn = redis.StrictRedis(host="localhost", port=6379, db=0)
    consumer_key = config.get("twitter", "client_id")
    consumer_secret = config.get("twitter", "client_secret")
    access_token = config.get("twitter", "access_token")
    access_token_secret = config.get("twitter", "access_token_secret")

    l = StdOutListener()
    auth = OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_token_secret)
    api = API(auth)
    friend_ids = api.friends_ids()
    stream = Stream(auth, l)
    #        ,track=['startup','entrepreneurship','marketing','SEO']
    stream.filter(follow=friend_ids, track=['clojure']) #,track=[
    #'entrepreneurship','StartUp','SaaS','github','ycombinator','techstars',
    #'cassandra','mysql','mongodb','quora',
    #'scala','erlang','golang','python','entrepreneur','marketing'])
Esempio n. 8
0
def setup(hosts=None, keyspace=None):

    model_keyspace = None
    cassa_hosts = None

    if hosts is None or keyspace is None:
        from pyhackers.config import config
        cassa_hosts = hosts or config.get("cassandra", "host")
        model_keyspace = config.get("cassandra", "keyspace")
    else:
        model_keyspace = keyspace
        cassa_hosts = hosts

    if isinstance(cassa_hosts, basestring):
        cassa_hosts = cassa_hosts.split(",")

    logging.warn("Keyspace: [{}] Hosts: [{}]".format(model_keyspace,
                                                     cassa_hosts))

    return cassa_hosts, model_keyspace
Esempio n. 9
0
import logging
import time
from datetime import datetime as dt
from flask import request, render_template as template_render
from flask.ext.login import current_user, AnonymousUserMixin
from json import dumps
import calendar
from pyhackers.config import config
from pyhackers.service.channel import get_channel_list
from pyhackers.service.topic import load_topics_jsonable

purge_key = config.get("app", 'purge_key')
debug = config.get("app", "debug")
PRODUCTION = not (debug in ['True', '1', True, 1])
cache_buster = calendar.timegm(time.gmtime())


def render_base_template(*args, **kwargs):
    try:
        logging.warn(current_user.is_anonymous())
        is_logged = not current_user.is_anonymous()
    except Exception as ex:
        logging.exception(ex)
        is_logged = False

    active_user = current_user.jsonable(
    ) if not current_user.is_anonymous() else {}
    user_data = dumps(active_user)
    logging.warn(user_data)

    # FIXME: render_template also contains some of the dict-keys.
Esempio n. 10
0
        self.session = requests.Session()

    def get(self):
        r = self.session.get(self.service_loc)
        return long(r.text.replace("\r\n", ""))


class LocalIDGenClient():
    def __init__(self):
        logging.warn("Starting " + self.__class__.__name__)
        self.idgen = IdGenerator()

    def get(self):
        return self.idgen.create()


idgen_client = None

try:
    IdGenerator.worker_id = int(config.get("idgen", 'worker_id'))
    IDGenClient.service_loc = config.get("app", "idgen_service")

    # if we initialize the IDGen service in this process, lets connect to the internal item..,
    if "idgen" in APPS_TO_RUN:
        idgen_client = LocalIDGenClient()
    else:
        idgen_client = IDGenClient()

except Exception, ex:
    logging.exception(ex)
    pass
Esempio n. 11
0
import logging
from werkzeug.routing import BaseConverter
from flaskext.kvsession import KVSessionExtension
from flask import Flask, request, abort, render_template, redirect, jsonify, session

current_dir = os.path.dirname(os.path.abspath(__file__))
source_dir = os.path.dirname(current_dir)

sys.path.insert(0, source_dir)


from pyhackers.config import config
from pyhackers.setup import setup_application_extensions

current_dir = os.path.dirname(os.path.abspath(__file__))
static_folder = config.get("app", "static")
#templates_folder = config.get("app", "templates")
db_conf = config.get("app", "db")


templates_folder = os.path.join(current_dir, 'templates')
statics_folder = os.path.join(current_dir, 'static')
app = Flask(__name__, template_folder=templates_folder, static_folder=statics_folder)
app.secret_key = config.get("app", "flask_secret")
app.debug = bool(config.get("app", "debug"))
app.config['SQLALCHEMY_DATABASE_URI'] = db_conf


class RegexConverter(BaseConverter):
    def __init__(self, url_map, *items):
        super(RegexConverter, self).__init__(url_map)
Esempio n. 12
0
import requests
import simplejson as json
from pyhackers.config import config


api_token = config.get("hipchat", "token")


def notify_registration(msg, token=None):
    auth_token = token or api_token
    params = {"message": msg}
    headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
    requests.post("https://api.hipchat.com/v2/room/register/notification?auth_token={}".format(auth_token),
                      data=json.dumps(params),
                      headers=headers)
Esempio n. 13
0
from pyhackers.config import config
import requests
import logging
import time
from pyhackers.model.os_project import OpenSourceProject
from pyhackers.db import DB as db
from sqlalchemy.exc import IntegrityError

client_id = config.get("github", 'client_id')
client_secret = config.get("github", 'client_secret')

url = 'https://api.github.com'
read_me_url = '/repos/{user}/{repo}/readme'

fields = [
    'id', 'name', 'full_name', 'description', 'owner', 'html_url', 'git_url',
    'watchers_count', 'forks_count', 'open_issues_count', 'created_at',
    'updated_at'
]

session = requests.Session()


def search_repo(query, page=1):
    qs = 'q=%s&sort=stars&per_page=100&page=%d&order=desc&client_id=%s&client_secret=%s' % (
        query, page, client_id, client_secret)
    data = session.get(
        url + "/search/repositories",
        params=qs,
        # params={'q': query, 'sort': 'stars', 'order': 'desc',
        #         'client_id': client_id, 'client_secret': client_secret},
Esempio n. 14
0
import requests
import simplejson as json
from pyhackers.config import config

api_token = config.get("hipchat", "token")


def notify_registration(msg, token=None):
    auth_token = token or api_token
    params = {"message": msg}
    headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
    requests.post(
        "https://api.hipchat.com/v2/room/register/notification?auth_token={}".
        format(auth_token),
        data=json.dumps(params),
        headers=headers)
Esempio n. 15
0
oauth = OAuth()

google = oauth.remote_app(
    'google',
    base_url='https://www.google.com/accounts/',
    authorize_url='https://accounts.google.com/o/oauth2/auth',
    request_token_url=None,
    request_token_params={
        'scope': 'https://www.googleapis.com/auth/userinfo.email \
                          https://www.googleapis.com/auth/userinfo.profile',
        'response_type': 'code'
    },
    access_token_url='https://accounts.google.com/o/oauth2/token',
    access_token_method='POST',
    access_token_params={'grant_type': 'authorization_code'},
    consumer_key=config.get("google", 'client_id'),
    consumer_secret=config.get("google", 'client_secret'))


@google.tokengetter
def get_access_token():
    return session.get('google_token')


@google_bp.route('/login/google')
def login_google():
    session['next'] = request.args.get('next') or request.referrer or None
    callback = url_for('google_callback', _external=True)
    return google.authorize(callback=callback)

Esempio n. 16
0
import sys
import logging
from werkzeug.routing import BaseConverter
from flaskext.kvsession import KVSessionExtension
from flask import Flask, request, abort, render_template, redirect, jsonify, session

current_dir = os.path.dirname(os.path.abspath(__file__))
source_dir = os.path.dirname(current_dir)

sys.path.insert(0, source_dir)

from pyhackers.config import config
from pyhackers.setup import setup_application_extensions

current_dir = os.path.dirname(os.path.abspath(__file__))
static_folder = config.get("app", "static")
#templates_folder = config.get("app", "templates")
db_conf = config.get("app", "db")

templates_folder = os.path.join(current_dir, 'templates')
statics_folder = os.path.join(current_dir, 'static')
app = Flask(__name__,
            template_folder=templates_folder,
            static_folder=statics_folder)
app.secret_key = config.get("app", "flask_secret")
app.debug = bool(config.get("app", "debug"))
app.config['SQLALCHEMY_DATABASE_URI'] = db_conf


class RegexConverter(BaseConverter):
    def __init__(self, url_map, *items):
Esempio n. 17
0
        self.session = requests.Session()

    def get(self):
        r = self.session.get(self.service_loc)
        return long(r.text.replace("\r\n", ""))


class LocalIDGenClient():
    def __init__(self):
        logging.warn("Starting " + self.__class__.__name__)
        self.idgen = IdGenerator()

    def get(self):
        return self.idgen.create()


idgen_client = None

try:
    IdGenerator.worker_id = int(config.get("idgen", 'worker_id'))
    IDGenClient.service_loc = config.get("app", "idgen_service")

    # if we initialize the IDGen service in this process, lets connect to the internal item..,
    if "idgen" in APPS_TO_RUN:
        idgen_client = LocalIDGenClient()
    else:
        idgen_client = IDGenClient()

except Exception, ex:
    logging.exception(ex)
    pass
Esempio n. 18
0
from pyhackers.config import config
import requests
import logging
import time
from pyhackers.model.os_project import OpenSourceProject
from pyhackers.db import DB as db
from sqlalchemy.exc import IntegrityError

client_id = config.get("github", 'client_id')
client_secret = config.get("github", 'client_secret')

url = 'https://api.github.com'
read_me_url = '/repos/{user}/{repo}/readme'

fields = ['id', 'name', 'full_name', 'description', 'owner', 'html_url', 'git_url', 'watchers_count', 'forks_count',
          'open_issues_count', 'created_at', 'updated_at']

session = requests.Session()


def search_repo(query, page=1):
    qs = 'q=%s&sort=stars&per_page=100&page=%d&order=desc&client_id=%s&client_secret=%s' % (
        query, page, client_id, client_secret)
    data = session.get(url + "/search/repositories",
                       params=qs,
                       # params={'q': query, 'sort': 'stars', 'order': 'desc',
                       #         'client_id': client_id, 'client_secret': client_secret},
                       headers={'Accept': 'application/vnd.github.preview'})

    return data.json().get('items', None)
Esempio n. 19
0
google_bp = Blueprint('register', __name__,template_folder='templates')

oauth = OAuth()

google = oauth.remote_app('google',
                          base_url='https://www.google.com/accounts/',
                          authorize_url='https://accounts.google.com/o/oauth2/auth',
                          request_token_url=None,
                          request_token_params= {'scope': 'https://www.googleapis.com/auth/userinfo.email \
                          https://www.googleapis.com/auth/userinfo.profile',
                                                 'response_type': 'code'},
                          access_token_url='https://accounts.google.com/o/oauth2/token',
                          access_token_method='POST',
                          access_token_params={'grant_type': 'authorization_code'},
                          consumer_key=config.get("google",'client_id'),
                          consumer_secret=config.get("google",'client_secret')
)


@google.tokengetter
def get_access_token():
    return session.get('google_token')



@google_bp.route('/login/google')
def login_google():
    session['next'] = request.args.get('next') or request.referrer or None
    callback=url_for('google_callback', _external=True)
    return google.authorize(callback=callback)
Esempio n. 20
0
from pyhackers.service.user import get_profile, get_profile_by_nick, follow_user
import requests
from flask.ext.wtf import Form, TextField, PasswordField, Required
from flask import request, render_template, Blueprint, redirect, jsonify, abort
from flask.ext.login import current_user, logout_user, login_required
from pyhackers.setup import login_manager
from pyhackers.cache import cache
from pyhackers.model.user import User
from pyhackers.model.message import Message
from pyhackers.model.os_project import OpenSourceProject
from pyhackers.config import config
from pyhackers.db import DB as db
import markdown2
from sqlalchemy import and_

purge_key = config.get("app", 'purge_key')
debug = config.get("app", "debug")
PRODUCTION = not (debug in ['True', '1', True, 1])
main_app = Blueprint('main', __name__, template_folder='templates')


def render_base_template(*args, **kwargs):
    try:
        logging.warn(current_user.is_anonymous())
        is_logged = not current_user.is_anonymous()  #int(request.args.get("logged", "1"))
    except Exception as ex:
        logging.exception(ex)
        is_logged = False

    active_user = current_user.jsonable() if not current_user.is_anonymous() else {}
    user_data = dumps(active_user)
Esempio n. 21
0

from flask import request, jsonify, Blueprint
from pyhackers.idgen import IdGenerator, StatsHandler, idgen_client
from pyhackers.config import config

url_prefix = config.get("idgen", "url_prefix")

idgen_app = Blueprint('idgen_service', __name__, url_prefix=url_prefix)

# idgenerator = IDGen()
stats_handler = StatsHandler()


@idgen_app.route("/new", methods=['GET'])
def generate():
    return str(idgen_client.get())


@idgen_app.route("/flush", methods=['GET'])
def flush():
    return jsonify(stats_handler.get(flush=True))


@idgen_app.route("/stats", methods=['GET'])
def stats():
    return jsonify(stats_handler.get())