libDwmRDAP-0.1.4
DwmRDAPQuery.hh
Go to the documentation of this file.
1 //===========================================================================
2 // @(#) $Name:$
3 // @(#) $Id: DwmRDAPQuery.hh 8944 2017-03-31 20:49:14Z dwm $
4 //===========================================================================
5 // Copyright (c) Daniel W. McRobb 2017
6 // All rights reserved.
7 //
8 // Redistribution and use in source and binary forms, with or without
9 // modification, are permitted provided that the following conditions
10 // are met:
11 //
12 // 1. Redistributions of source code must retain the above copyright
13 // notice, this list of conditions and the following disclaimer.
14 // 2. Redistributions in binary form must reproduce the above copyright
15 // notice, this list of conditions and the following disclaimer in the
16 // documentation and/or other materials provided with the distribution.
17 // 3. The names of the authors and copyright holders may not be used to
18 // endorse or promote products derived from this software without
19 // specific prior written permission.
20 //
21 // IN NO EVENT SHALL DANIEL W. MCROBB BE LIABLE TO ANY PARTY FOR
22 // DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
23 // INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE,
24 // EVEN IF DANIEL W. MCROBB HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
25 // DAMAGE.
26 //
27 // THE SOFTWARE PROVIDED HEREIN IS ON AN "AS IS" BASIS, AND
28 // DANIEL W. MCROBB HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT,
29 // UPDATES, ENHANCEMENTS, OR MODIFICATIONS. DANIEL W. MCROBB MAKES NO
30 // REPRESENTATIONS AND EXTENDS NO WARRANTIES OF ANY KIND, EITHER
31 // IMPLIED OR EXPRESS, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
32 // WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE,
33 // OR THAT THE USE OF THIS SOFTWARE WILL NOT INFRINGE ANY PATENT,
34 // TRADEMARK OR OTHER RIGHTS.
35 //===========================================================================
36 
37 //---------------------------------------------------------------------------
40 //---------------------------------------------------------------------------
41 
42 #ifndef _DWMRDAPQUERY_HH_
43 #define _DWMRDAPQUERY_HH_
44 
45 #include <string>
46 #include <json/json.h>
47 
48 #include "DwmIpv4Address.hh"
49 #include "DwmRDAPResponse.hh"
50 
51 namespace Dwm {
52 
53  namespace RDAP {
54 
55  //------------------------------------------------------------------------
58  //------------------------------------------------------------------------
59  class Query
60  {
61  public:
62  //----------------------------------------------------------------------
64  //----------------------------------------------------------------------
65  Query();
66 
67  const std::string & Uri() const;
68 
69  //----------------------------------------------------------------------
71  //----------------------------------------------------------------------
72  Response Execute() const;
73 
74  //----------------------------------------------------------------------
90  //----------------------------------------------------------------------
91  static void FixIpv4Stupidity(Json::Value & jv);
92 
93  protected:
94  std::string _uristr;
95  };
96 
97  //------------------------------------------------------------------------
99  //------------------------------------------------------------------------
100  class IPv4Query : public Query
101  {
102  public:
103  //----------------------------------------------------------------------
105  //----------------------------------------------------------------------
106  IPv4Query(const Ipv4Address & ip);
107 
108  IPv4Response Execute() const;
109  };
110 
111  //------------------------------------------------------------------------
113  //------------------------------------------------------------------------
114  class ASQuery : public Query
115  {
116  public:
117  ASQuery(uint32_t asnum);
118  };
119 
120  //------------------------------------------------------------------------
122  //------------------------------------------------------------------------
123  class DomainQuery : public Query
124  {
125  public:
126  DomainQuery(const std::string & domain);
127  };
128 
129  } // namespace RDAP
130 
131 } // namespace Dwm
132 
133 #endif // _DWMRDAPQUERY_HH_
static void FixIpv4Stupidity(Json::Value &jv)
<rant> Some of the registries (ARIN, for example) return IPv4 addresses with leading zeros in each oc...
NOT IMPLEMENTED, NO BOOTSTRAP AVAILABLE.
Definition: DwmRDAPQuery.hh:114
Base RDAP query class.
Definition: DwmRDAPQuery.hh:59
NOT IMPLEMENTED, NO BOOTSTRAP AVAILABLE.
Definition: DwmRDAPQuery.hh:123
Dwm::RDAP::Response class definition.
Encapsulate an RDAP ip query response.
Definition: DwmRDAPResponse.hh:70
Query()
Constructor.
Generically encapsulate an RDAP response.
Definition: DwmRDAPResponse.hh:59
Definition: DwmCountryCode.hh:53
Encapsulates an IPv4 RDAP query (rdap/ip/a.b.c.d).
Definition: DwmRDAPQuery.hh:100
Response Execute() const
Executes the query and returns the response.