MidlePayQml 0.0.4
MiddlePay QML module
qclient.hpp
1 #pragma once
6 #include"block/qblock.hpp"
7 #include"client/qnode_response.hpp"
8 #include"client/qnode_info.hpp"
9 #include"client/qnode_tips.hpp"
10 #include"client/qnode_blockId.hpp"
11 #include"client/qnode_block.hpp"
12 #include"client/qnode_outputs.hpp"
13 #include <QNetworkAccessManager>
14 #include <QString>
15 #include<QHash>
16 
17 namespace qiota{
18 
19  class QCLIENT_EXPORT Client: public QObject
20  {
21 
22  Q_OBJECT
23  public:
24  Client(QObject *parent = nullptr);
25  enum ClientState {
26  Disconnected = 0,
27  Connected
28  };
29  void send_block(const qblocks::Block& block_);
30 
31  template<qblocks::Output::types outtype>
32  void get_outputs(Node_outputs* node_outs_,const QString& filter)const
33  {
34  auto outputids=get_api_indexer_v1_outputs<outtype>(filter);
35  QObject::connect(outputids,&Response::returned,node_outs_,[=](QJsonValue data ){
36  auto transid=data["items"].toArray();
37  node_outs_->size_+=transid.size();
38  outputids->deleteLater();
39  if(transid.size()==0)node_outs_->fill();
40  for(auto v:transid)
41  {
42  auto output=get_api_core_v2_outputs_outputId(v.toString());
43  QObject::connect(output,&Response::returned,node_outs_,[=](QJsonValue data){
44  node_outs_->fill(data);
45  output->deleteLater();
46  });
47  }
48 
49  });
50 
51  }
52  static quint64 get_deposit(const std::shared_ptr<const qblocks::Output>& out,const Node_info *info)
53  {
54  return out->min_deposit_of_output(info->vByteFactorKey,info->vByteFactorData,info->vByteCost);
55  }
56  void set_node_address(const QUrl node_address_m);
57  QUrl get_node_address(void)const{return rest_node_address_;}
58  QString get_jwt(void)const{return JWT;}
59  void set_jwt(const QString jwt_m){JWT=jwt_m;}
61  ClientState state(void)const{return state_;}
62  QJsonObject info()const{return info_;}
63 
64 
65  signals:
67  void stateChanged();
68 
69  private:
70  void set_State(ClientState state_m){if(state_m!=state_){state_=state_m;emit stateChanged();}}
71  Response* get_reply_rest(const QString& path, const QString &query=QString())const;
72  Response* post_reply_rest(const QString& path, const QJsonObject& payload )const;
73 
74 
75  Node_tips* get_api_core_v2_tips(void)const;
76  Node_blockID* post_api_core_v2_blocks(const QJsonObject& block_)const;
77  Node_block* get_api_core_v2_blocks_blockId(const QString& blockId)const;
78  Response* get_api_core_v2_blocks_blockId_metadata(const QString& blockId)const;
79 
80  Response* get_api_core_v2_outputs_outputId(const QString& outputId)const;
81  Response* get_api_core_v2_outputs_outputId_metadata(const QString& outputId)const;
82  template<qblocks::Output::types outtype>
83  Response* get_api_indexer_v1_outputs(const QString& filter)const
84  {
85  return get_reply_rest("/api/indexer/v1/outputs/"+qblocks::Output::typesstr[outtype],filter);
86  }
87 
88 
89  QUrl rest_node_address_;
91  QString JWT;
92  ClientState state_;
93  QJsonObject info_;
94  };
95 
96 }
Definition: qclient.hpp:20
QUrl get_node_address(void) const
Definition: qclient.hpp:57
static quint64 get_deposit(const std::shared_ptr< const qblocks::Output > &out, const Node_info *info)
Definition: qclient.hpp:52
void set_jwt(const QString jwt_m)
Definition: qclient.hpp:59
ClientState
Definition: qclient.hpp:25
Client(QObject *parent=nullptr)
ClientState state(void) const
Definition: qclient.hpp:61
QJsonObject info() const
Definition: qclient.hpp:62
void stateChanged()
QString get_jwt(void) const
Definition: qclient.hpp:58
void last_blockid(qblocks::c_array id) const
void get_outputs(Node_outputs *node_outs_, const QString &filter) const
Definition: qclient.hpp:32
Node_info * get_api_core_v2_info(void)
void set_node_address(const QUrl node_address_m)
void send_block(const qblocks::Block &block_)
Definition: qnode_info.hpp:11
quint64 vByteCost
Definition: qnode_info.hpp:21
quint64 vByteFactorData
Definition: qnode_info.hpp:21
quint64 vByteFactorKey
Definition: qnode_info.hpp:21
Definition: qnode_outputs.hpp:41
void fill(QJsonValue data)
size_t size_
Definition: qnode_outputs.hpp:46
void returned(QJsonValue data)
Definition: qblock.hpp:31
QBLOCK_EXPORT static const QHash< types, QString > typesstr
Definition: qoutputs.hpp:88
Byte Array that takes care of storing the objects in serialized form.
Definition: carray.hpp:28
Definition: qbigint.hpp:7
QJsonArray toArray() const const
QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, Functor functor)