Guitar
GitHubAPI.h
Go to the documentation of this file.
1 #ifndef GITHUBAPI_H
2 #define GITHUBAPI_H
3 
5 
6 #include <QImage>
7 #include <QThread>
8 #include <string>
9 #include <functional>
10 #include <memory>
11 
12 class MainWindow;
13 class WebContext;
14 class WebClient;
15 
16 class GitHubAPI {
17 public:
18  using WebClientPtr = std::shared_ptr<WebClient>;
19 
20  struct User {
21  std::string login;
22  std::string avatar_url;
23  std::string name;
24  std::string email;
25  };
26 
28 
29  GitHubAPI(MainWindow *mainwindow)
30  : mainwindow_(mainwindow)
31  {
32  }
33 
34  QList<RepositorySearchResultItem> searchRepository(std::string q);
35 };
36 
37 
38 class GitHubRequestThread : public QThread {
39 private:
40  struct Private;
41  Private *m;
42 protected:
43  void run() override;
44 public:
46 public:
48  ~GitHubRequestThread() override;
49  std::string url;
50  bool ok = false;
51  std::string text;
52  std::function<bool(std::string const &text)> callback;
53  void start(MainWindow *mainwindow);
54 };
55 
56 #endif // GITHUBAPI_H
GitHubAPI::searchRepository
QList< RepositorySearchResultItem > searchRepository(std::string q)
Definition: GitHubAPI.cpp:68
GitHubRequestThread::m
Private * m
Definition: GitHubAPI.h:40
GitHubRequestThread::~GitHubRequestThread
~GitHubRequestThread() override
Definition: GitHubAPI.cpp:28
RepositorySearchResultItem::ssh_url
std::string ssh_url
Definition: RepositorySearchResultItem.h:9
WebClient
Definition: webclient.h:48
GitHubRequestThread::text
std::string text
Definition: GitHubAPI.h:51
GitHubRequestThread::GitHubRequestThread
GitHubRequestThread()
Definition: GitHubAPI.cpp:23
GitHubRequestThread::start
void start(MainWindow *mainwindow)
Definition: GitHubAPI.cpp:33
GitHubAPI::User::login
std::string login
Definition: GitHubAPI.h:21
RepositorySearchResultItem.h
GitHubRequestThread::Private::web
WebClientPtr web
Definition: GitHubAPI.cpp:20
GitHubAPI::WebClientPtr
std::shared_ptr< WebClient > WebClientPtr
Definition: GitHubAPI.h:18
GitHubRequestThread::Private
Definition: GitHubAPI.cpp:17
GitHubRequestThread
Definition: GitHubAPI.h:38
RepositorySearchResultItem::clone_url
std::string clone_url
Definition: RepositorySearchResultItem.h:10
GitHubAPI::mainwindow_
MainWindow * mainwindow_
Definition: GitHubAPI.h:27
GitHubRequestThread::Private::mainwindow
MainWindow * mainwindow
Definition: GitHubAPI.cpp:18
WebContext
Definition: webclient.h:224
WebContext::set_keep_alive_enabled
void set_keep_alive_enabled(bool f)
Definition: webclient.cpp:1225
GitHubAPI::User
Definition: GitHubAPI.h:20
GitHubAPI.h
MemoryReader.h
GitHubRequestThread::run
void run() override
Definition: GitHubAPI.cpp:41
misc.h
GitHubRequestThread::callback
std::function< bool(std::string const &text)> callback
Definition: GitHubAPI.h:52
MainWindow
Definition: MainWindow.h:58
WebClientPtr
std::shared_ptr< WebClient > WebClientPtr
Definition: AvatarLoader.cpp:21
WebClient::Request
Definition: webclient.h:87
GitHubRequestThread::web
GitHubAPI::WebClientPtr web()
Definition: GitHubAPI.cpp:63
to_stdstr
std::string to_stdstr(std::vector< char > const &vec)
Definition: charvec.cpp:39
WebClient::HTTP_1_0
@ HTTP_1_0
Definition: webclient.h:76
GitHubRequestThread::url
std::string url
Definition: GitHubAPI.h:49
MainWindow.h
RepositorySearchResultItem
Definition: RepositorySearchResultItem.h:6
RepositorySearchResultItem::score
double score
Definition: RepositorySearchResultItem.h:12
url_encode
std::string url_encode(char const *str, char const *end)
Definition: urlencode.cpp:32
urlencode.h
OverrideWaitCursor
#define OverrideWaitCursor
Definition: misc.h:90
GitHubAPI::User::name
std::string name
Definition: GitHubAPI.h:23
GitHubAPI
Definition: GitHubAPI.h:16
MainWindow::emitWriteLog
void emitWriteLog(const QByteArray &ba, bool receive)
Definition: MainWindow.cpp:5423
RepositorySearchResultItem::html_url
std::string html_url
Definition: RepositorySearchResultItem.h:11
webclient.h
GitHubAPI::GitHubAPI
GitHubAPI(MainWindow *mainwindow)
Definition: GitHubAPI.h:29
WebClient::Response
Definition: webclient.h:134
GitHubAPI::User::email
std::string email
Definition: GitHubAPI.h:24
GitHubRequestThread::ok
bool ok
Definition: GitHubAPI.h:50
WebClient::Response::content
std::vector< char > content
Definition: webclient.h:141
charvec.h
GitHubAPI::User::avatar_url
std::string avatar_url
Definition: GitHubAPI.h:22
RepositorySearchResultItem::full_name
std::string full_name
Definition: RepositorySearchResultItem.h:7
GitHubRequestThread::Private::webcx
WebContext webcx
Definition: GitHubAPI.cpp:19
RepositorySearchResultItem::description
std::string description
Definition: RepositorySearchResultItem.h:8