Exemplo n.º 1
0
    def test_disconnect(self):
        message = messaging.CommandMessage(operation=12)
        rp = amf3.RequestProcessor(None)
        request = remoting.Request('null', body=[message])

        response = rp(request)
        ack = response.body

        self.assertTrue(isinstance(response, remoting.Response))
        self.assertEquals(response.status, remoting.STATUS_OK)
        self.assertTrue(isinstance(ack, messaging.AcknowledgeMessage))
Exemplo n.º 2
0
    def test_long_service_name(self):
        gw = gateway.BaseGateway({'a.c.b.d': TestService})
        envelope = remoting.Envelope()

        message = remoting.Request('a.c.b.d', [], envelope=envelope)
        sr = gw.getServiceRequest(message, 'a.c.b.d.spam')

        self.assertTrue(isinstance(sr, gateway.ServiceRequest))
        self.assertEqual(sr.request, envelope)
        self.assertEqual(sr.service, TestService)
        self.assertEqual(sr.method, 'spam')
Exemplo n.º 3
0
    def test_service(self):
        gw = gateway.BaseGateway()

        gw.addService(lambda x: x, 'test', preprocessor=self._preproc)

        envelope = remoting.Envelope()
        request = remoting.Request('test')
        envelope['/1'] = request

        service_request = gateway.ServiceRequest(envelope, gw.services['test'], None)

        self.assertEquals(gw.getPreprocessor(service_request), self._preproc)
Exemplo n.º 4
0
    def test_service(self):
        gw = gateway.BaseGateway()

        gw.addService(lambda x: x, 'test', expose_request=True)

        envelope = remoting.Envelope()
        request = remoting.Request('test')
        envelope['/1'] = request

        service_request = gateway.ServiceRequest(envelope, gw.services['test'], None)

        self.assertTrue(gw.mustExposeRequest(service_request))
Exemplo n.º 5
0
 def __build_amf_request(self, videoPlayer):
     env = remoting.Envelope(amfVersion=3)
     env.bodies.append((
         "/1",
         remoting.Request(
             target=
             "com.brightcove.player.runtime.PlayerMediaFacade.findMediaByReferenceId",
             body=[
                 self.Const, self.Player_ID, videoPlayer, self.Publisher_ID
             ],
             envelope=env)))
     return env
Exemplo n.º 6
0
    def test_process_request(self):
        gw = gateway.BaseGateway({'test': TestService})
        envelope = remoting.Envelope()

        request = remoting.Request('test.spam', envelope=envelope)

        processor = gw.getProcessor(request)
        response = processor(request)

        self.assertTrue(isinstance(response, remoting.Response))
        self.assertEqual(response.status, remoting.STATUS_OK)
        self.assertEqual(response.body, 'spam')
Exemplo n.º 7
0
    def parseData(self, data):
        videoIds = list(re.finditer("videoIds.push\(\"(.*)\"\);", data))
        print videoIds
        print 'self.part: ' + self.part
        streamUrl = ""
        streamName = ""
        x = 1
        for videoId in videoIds:
            if int(self.part) == x:
                print 'in for videoId'
                print videoId.group(1)
                conn = HTTPConnection("c.brightcove.com")
                env = remoting.Envelope(amfVersion=3)
                env.bodies.append((
                    "/1",
                    remoting.Request(
                        target=
                        "com.brightcove.player.runtime.PlayerMediaFacade.findMediaById",
                        body=[
                            "ef59d16acbb13614346264dfe58844284718fb7b",
                            586587148001,
                            videoId.group(1), 1659832546
                        ],
                        envelope=env)))
                conn.request(
                    "POST",
                    "/services/messagebroker/amf?playerKey=AAAAAGLvCOI~,a0C3h1Jh3aQKs2UcRZrrxyrjE0VH93xl",
                    str(remoting.encode(env).read()),
                    {'content-type': 'application/x-amf'})
                response = conn.getresponse().read()
                rtmpdata = remoting.decode(response).bodies[0][1].body
                streamName = ""
                default = 'skip'
                streamUrl = rtmpdata.get('FLVFullLengthURL', default)

                for item in sorted(rtmpdata['renditions'],
                                   key=lambda item: item['frameHeight'],
                                   reverse=False):
                    streamHeight = item['frameHeight']

                    if streamHeight <= 1080:
                        streamUrl = item['defaultURL']

                streamName = streamName + rtmpdata['displayName']
            x = x + 1
        print 'streamUrl'
        print streamUrl
        print 'streamName'
        print streamName
        sref = eServiceReference(0x1001, 0, streamUrl)
        sref.setName(streamName)
        self.session.open(MoviePlayer, sref)
Exemplo n.º 8
0
    def test_unknown_service_request(self):
        gw = _twisted.TwistedGateway({'echo': lambda x: x})
        proc = _twisted.AMF0RequestProcessor(gw)

        request = remoting.Request('sdf')

        d = proc(request)

        self.assertTrue(isinstance(d, defer.Deferred))
        response = d.result
        self.assertTrue(isinstance(response, remoting.Response))
        self.assertTrue(response.status, remoting.STATUS_ERROR)
        self.assertTrue(isinstance(response.body, remoting.ErrorFault))
Exemplo n.º 9
0
def build_amf_request(const, playerID, videoPlayer, publisherID):
    env = remoting.Envelope(amfVersion=3)
    env.bodies.append(
        (
            "/1",
            remoting.Request(
                target="com.brightcove.player.runtime.PlayerMediaFacade.findMediaById",
                body=[const, playerID, videoPlayer, publisherID],
                envelope=env
            )
        )
    )
    return env
Exemplo n.º 10
0
    def test_preprocessor(self):
        d = defer.Deferred()

        def preprocessor(service_request):
            d.callback(None)

        p = self.getProcessor({'echo': lambda x: x}, preprocessor=preprocessor)

        request = remoting.Request('echo', envelope=remoting.Envelope())

        p(request).addErrback(lambda failure: d.errback())

        return d
Exemplo n.º 11
0
    def test_unknown_service_request(self):
        gw = twisted.TwistedGateway({'echo': lambda x: x}, expose_request=False)
        proc = twisted.AMF3RequestProcessor(gw)

        request = remoting.Request('null', body=[messaging.RemotingMessage(body=['spam.eggs'], operation='ss')])

        d = proc(request)

        self.assertTrue(isinstance(d, defer.Deferred))
        response = d.result
        self.assertTrue(isinstance(response, remoting.Response))
        self.assertTrue(response.status, remoting.STATUS_ERROR)
        self.assertTrue(isinstance(response.body, messaging.ErrorMessage))
Exemplo n.º 12
0
def construct_request(startDate,endDate,market_code,market_name,item_code,item_name):
    breedInfoPo = BreedInfoPo(None,None,None,None)
    select_breed = BreedInfoPo(item_code,item_name,None,None)
    select = ArrayCollection([select_breed])
    market = PMarketInfo(market_code,market_name)
    msg = messaging.RemotingMessage(messageId=str(uuid.uuid1()).upper(),clientId=str(uuid.uuid1()).upper(),operation='getDyscDpzData',destination='reportStatService',timeToLive=0,timestamp=0)
    msg.body = [DyscdpzPara(startDate,endDate,select,market,breedInfoPo)]
    msg.headers['DSEndpoint'] = None  
    msg.headers['DSId'] = str(uuid.uuid1()).upper()
    req = remoting.Request('null',body = (msg,))
    env = remoting.Envelope(amfVersion=pyamf.AMF3)
    env.bodies = [('/1',req)]
    data = bytes(remoting.encode(env).read())
    return data
Exemplo n.º 13
0
    def test_fail(self):
        def preproc(sr, *args):
            raise IndexError

        gw = gateway.BaseGateway({'test': TestService}, preprocessor=preproc)
        envelope = remoting.Envelope()

        request = remoting.Request('test.spam', envelope=envelope)

        processor = gw.getProcessor(request)
        response = processor(request)

        self.assertTrue(isinstance(response, remoting.Response))
        self.assertEqual(response.status, remoting.STATUS_ERROR)
Exemplo n.º 14
0
def playBrightCoveStream(bc_videoID, title, thumb, isSingle):
    bc_playerID = 586587148001
    bc_publisherID = 1659832546
    bc_const = "ef59d16acbb13614346264dfe58844284718fb7b"
    conn = httplib.HTTPConnection("c.brightcove.com")
    envelope = remoting.Envelope(amfVersion=3)
    envelope.bodies.append(
        ("/1",
         remoting.Request(
             target=
             "com.brightcove.player.runtime.PlayerMediaFacade.findMediaById",
             body=[bc_const, bc_playerID, bc_videoID, bc_publisherID],
             envelope=envelope)))
    conn.request("POST",
                 "/services/messagebroker/amf?playerId=" + str(bc_playerID),
                 str(remoting.encode(envelope).read()),
                 {'content-type': 'application/x-amf'})
    response = conn.getresponse().read()
    response = remoting.decode(response).bodies[0][1].body
    streamUrl = ""
    for item in sorted(response['renditions'],
                       key=lambda item: item['encodingRate'],
                       reverse=False):
        encRate = item['encodingRate']
        if encRate < maxBitRate:
            streamUrl = item['defaultURL']
    if not streamUrl:
        streamUrl = response['FLVFullLengthURL']
    if streamUrl:
        if isSingle:
            listitem = xbmcgui.ListItem(title, thumbnailImage=thumb)
            xbmc.Player().play(streamUrl, listitem)
        else:
            listitem = xbmcgui.ListItem(title,
                                        path=streamUrl,
                                        thumbnailImage=thumb)
            xbmcplugin.setResolvedUrl(pluginhandle, True, listitem)
        if autoPlay:
            while True:
                if xbmc.Player().isPlaying() and xbmc.getCondVisibility(
                        "Player.Paused"):
                    xbmc.Player().pause()
                    break
                xbmc.sleep(100)
            xbmc.sleep(500)
            while xbmc.getCondVisibility("Player.Paused"):
                if xbmc.Player().isPlaying():
                    xbmc.Player().pause()
                    break
                xbmc.sleep(100)
Exemplo n.º 15
0
    def test_preprocessor(self):
        d = defer.Deferred()

        def preprocessor(service_request, *args):
            d.callback(None)

        gw = twisted.TwistedGateway({'echo': lambda x: x}, expose_request=False, preprocessor=preprocessor)
        proc = twisted.AMF3RequestProcessor(gw)

        request = remoting.Request('null', body=[messaging.RemotingMessage(body=['spam.eggs'], operation='echo')])

        proc(request).addErrback(lambda failure: d.errback())

        return d
Exemplo n.º 16
0
def resolve_url(item_url):
    ## Credit to AddonScriptorDE for the bc code
    ## https://github.com/AddonScriptorDE/plugin.video.redbull_tv
    quality = int(addon.getSetting('quality'))
    bc_playerID = 2033674580001
    bc_publisherID = 1677257476001
    bc_const = 'efa14670a843335eedd6c1e1acc8b2c4c4e342db'
    conn = httplib.HTTPConnection("c.brightcove.com")
    envelope = remoting.Envelope(amfVersion=3)
    envelope.bodies.append(
        ("/1",
         remoting.Request(
             target=
             "com.brightcove.player.runtime.PlayerMediaFacade.findMediaById",
             body=[
                 bc_const, bc_playerID,
                 get_video_id(item_url), bc_publisherID
             ],
             envelope=envelope)))
    conn.request("POST",
                 "/services/messagebroker/amf?playerId=" + str(bc_playerID),
                 str(remoting.encode(envelope).read()),
                 {'content-type': 'application/x-amf'})
    response = conn.getresponse().read()
    response = remoting.decode(response).bodies[0][1].body
    renditions = sorted(response['renditions'],
                        key=lambda k: int(k['encodingRate']),
                        reverse=True)
    q_type = None
    for i in range(len(renditions)):
        if quality > 0:
            try:
                ok = renditions[quality]['defaultURL']
                if ok:
                    q_type = quality
                else:
                    raise
            except:
                quality = (quality - 1)
                addon_log('quality not avaliable')
            if q_type:
                break
        else:
            q_type = quality
            break
    path = renditions[q_type]['defaultURL'].split('&')[0]
    path += ' playpath=%s' % renditions[q_type]['defaultURL'].split('&')[1]
    item = xbmcgui.ListItem(path=path)
    xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, item)
Exemplo n.º 17
0
    def test_process_request(self):
        gw = gateway.BaseGateway({'test': TestService})
        envelope = remoting.Envelope()

        request = remoting.Request('test.spam', envelope=envelope)

        processor = gw.getProcessor(request)
        response = processor(request)

        self.assertTrue(isinstance(response, remoting.Response))
        self.assertEquals(response.status, remoting.STATUS_OK)
        self.assertEquals(response.body, 'spam')

        # Test a non existant service call
        request = remoting.Request('nope', envelope=envelope)
        processor = gw.getProcessor(request)
        response = processor(request)

        self.assertTrue(isinstance(response, remoting.Message))
        self.assertEquals(response.status, remoting.STATUS_ERROR)
        self.assertTrue(isinstance(response.body, remoting.ErrorFault))

        self.assertEquals(response.body.code, 'Service.ResourceNotFound')
        self.assertEquals(response.body.description, 'Unknown service nope')
Exemplo n.º 18
0
    def test_preprocessor(self):
        d = defer.Deferred()

        def preprocessor(service_request):
            d.callback(None)

        gw = _twisted.TwistedGateway({'echo': lambda x: x},
                                     preprocessor=preprocessor)
        proc = _twisted.AMF0RequestProcessor(gw)

        request = remoting.Request('echo', envelope=remoting.Envelope())

        proc(request).addErrback(lambda failure: d.errback())

        return d
Exemplo n.º 19
0
    def test_unknown_service_request(self):
        p = self.getProcessor({'echo': lambda x: x})

        request = remoting.Request('sdf')

        d = p(request)

        self.assertTrue(isinstance(d, defer.Deferred))
        response = d.result
        self.assertTrue(isinstance(response, remoting.Response))
        self.assertTrue(response.status, remoting.STATUS_ERROR)
        self.assertTrue(isinstance(response.body, remoting.ErrorFault))

        self.assertEqual(response.body.code, 'Service.ResourceNotFound')
        self.assertEqual(response.body.description, u'Unknown service sdf')
Exemplo n.º 20
0
 def get_clip_info_ps3(self, contentID):
  import pyamf
  #from pyamf import register_class
  from pyamf import remoting
  import httplib
  conn = httplib.HTTPConnection("c.brightcove.com")
  env = remoting.Envelope(amfVersion = 3)
  env.bodies.append(("/1",  remoting.Request(target = "com.brightcove.player.runtime.PlayerMediaFacade.findMediaByReferenceId", body = [self.urls['const2_PS3'], self.urls['experienceID_PS3'], str(contentID), self.urls['publisherID']], envelope = env)))
  conn.request("POST", "/services/messagebroker/amf?playerKey=" + self.urls['playerKey'], str(remoting.encode(env).read()), {'content-type': 'application/x-amf'})
  resp = conn.getresponse().read()
  response = remoting.decode(resp).bodies[0][1].body
  if self.IOS:
   return response['IOSRenditions']
  else:
   return response['renditions']
Exemplo n.º 21
0
    def test_malformed_credentials_header(self):
        gw = gateway.BaseGateway({'test': TestService})
        envelope = remoting.Envelope()

        request = remoting.Request('test.spam', envelope=envelope)
        request.headers['Credentials'] = {'spam': 'eggs'}

        processor = gw.getProcessor(request)
        response = processor(request)

        self.assertTrue(isinstance(response, remoting.Response))
        self.assertEqual(response.status, remoting.STATUS_ERROR)
        self.assertTrue(isinstance(response.body, remoting.ErrorFault))

        self.assertEqual(response.body.code, 'KeyError')
Exemplo n.º 22
0
    def test_service(self):
        gw = gateway.BaseGateway()
        echo = lambda x: x

        gw.addService(echo, 'echo', authenticator=self._auth)

        envelope = remoting.Envelope()
        request = remoting.Request('echo', body=['spam'])
        envelope.headers['Credentials'] = dict(userid='fred', password='******')
        envelope['/1'] = request

        processor = gw.getProcessor(request)
        response = processor(request)

        self.assertEqual(response.status, remoting.STATUS_OK)
        self.assertEqual(response.body, 'spam')
    def test_too_many_args(self):
        def spam(bar):
            return bar

        gw = gateway.BaseGateway({'spam': spam})
        rp = amf3.RequestProcessor(gw)
        message = messaging.RemotingMessage(body=['eggs', 'baz'], operation='spam')
        request = remoting.Request('null', body=[message])

        response = rp(request)
        ack = response.body

        self.assertTrue(isinstance(response, remoting.Response))
        self.assertEqual(response.status, remoting.STATUS_ERROR)
        self.assertTrue(isinstance(ack, messaging.ErrorMessage))
        self.assertEqual(ack.faultCode, 'TypeError')
    def test_request(self):
        def echo(x):
            return x

        gw = gateway.BaseGateway({'echo': echo})
        rp = amf3.RequestProcessor(gw)
        message = messaging.RemotingMessage(body=['spam.eggs'], operation='echo')
        request = remoting.Request('null', body=[message])

        response = rp(request)
        ack = response.body

        self.assertTrue(isinstance(response, remoting.Response))
        self.assertEqual(response.status, remoting.STATUS_OK)
        self.assertTrue(isinstance(ack, messaging.AcknowledgeMessage))
        self.assertEqual(ack.body, 'spam.eggs')
Exemplo n.º 25
0
    def test_deferred_preprocessor(self):
        d = defer.Deferred()

        def preprocessor(u, p):
            return reactor.callLater(0, lambda: True)

        p = self.getProcessor({'echo': lambda x: x}, preprocessor=preprocessor)

        request = remoting.Request('echo', envelope=remoting.Envelope())

        def cb(result):
            self.assertTrue(result)
            d.callback(None)

        p(request).addCallback(cb).addErrback(lambda failure: d.errback())

        return d
Exemplo n.º 26
0
    def test_request(self):
        gw = gateway.BaseGateway()
        echo = lambda x: x

        gw.addService(echo, 'echo', description='This is a test')

        envelope = remoting.Envelope()
        request = remoting.Request('echo')
        envelope['/1'] = request

        request.headers['DescribeService'] = None

        processor = gw.getProcessor(request)
        response = processor(request)

        self.assertEqual(response.status, remoting.STATUS_OK)
        self.assertEqual(response.body, 'This is a test')
Exemplo n.º 27
0
    def test_debug_traceback(self):
        # Test a non existant service call
        gw = gateway.BaseGateway({'test': TestService}, debug=True)
        envelope = remoting.Envelope()

        # Test a non existant service call
        request = remoting.Request('nope', envelope=envelope)
        processor = gw.getProcessor(request)
        response = processor(request)

        self.assertTrue(isinstance(response, remoting.Message))
        self.assertEqual(response.status, remoting.STATUS_ERROR)
        self.assertTrue(isinstance(response.body, remoting.ErrorFault))

        self.assertEqual(response.body.code, 'Service.ResourceNotFound')
        self.assertEqual(response.body.description, 'Unknown service nope')
        self.assertNotEquals(response.body.details, None)
Exemplo n.º 28
0
    def test_error_body(self):
        def echo(x):
            raise KeyError

        gw = twisted.TwistedGateway({'echo': echo}, expose_request=False)
        proc = twisted.AMF3RequestProcessor(gw)

        request = remoting.Request('null', body=[messaging.RemotingMessage(body=['spam.eggs'], operation='echo')])

        d = proc(request)

        self.assertTrue(isinstance(d, defer.Deferred))
        response = d.result
        self.assertTrue(isinstance(response, remoting.Response))
        self.assertTrue(response.status, remoting.STATUS_ERROR)
        self.assertTrue(isinstance(response.body, messaging.ErrorMessage))
        self.assertEqual(response.body.faultCode, 'KeyError')
Exemplo n.º 29
0
 def get_clip_info(self, contentID, url):
  import pyamf
  #from pyamf import register_class
  from pyamf import remoting
  import httplib
  conn = httplib.HTTPConnection("c.brightcove.com")
  pyamf.register_class(ViewerExperienceRequest, 'com.brightcove.experience.ViewerExperienceRequest')
  pyamf.register_class(ContentOverride, 'com.brightcove.experience.ContentOverride')
  viewer_exp_req = ViewerExperienceRequest(url, [ContentOverride(contentID)], self.urls['experienceID'], "")
  env = remoting.Envelope(amfVersion = 3)
  env.bodies.append(("/1",  remoting.Request(target = "com.brightcove.experience.ExperienceRuntimeFacade.getDataForExperience", body = [self.urls['const'], viewer_exp_req], envelope = env)))
  #conn.request("POST", "/services/messagebroker/amf?playerKey=" + self.urls['playerKey'], str(remoting.encode(env).read()), {'content-type': 'application/x-amf'})
  conn.request("POST", "/services/messagebroker/amf?playerId=" + self.urls['playerID'], str(remoting.encode(env).read()), {'content-type': 'application/x-amf'})
  resp = conn.getresponse().read()
  response = remoting.decode(resp).bodies[0][1].body
  self._printResponse(env, response)
  return response['programmedContent']['videoPlayer']['mediaDTO']['renditions']
Exemplo n.º 30
0
    def test_error_auth(self):
        def auth(u, p):
            raise IndexError

        p = self.getProcessor({'echo': lambda x: x}, authenticator=auth)

        request = remoting.Request('echo', envelope=remoting.Envelope())

        d = p(request)

        self.assertTrue(isinstance(d, defer.Deferred))

        response = d.result
        self.assertTrue(isinstance(response, remoting.Response))
        self.assertTrue(response.status, remoting.STATUS_ERROR)
        self.assertTrue(isinstance(response.body, remoting.ErrorFault))
        self.assertEqual(response.body.code, 'IndexError')