Просмотр исходного кода

added example 13, fixed other examples

tags/0.8.0
tastytea 1 год назад
Родитель
Сommit
88e2846e83
Подписано: tastytea <tastytea@tastytea.de> Идентификатор GPG ключа: 59346E0EA35C67E5

+ 1
- 2
examples/example10_simplify.cpp Просмотреть файл

@@ -43,11 +43,10 @@ int main(int argc, char *argv[])
return 1;
}

std::string answer;
std::uint16_t ret = 0;
EasyToot masto(argv[1], argv[2]);

masto.toot("Test");
ret = masto.toot("Test");
if (ret != 0)
{
std::cerr << "Error: " << ret << '\n';

+ 1
- 0
examples/example12_easy_laststatus.cpp Просмотреть файл

@@ -1,4 +1,5 @@
/* This file is part of mastodon-cpp.
* Prints some information about your last status.
*/

// Don't compile this if the Easy-interface is turned off

+ 97
- 0
examples/example13_easy_stream.cpp Просмотреть файл

@@ -0,0 +1,97 @@
/* This file is part of mastodon-cpp.
* Prints some information from the public timeline.
*/

// Don't compile this if the Easy-interface is turned off
#ifndef WITHOUT_EASY

#include <iostream>
#include <string>
#include <thread>
#include <memory>
#include <chrono>
#include <vector>

// If we are compiling mastodon-cpp, use another include path
#ifdef MASTODON_CPP
#include "mastodon-cpp.hpp"
#include "easy/all.hpp"
#else
#include <mastodon-cpp/mastodon-cpp.hpp>
// Include all headers in mastodon-cpp/easy/
#include <mastodon-cpp/easy/all.hpp>
#endif

using Mastodon::API;
using Mastodon::Easy;
using std::cout;

int main(int argc, char *argv[])
{
if (argc < 3)
{
std::cerr << "usage: " << argv[0] << " <instance> <access token>\n";
return 1;
}

cout << "I'll show you the public timeline. Press CTRL-C to abort\n";

// These have to be static in order to use them in- and outside the thread
static std::string stream;
// You can abort the stream with this pointer (ptr->abort_stream())
static std::unique_ptr<Mastodon::API::http> ptr;

// Start a new thread for the stream
std::thread pub_tl([=]
{
Easy masto(argv[1], argv[2]);
masto.get_stream(Mastodon::API::v1::streaming_public, stream, ptr);
});

while (true)
{
// Parse event stream and clear it afterwards
std::vector<Easy::stream_event> events = Easy::parse_stream(stream);
stream.clear();

// The contents of the stream are now in a vector of pairs
// { Easy::event_type, std::string }
for (const Easy::stream_event &event : events)
{
Easy::Status status;
Easy::Notification notification;

// Print out some information about the events
switch (event.first)
{
case Easy::event_type::Update:
status.from_string(event.second);
cout << "Status from: " << status.account().acct()
<< " (" << status.url() << ")\n";
break;
case Easy::event_type::Notification:
notification.from_string(event.second);
cout << "Notification involving: "
<< notification.account().acct()
<< " (" << notification.id() << ")\n";
break;
case Easy::event_type::Delete:
cout << "Deleted: " << event.second << '\n';
break;
default:
cout << "Something undefined happened. 😱\n";
}
}
std::this_thread::sleep_for(std::chrono::seconds(1));
}

pub_tl.join();
}

#else
int main()
{
printf("mastodon-cpp was compiled without Easy support.\n");
return 255;
}
#endif // WITHOUT_EASY

+ 1
- 0
src/mastodon-cpp.hpp Просмотреть файл

@@ -38,6 +38,7 @@
* @example example10_simplify.cpp
* @example example11_post_media.cpp
* @example example12_easy_laststatus.cpp
* @example example13_easy_laststatus.cpp
*/
namespace Mastodon
{

Загрузка…
Отмена
Сохранить