예제 #1
0
def add_video_id_transcode_bitrate(request):
    video_id = request.get_arg("video_id")
    bitrates = request.get_arg("bitrates")
    response = X100Response()

    response.set_header("Access-Control-Allow-Origin", "*")
    response.set_header("Access-Control-Allow-Methods", "GET")

    if not video_id or not bitrates:
        response.set_body('{"status":"failed", "message":"video_id or bitrates empty"}')
        return response

    add_bitrates_list = bitrates.split(",")

    r   = redis_connect()
    ret = r.hget("x100speed_hash_videoid", video_id)
    if not ret:
        response.set_body('{"status":"failed", "message":"video_id redis not found"}')
        return response
    
    data_object  = DataStructuresSerialized(ret, "|")
    data_list    = data_object.getDeserializationStruct()
    bitrate_list = DataStructuresSerialized(data_list[3], ',').getDeserializationStruct()
    bitrate_list.extend(add_bitrates_list)
    bitrate_list = list(set(bitrate_list))
    bitrate_list.sort(key = int)
    bitrate_string = DataStructuresSerialized(bitrate_list, ',').getSerializedString()
    bitrate_of_list_index = 3
    data_object.update(bitrate_of_list_index, bitrate_string)

    ret = r.hset("x100speed_hash_videoid", video_id, data_object.getDeserializationStruct())
    
    response.set_body('{"status":"success", "message":""}')
    return response
예제 #2
0
def update_video_snap_image_count(request):
    video_id         = request.get_arg('video_id')
    snap_image_count = request.get_arg('snap_image_count')
    response         = X100Response()

    response.set_header("Access-Control-Allow-Origin", "*")
    response.set_header("Access-Control-Allow-Methods", "GET")
    
    if not video_id or not snap_image_count:
        response.set_body('{"status":"failed", "message":"video_id or snap_image_count empty"}')
        return response

    value = ''
    r     = redis_connect()
    ret   = r.hget("x100speed_hash_videoid", video_id)
    if not ret:
        response.set_body('{"status":"failed", "message":"redis not have video_id"}')
        return response
    
    index = 1
    data_object = DataStructuresSerialized(ret, "|")
    data_object.update(index, snap_image_count)
    value = data_object.getSerializedString()

    r.hset('x100speed_hash_videoid', video_id, value)

    response.set_body('{"status":"success", "message":""}')
    return response
예제 #3
0
def update_video_snap_image_count(request):
    video_id = request.get_arg('video_id')
    snap_image_count = request.get_arg('snap_image_count')
    response = X100Response()

    response.set_header("Access-Control-Allow-Origin", "*")
    response.set_header("Access-Control-Allow-Methods", "GET")

    if not video_id or not snap_image_count:
        response.set_body(
            '{"status":"failed", "message":"video_id or snap_image_count empty"}'
        )
        return response

    value = ''
    r = redis_connect()
    ret = r.hget("x100speed_hash_videoid", video_id)
    if not ret:
        response.set_body(
            '{"status":"failed", "message":"redis not have video_id"}')
        return response

    index = 1
    data_object = DataStructuresSerialized(ret, "|")
    data_object.update(index, snap_image_count)
    value = data_object.getSerializedString()

    r.hset('x100speed_hash_videoid', video_id, value)

    response.set_body('{"status":"success", "message":""}')
    return response
예제 #4
0
    def test_unserialized(self):
        testString = 'China|10|beijing'
        testSeparator = '|'
        data = DataStructuresSerialized(
            testString, testSeparator).getDeserializationStruct()

        self.assertEqual(data, ['China', '10', 'beijing'])
예제 #5
0
    def test_unserializedEmpty(self):
        testString = ''
        testSeparator = '|'
        data = DataStructuresSerialized(
            testString, testSeparator).getDeserializationStruct()

        self.assertEqual(data, None)
예제 #6
0
    def test_listSerializedInvalidSeparator(self):
        testList = ["China", 10, "beijing,haidian"]
        testSeparator = ','
        data = DataStructuresSerialized(testList,
                                        testSeparator).getSerializedString()

        self.assertEqual(data, None)
예제 #7
0
    def test_listSerializedDigit(self):
        testList = [10, 21, 27]
        testSeparator = ','
        data = DataStructuresSerialized(testList,
                                        testSeparator).getSerializedString()

        self.assertEqual(data, '10,21,27')
예제 #8
0
    def test_listSerialized(self):
        testList = ["China", 10, "beijing"]
        testSeparator = '|'
        data = DataStructuresSerialized(testList,
                                        testSeparator).getSerializedString()

        self.assertEqual(data, 'China|10|beijing')
예제 #9
0
    def test_updateListStruct(self):
        testData = ['China', 10, 'beijing']
        testSeparator = '|'
        index = 1
        subString = 'Hubei'
        dataClass = DataStructuresSerialized(testData, testSeparator)
        dataClass.update(index, subString)
        data = dataClass.getSerializedString()

        self.assertEqual(data, 'China|Hubei|beijing')

        dataClass.update(index, 'Ningxia')
        data = dataClass.getSerializedString()

        self.assertEqual(data, 'China|Ningxia|beijing')
예제 #10
0
def update_video_status(request):
    video_id = request.get_arg('video_id')
    status   = request.get_arg('status')
    ip       = request.get_remote_ip()
    response = X100Response()
    response.set_header("Access-Control-Allow-Origin", "*")
    response.set_header("Access-Control-Allow-Methods", "GET")
    
    if not video_id or not status:
        response.set_body('{"status":"failed", "message":"video_id or status empty"}')
        return response

    value = ''
    r     = redis_connect()
    ret   = r.hget("x100speed_hash_videoid", video_id)
    if not ret:
        if status == "proceed":
            bitrate = request.get_arg('bitrate')
            if not bitrate:
                response.set_body('{"status":"failed", "message":"proceed first bitrate empty"}')
                return response

            value = status + '|' + '|' + ip + '|' + bitrate
            r.hset('x100speed_hash_videoid', video_id, value)
            response.set_body('{"status":"success", "message":""}')
        else:
            response.set_body('{"status":"failed", "message":"redis not have video_id"}')
        return response
    
    data_object = DataStructuresSerialized(ret, "|")

    if status == "proceed":
        bitrate = request.get_arg('bitrate')
        if not bitrate:
            response.set_body('{"status":"failed", "message":"bitrate params is empty"}')
            return response

        data_list      = data_object.getDeserializationStruct()
        bitrate_list   = DataStructuresSerialized(data_list[3], ',').getDeserializationStruct()
        bitrate_list.append(bitrate)
        bitrate_list = list(set(bitrate_list))
        bitrate_list.sort(key = int)
        bitrate_string = DataStructuresSerialized(bitrate_list, ',').getSerializedString()
        bitrate_of_list_index = 3
        data_object.update(bitrate_of_list_index, bitrate_string)

    status_of_list_index  = 0
    ip_of_list_index      = 2
    
    data_object.update(status_of_list_index, status)
    data_object.update(ip_of_list_index, ip)
    
    value = data_object.getSerializedString()

    r.hset('x100speed_hash_videoid', video_id, value)
    
    if status == "success":  
        r.rpush("x100speed_" + ip + "_list", video_id)

    response.set_body('{"status":"success", "message":""}')
    return response
예제 #11
0
def update_video_status(request):
    video_id = request.get_arg('video_id')
    status = request.get_arg('status')
    ip = request.get_remote_ip()
    response = X100Response()
    response.set_header("Access-Control-Allow-Origin", "*")
    response.set_header("Access-Control-Allow-Methods", "GET")

    if not video_id or not status:
        response.set_body(
            '{"status":"failed", "message":"video_id or status empty"}')
        return response

    value = ''
    r = redis_connect()
    ret = r.hget("x100speed_hash_videoid", video_id)
    if not ret:
        if status == "proceed":
            bitrate = request.get_arg('bitrate')
            if not bitrate:
                response.set_body(
                    '{"status":"failed", "message":"proceed first bitrate empty"}'
                )
                return response

            value = status + '|' + '|' + ip + '|' + bitrate
            r.hset('x100speed_hash_videoid', video_id, value)
            response.set_body('{"status":"success", "message":""}')
        else:
            response.set_body(
                '{"status":"failed", "message":"redis not have video_id"}')
        return response

    data_object = DataStructuresSerialized(ret, "|")

    if status == "proceed":
        bitrate = request.get_arg('bitrate')
        if not bitrate:
            response.set_body(
                '{"status":"failed", "message":"bitrate params is empty"}')
            return response

        data_list = data_object.getDeserializationStruct()
        bitrate_list = DataStructuresSerialized(
            data_list[3], ',').getDeserializationStruct()
        bitrate_list.append(bitrate)
        bitrate_list = list(set(bitrate_list))
        bitrate_list.sort(key=int)
        bitrate_string = DataStructuresSerialized(bitrate_list,
                                                  ',').getSerializedString()
        bitrate_of_list_index = 3
        data_object.update(bitrate_of_list_index, bitrate_string)

    status_of_list_index = 0
    ip_of_list_index = 2

    data_object.update(status_of_list_index, status)
    data_object.update(ip_of_list_index, ip)

    value = data_object.getSerializedString()

    r.hset('x100speed_hash_videoid', video_id, value)

    if status == "success":
        r.rpush("x100speed_" + ip + "_list", video_id)

    response.set_body('{"status":"success", "message":""}')
    return response
예제 #12
0
def add_video_id_transcode_bitrate(request):
    video_id = request.get_arg("video_id")
    bitrates = request.get_arg("bitrates")
    response = X100Response()

    response.set_header("Access-Control-Allow-Origin", "*")
    response.set_header("Access-Control-Allow-Methods", "GET")

    if not video_id or not bitrates:
        response.set_body(
            '{"status":"failed", "message":"video_id or bitrates empty"}')
        return response

    add_bitrates_list = bitrates.split(",")

    r = redis_connect()
    ret = r.hget("x100speed_hash_videoid", video_id)
    if not ret:
        response.set_body(
            '{"status":"failed", "message":"video_id redis not found"}')
        return response

    data_object = DataStructuresSerialized(ret, "|")
    data_list = data_object.getDeserializationStruct()
    bitrate_list = DataStructuresSerialized(data_list[3],
                                            ',').getDeserializationStruct()
    bitrate_list.extend(add_bitrates_list)
    bitrate_list = list(set(bitrate_list))
    bitrate_list.sort(key=int)
    bitrate_string = DataStructuresSerialized(bitrate_list,
                                              ',').getSerializedString()
    bitrate_of_list_index = 3
    data_object.update(bitrate_of_list_index, bitrate_string)

    ret = r.hset("x100speed_hash_videoid", video_id,
                 data_object.getDeserializationStruct())

    response.set_body('{"status":"success", "message":""}')
    return response
예제 #13
0
 def test_nonsupportDataStructures(self):
     testTuples = ('China', 10, 'beijing')
     testSeparator = '|'
     data = DataStructuresSerialized(testTuples,
                                     testSeparator).getSerializedString()
     self.assertEqual(data, None)
예제 #14
0
    def test_listSerializedNoSeparator(self):
        testList = [10, 21, 27]
        data = DataStructuresSerialized(testList).getSerializedString()

        self.assertEqual(data, '10|21|27')