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("/")
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
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=[
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=[
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
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'])
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.
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
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)
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)
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},
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)
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)
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):
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)
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)
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)
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())