def get_topic(core, topic_id):
        url = get_url(core) + PersonalizedStream.TOPIC_PATH.format(Topic.generate_urn(core, topic_id))
        headers = get_lf_token_header(core)

        response = requests.get(url, headers = headers)
        data = evaluate_response(response)['data']
        
        return Topic.serialize_from_json(data['topic']) if 'topic' in data else None
    def test_func(self):
        topic = Topic(self.ID, self.LABEL, self.CREATED_AT, self.MODIFIED_AT)
        self.assertEqual(self.DICT, topic.to_dict())

        topic2 = Topic.serialize_from_json(self.DICT)
        self.assertEqual(self.ID, topic2.topic_id)
        self.assertEqual(self.LABEL, topic2.label)
        self.assertEqual(self.CREATED_AT, topic2.created_at)
        self.assertEqual(self.MODIFIED_AT, topic2.modified_at)

        topic3 = json.dumps(topic2)
        self.assertEqual(json.dumps(self.DICT), topic3)

        topic = topic.create(Livefyre.get_network(self.NETWORK_NAME, self.NETWORK_KEY), "ID", "LABEL")
        self.assertEqual(topic.truncated_id, "ID")
 def test_build_collection_token(self):
     collection = self.site.build_reviews_collection('title', 'articleId', 'https://livefyre.com')
     token = collection.build_collection_meta_token()
      
     self.assertTrue(token)
     self.assertEqual(jwt.decode(token, self.SITE_KEY)['type'], 'reviews')
     
     collection = self.site.build_blog_collection('title', 'articleId', 'https://livefyre.com')
     token = collection.build_collection_meta_token()
     self.assertEqual(jwt.decode(token, self.SITE_KEY)['type'], 'liveblog')
     
     topics = [Topic.create(self.network, '1', '1')]
     collection = self.site.build_comments_collection(self.TITLE, self.ARTICLE_ID, self.URL)
     collection.data.topics = topics
     self.assertTrue(collection.is_network_issued())
     
     token = collection.build_collection_meta_token()
     
     if pyver < 2.7:
         pass
     elif pyver < 3.0:
         with self.assertRaisesRegexp(DecodeError, 'Signature verification failed'):
             jwt.decode(token, self.site.data.key)
     else:
         with self.assertRaisesRegex(DecodeError, 'Signature verification failed'):
             jwt.decode(token, self.site.data.key)
     
     decoded_token = jwt.decode(token, self.network.data.key)
     self.assertEqual(self.network.urn, decoded_token['iss'])
    def get_topics(core, limit=100, offset=0):
        url = get_url(core) + PersonalizedStream.MULTIPLE_TOPIC_PATH.format(core.urn)
        headers = get_lf_token_header(core)

        response = requests.get(url, params = {'limit': limit, 'offset': offset}, headers = headers)
        data = evaluate_response(response)['data']

        return [Topic.serialize_from_json(x) for x in data['topics']] if 'topics' in data else []
 def create_or_update_topics(core, topic_map):
     topics = []
     if pyver < 3.0:
         topics = [Topic.create(core, k, v) for k, v in topic_map.iteritems()]
     else:
         topics = [Topic.create(core, k, v) for k, v in topic_map.items()]
     
     for topic in topics:
         assert topic.label and len(topic.label) <= 128, 'topic label should not be empty and have 128 or less characters'
     
     url = get_url(core) + PersonalizedStream.MULTIPLE_TOPIC_PATH.format(core.urn)
     form = json.dumps({'topics': [x.to_dict() for x in topics]})
     headers = get_lf_token_header(core)
     headers['Content-Type'] = 'application/json'
     
     response = requests.post(url, data = form, headers = headers)
     evaluate_response(response)['data']
     
     return topics
 def test_topic_stream_cursor(self):
     network = Livefyre.get_network(self.NETWORK_NAME, self.NETWORK_KEY)
     date = datetime.datetime.now()
     topic_id = 'topic'
     label = 'label'
     ts_resource = 'urn:livefyre:{0}:topic={1}:topicStream'.format(network.data.name, topic_id)
     
     topic = Topic.create(network, topic_id, label)
     cursor = CursorFactory.get_topic_stream_cursor(network, topic)
     self.assertEqual(ts_resource, cursor.data.resource)
     
     cursor = CursorFactory.get_topic_stream_cursor(network, topic, self.LIMIT, date)
     self.assertEqual(ts_resource, cursor.data.resource)
     self.assertEqual(self.LIMIT, cursor.data.limit)