コード例 #1
0
ファイル: metro.py プロジェクト: Nirwx/Shared
class MetroApiOperations:
#Fecth version information and build the URL accordingly if version has changed since the previous check
    def __init__(self):

        self.mongoconnection = MongoConnection()
        dataDB = self.mongoconnection.find_one('store_info')
        req = requests.get(***STORE_URL***)
        dataAPI = req.json()
        # See if Store Version has been updated
        if dataDB["storeHash"] == dataAPI["storeHash"] and dataDB["storeVersion"] == dataAPI["version"]:
            self.d = dataDB
        else:
            store_url = '***BASE METADATA URL***'.format(dataAPI["storeHash"], dataAPI["version"])
            req = requests.get(store_url)
            self.d = self.build_app_dict(req.json(), dataAPI["storeHash"], dataAPI["version"], store_url)
            self.mongoconnection.insert_one('store_info', self.d)

#Structure Data to be stored
    def build_app_dict(self, appStoreData, storeHash, storeVersion, store_url):

        d = defaultdict(dict)
        inner_d = defaultdict(dict)
        nb_of_category = len(appStoreData[1]["data"])
        i = 0
        y = 0

        while i < nb_of_category:
            for cat_d in appStoreData[1]["data"][i]["data"]:
                inner_d[str(y)]["name"] = cat_d["name"]
                inner_d[str(y)]["url"] = 'https:{}'.format(cat_d["url"])
                y += 1
            i += 1

        d["storeHash"] = storeHash
        d["storeVersion"] = storeVersion
        d["storePath"] = store_url
        d["store_last_check"] = datetime.now()
        d["data"] = inner_d
        return d


    # Test URL status code for the entire Apps Dictionnary and write status code in DB
    def test_response(self):

        del self.d["_id"]
        for i in self.d["data"]:
            url = self.d["data"][i]["url"]
            req = requests.get(url)
            resp_code = req.status_code
            self.d["data"][i]["status"] = resp_code
            self.d["data"][i]["last_check"] = int(time.time() * 1000) # Epoch time in MS req. by Grafana
        self.d["insert_time"] = datetime.now()
        self.mongoconnection.insert_one('http_response', self.d)
        return self.d["data"]
コード例 #2
0
class TestMongoConnection(unittest.TestCase):
    def test_should_get_collection_using_default_values(self):
        self.mongo = MongoConnection(FileProperties(None))
        collection = self.mongo.getCollection()
        self.assertEqual(collection.full_name,
                         "default_database_name.default_collection")

    def test_should_get_collection_from_parameter(self):
        configFile = os.path.dirname(
            os.path.realpath(__file__)) + "/mongo-connection-test.json"
        self.mongo = MongoConnection(FileProperties(configFile))
        collection = self.mongo.getCollection()
        self.assertEqual(collection.full_name, "test_database.test_collection")
コード例 #3
0
ファイル: metro.py プロジェクト: Nirwx/Shared
    def __init__(self):

        self.mongoconnection = MongoConnection()
        dataDB = self.mongoconnection.find_one('store_info')
        req = requests.get(***STORE_URL***)
        dataAPI = req.json()
        # See if Store Version has been updated
        if dataDB["storeHash"] == dataAPI["storeHash"] and dataDB["storeVersion"] == dataAPI["version"]:
            self.d = dataDB
        else:
            store_url = '***BASE METADATA URL***'.format(dataAPI["storeHash"], dataAPI["version"])
            req = requests.get(store_url)
            self.d = self.build_app_dict(req.json(), dataAPI["storeHash"], dataAPI["version"], store_url)
            self.mongoconnection.insert_one('store_info', self.d)
コード例 #4
0
class Reader:
    def __init__(self, start=0, end=None, size=0, configFile=None):
        self.start = start
        self.end = end
        self.size = size
        self.configFile = FileProperties(configFile)

    def run(self):
        self.mongo = MongoConnection(self.configFile)
        collection = self.mongo.getCollection()
        self.end = self.mongo.collectionSize(collection, self.end)
        self.read(collection)

    def read(self, collection):
        limit = min(self.size, self.end)
        skip = self.start
        while skip < self.end:
            documents = collection.find({}).skip(skip).limit(limit)
            for document in documents:
                print(self.mongo.dump(document))

            skip = skip + limit
コード例 #5
0
ファイル: metro.py プロジェクト: Nirwx/Shared
    def structure_data(self):
        mongoco = MongoConnection()
        now = datetime.now()
        date = datetime.now() - timedelta(
            days=30)  # placeholder, define date of data to poll (and display on Grafana) Tweak to extend/shrink date range in return response
        d = defaultdict(dict)
        y = 0
        for doc in mongoco.find_time_range('http_response', date, now):
            for i in doc["data"]:
                d["data"][str(y)] = doc["data"][str(i)]
                y += 1

        i = 0
        rows = ''
        while i < len(d["data"]):
            time = d["data"][str(i)]["last_check"]
            app_name = d["data"][str(i)]["name"]
            status = d["data"][str(i)]["status"]
            if i + 1 == len(d["data"]):
                row = '[{},"{}",{}]'.format(time, app_name, status)
            else:
                row = '[{},"{}",{}],\n'.format(time, app_name, status)
            rows += row
            i += 1

        grafana_json = '''[
          {
            \"columns\":[
              {\"text\":\"Time\",\"type\":\"time\"},
              {\"text\":\"App\",\"type\":\"string\"},
              {\"text\":\"Status\",\"type\":\"number\"}
            ],
            \"rows\":[ ''' + rows + '''
            ],        
            \"type\":\"table\"
          }
        ]'''
        return grafana_json
コード例 #6
0
 def run(self):
     self.mongo = MongoConnection(self.configFile)
     collection = self.mongo.getCollection()
     self.end = self.mongo.collectionSize(collection, self.end)
     self.read(collection)
コード例 #7
0
ファイル: server.py プロジェクト: wrongserenity/economi
                self.units[i].steps_to_create = unit.steps_to_create
                self.seller[i] = player
                self.time_exist[i] = 5
                break
        player.units.remove(unit)

    # отправляет деньги владельцу юнита
    # обнуляет все данные о юните, расположенном на i-той позиции
    def send_money(self, cost, position):
        self.seller[position].value[self.seller[position].id] += round(
            cost * game.new_rate[self.seller[position].id])
        self.seller[position] = None

    # проверка на уже залежавшиеся юниты
    # если таковые имеются, то они удаляются
    def check(self):
        for i in range(len(self.units)):
            if self.time_exist[i] <= 0:
                self.time_exist[i] = 1
                self.units[i] = None
                self.seller[i] = None


pg_conn = PostgresConnection()
mongo_conn = MongoConnection()

game = Game()

server = TcpServer()
server.run_()
コード例 #8
0
 def test_should_get_collection_using_default_values(self):
     self.mongo = MongoConnection(FileProperties(None))
     collection = self.mongo.getCollection()
     self.assertEqual(collection.full_name,
                      "default_database_name.default_collection")
コード例 #9
0
 def test_should_get_collection_from_parameter(self):
     configFile = os.path.dirname(
         os.path.realpath(__file__)) + "/mongo-connection-test.json"
     self.mongo = MongoConnection(FileProperties(configFile))
     collection = self.mongo.getCollection()
     self.assertEqual(collection.full_name, "test_database.test_collection")
コード例 #10
0
from bottle import static_file

from docvec import DocVec
import runtime
from mongo import MongoConnection

from tools import APP_PATH, rpc

kontext_app = bottle.Bottle()

bottle.TEMPLATE_PATH.insert(0, os.path.join(APP_PATH, 'templates', ''))
bottle.TEMPLATE_PATH.insert(1, os.path.join(APP_PATH, 'static', ''))

bottle.BaseRequest.MEMFILE_MAX = 5 * 1024 * 1024

runtime.mongo_wrapper = MongoConnection()
runtime.mongo_wrapper.set_collection('texts2')

runtime.dv = DocVec()


@kontext_app.route("/about")
def about():
    return bottle.template("about", version="0.01", user_id=0, config="yea")


@kontext_app.route("/")
def index():
    return "Go to /loader or directly /ask"