Conscience Core
traits.h
Go to the documentation of this file.
1 #ifndef JWT_CPP_PICOJSON_TRAITS_H
2 #define JWT_CPP_PICOJSON_TRAITS_H
3 
4 #ifndef PICOJSON_USE_INT64
5 #define PICOJSON_USE_INT64
6 #endif
7 #include "picojson/picojson.h"
8 
9 #ifndef JWT_DISABLE_PICOJSON
10 #define JWT_DISABLE_PICOJSON
11 #endif
12 #include "jwt-cpp/jwt.h"
13 
14 namespace jwt {
15  namespace traits {
16  struct kazuho_picojson {
20  using string_type = std::string;
21  using number_type = double;
22  using integer_type = int64_t;
23  using boolean_type = bool;
24 
25  static json::type get_type(const picojson::value& val) {
26  using json::type;
27  if (val.is<bool>()) return type::boolean;
28  if (val.is<int64_t>()) return type::integer;
29  if (val.is<double>()) return type::number;
30  if (val.is<std::string>()) return type::string;
31  if (val.is<picojson::array>()) return type::array;
32  if (val.is<picojson::object>()) return type::object;
33 
34  throw std::logic_error("invalid type");
35  }
36 
38  if (!val.is<picojson::object>()) throw std::bad_cast();
39  return val.get<picojson::object>();
40  }
41 
42  static std::string as_string(const picojson::value& val) {
43  if (!val.is<std::string>()) throw std::bad_cast();
44  return val.get<std::string>();
45  }
46 
48  if (!val.is<picojson::array>()) throw std::bad_cast();
49  return val.get<picojson::array>();
50  }
51 
52  static int64_t as_int(const picojson::value& val) {
53  if (!val.is<int64_t>()) throw std::bad_cast();
54  return val.get<int64_t>();
55  }
56 
57  static bool as_bool(const picojson::value& val) {
58  if (!val.is<bool>()) throw std::bad_cast();
59  return val.get<bool>();
60  }
61 
62  static double as_number(const picojson::value& val) {
63  if (!val.is<double>()) throw std::bad_cast();
64  return val.get<double>();
65  }
66 
67  static bool parse(picojson::value& val, const std::string& str) {
68  return picojson::parse(val, str).empty();
69  }
70 
71  static std::string serialize(const picojson::value& val) { return val.serialize(); }
72  };
73  } // namespace traits
74 } // namespace jwt
75 
76 #endif
jwt::traits::kazuho_picojson::as_bool
static bool as_bool(const picojson::value &val)
Definition: traits.h:57
jwt::traits::kazuho_picojson::get_type
static json::type get_type(const picojson::value &val)
Definition: traits.h:25
picojson::value
Definition: picojson.h:137
jwt::traits::kazuho_picojson::array_type
picojson::array array_type
Definition: traits.h:19
jwt::traits::kazuho_picojson::as_int
static int64_t as_int(const picojson::value &val)
Definition: traits.h:52
jwt::traits::kazuho_picojson::serialize
static std::string serialize(const picojson::value &val)
Definition: traits.h:71
jwt::traits::kazuho_picojson::as_number
static double as_number(const picojson::value &val)
Definition: traits.h:62
jwt::traits::kazuho_picojson::object_type
picojson::object object_type
Definition: traits.h:18
picojson::value::serialize
void serialize(Iter os, bool prettify=false) const
Definition: picojson.h:566
jwt::traits::kazuho_picojson::as_object
static picojson::object as_object(const picojson::value &val)
Definition: traits.h:37
conscience_core::bridging::commands::environment_entities::bool
const string const string EntityVideoSourcesCommandDataType CscPoint3d CscPoint3d bool
Definition: environmentEntitiesCommands.h:545
picojson::value::get
const T & get() const
jwt::traits::kazuho_picojson::boolean_type
bool boolean_type
Definition: traits.h:23
jwt
JSON Web Token.
Definition: base.h:20
picojson::value::is
bool is() const
picojson::object
value::object object
Definition: picojson.h:210
picojson::parse
std::string parse(value &out, Iter &pos, const Iter &last)
Definition: picojson.h:1098
picojson.h
jwt::json::type
type
Generic JSON types used in JWTs.
Definition: jwt.h:1794
jwt::traits::kazuho_picojson::string_type
std::string string_type
Definition: traits.h:20
jwt::traits::kazuho_picojson
Definition: traits.h:16
jwt::traits::kazuho_picojson::parse
static bool parse(picojson::value &val, const std::string &str)
Definition: traits.h:67
jwt::traits::kazuho_picojson::number_type
double number_type
Definition: traits.h:21
jwt.h
picojson::array
value::array array
Definition: picojson.h:209
jwt::traits::kazuho_picojson::as_array
static picojson::array as_array(const picojson::value &val)
Definition: traits.h:47
jwt::traits::kazuho_picojson::integer_type
int64_t integer_type
Definition: traits.h:22
jwt::traits::kazuho_picojson::as_string
static std::string as_string(const picojson::value &val)
Definition: traits.h:42