Esempio n. 1
0
def test_upload_attachment(client, monkeypatch):
    mock_post = mock.Mock()
    mock_post.return_value.status_code = 200
    mock_post.return_value.json.return_value = {
        "attachment_id": "12345",
    }
    monkeypatch.setattr('requests.Session.post', mock_post)

    attachment = attachments.Image(url='https://some-image.com/image.jpg')
    res = client.upload_attachment(attachment)
    assert res == {"attachment_id": "12345"}
    assert mock_post.call_count == 1
    mock_post.assert_called_with(
        'https://graph.facebook.com/v2.12/me/message_attachments',
        params={
            'access_token': 12345678,
        },
        json={
            'message': {
                'attachment': {
                    'type': 'image',
                    'payload': {
                        'url': 'https://some-image.com/image.jpg'
                    }
                }
            }
        },
        timeout=None)
Esempio n. 2
0
    def test_quick_replies(self):
        qr = quick_replies.QuickReply(title='QR', payload='QR payload')
        qrs = quick_replies.QuickReplies(quick_replies=[qr] * 2)

        res = attachments.Image(url='http://facebook.com/image.jpg',
                                quick_replies=qrs)
        expected = {
            'attachment': {
                'type': 'image',
                'payload': {
                    'url': 'http://facebook.com/image.jpg'
                },
            },
            'quick_replies': [
                {
                    'content_type': 'text',
                    'title': 'QR',
                    'payload': 'QR payload'
                },
                {
                    'content_type': 'text',
                    'title': 'QR',
                    'payload': 'QR payload'
                },
            ],
        }
        assert expected == res.to_dict()
Esempio n. 3
0
def test_upload_no_quick_replies(client):
    replies = quick_replies.QuickReplies(
        [quick_replies.QuickReply(title='hello', payload='hello')])
    attachment = attachments.Image(url='https://some-image.com/image.jpg',
                                   quick_replies=replies)
    with pytest.raises(ValueError):
        client.upload_attachment(attachment)
Esempio n. 4
0
 def test_media_template(self):
     btn = elements.Button(button_type='web_url',
                           title='Web button',
                           url='http://facebook.com')
     attachment = attachments.Image(attachment_id='12345')
     res = templates.MediaTemplate(attachment, buttons=[btn])
     expected = {
         'attachment': {
             'type': 'template',
             'payload': {
                 'template_type':
                 'media',
                 'elements': [{
                     'media_type':
                     'image',
                     'attachment_id':
                     '12345',
                     'buttons': [{
                         'type': 'web_url',
                         'title': 'Web button',
                         'url': 'http://facebook.com'
                     }]
                 }]
             }
         }
     }
     assert expected == res.to_dict()
Esempio n. 5
0
def handleAttachments(messaging_event):
    log("Inside Attachments")
    # Location, image (stickers, emojis, gifs, add photo, add image files, take a picture, like sign), add other type of files
    for file in messaging_event["message"]["attachments"]:
        attachment = {}
        if file["type"] == "location":
            pass
        elif file["type"] == "image":
            image_url = file['payload']['url']
            save_message(
                str(messaging_event["sender"]["id"]), str(image_url),
                datetime.fromtimestamp(messaging_event['timestamp'] /
                                       1000).astimezone(pytz.timezone('UTC')))
            result = algorithmia.colorit(
                image_url=image_url,
                image_path=True,
                user_id=messaging_event["sender"]["id"])
            if isinstance(result, str):
                if result == "It's not a black & white image. Provide a black & white one.":
                    log(result)
                    attachment = {
                        "text":
                        "It is a colorful image! Provide a grayscale one."
                    }
                else:
                    attachment_id = upload_image(messaging_event['url'] +
                                                 result)
                    attachment = attachments.Image(attachment_id=attachment_id)
                    res = templates.MediaTemplate(attachment)
                    attachment = res.to_dict()
        else:
            pass
    return attachment
Esempio n. 6
0
def upload_image(url):
    log(url)
    attachment = attachments.Image(url=url, is_reusable=True)
    client = MessengerClient(page_access_token=os.environ['PAGE_ACCESS_TOKEN'])
    res = client.upload_attachment(attachment)
    log(res)
    return res['attachment_id']
Esempio n. 7
0
 def test_image(self):
     res = attachments.Image(url='http://facebook.com/image.jpg')
     expected = {
         'attachment': {
             'type': 'image',
             'payload': {
                 'url': 'http://facebook.com/image.jpg'
             }
         }
     }
     assert expected == res.to_dict()
Esempio n. 8
0
 def test_attachment_id(self):
     res = attachments.Image(attachment_id=12345)
     expected = {
         'attachment': {
             'type': 'image',
             'payload': {
                 'attachment_id': 12345,
             }
         }
     }
     assert expected == res.to_dict()
Esempio n. 9
0
 def test_media_template_no_buttons(self):
     attachment = attachments.Image(attachment_id='12345')
     res = templates.MediaTemplate(attachment)
     expected = {
         'attachment': {
             'type': 'template',
             'payload': {
                 'template_type':
                 'media',
                 'elements': [{
                     'media_type': 'image',
                     'attachment_id': '12345',
                 }]
             }
         }
     }
     assert expected == res.to_dict()
Esempio n. 10
0
    def send_image_url(self, recipient_id: Text, image_url: Text) -> None:
        """Sends an image. Default will just post the url as a string."""

        self.send(recipient_id, attachments.Image(url=image_url))
Esempio n. 11
0
 def test_quick_replies_throws_error(self):
     with pytest.raises(ValueError) as err:
         attachments.Image(url='http://facebook.com/image.jpg',
                           quick_replies='error')
     assert str(
         err.value) == 'quick_replies must be an instance of QuickReplies.'
Esempio n. 12
0
def test_upload_url_required(client):
    attachment = attachments.Image(attachment_id='12345')
    with pytest.raises(ValueError):
        client.upload_attachment(attachment)