blob: 7ea01ff9c9237af57106d643d8e63b8f43999f6c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
// file : mod/mod-ci-github-service-data.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
#ifndef MOD_MOD_CI_GITHUB_SERVICE_DATA_HXX
#define MOD_MOD_CI_GITHUB_SERVICE_DATA_HXX
#include <libbrep/types.hxx>
#include <libbrep/utility.hxx>
#include <mod/mod-ci-github-gh.hxx>
namespace brep
{
// Service data associated with the tenant (corresponds to GH check suite).
//
// It is always a top-level JSON object and the first member is always the
// schema version.
// Unsynchronized state means we were unable to (conclusively) notify
// GitHub about the last state transition (e.g., due to a transient
// network error). The "conclusively" part means that the notification may
// or may not have gone through. Note: node_id can be absent for the same
// reason.
//
struct check_run
{
string build_id; // Full build id.
optional<string> node_id; // GitHub id.
// @@ TODO
//
// build_state state;
// bool state_synced;
// string
// state_string () const
// {
// string r (to_string (*state));
// if (!state_synced)
// r += "(unsynchronized)";
// return r;
// }
optional<build_state> state;
string
state_string () const
{
return state ? to_string (*state) : "null";
}
};
struct service_data
{
// The data schema version. Note: must be first member in the object.
//
uint64_t version = 1;
// Check suite-global data.
//
gh_installation_access_token installation_access;
uint64_t installation_id;
// @@ TODO Rename to repository_node_id.
//
string repository_id; // GitHub-internal opaque repository id.
string head_sha;
vector<check_run> check_runs;
// Return the check run with the specified build ID or nullptr if not
// found.
//
check_run*
find_check_run (const string& build_id);
// Construct from JSON.
//
// Throw invalid_argument if the schema version is not supported.
//
explicit
service_data (const string& json);
service_data (string iat_token,
timestamp iat_expires_at,
uint64_t installation_id,
string repository_id,
string head_sha);
service_data () = default;
// Serialize to JSON.
//
string
json () const;
};
ostream&
operator<< (ostream&, const check_run&);
}
#endif // MOD_MOD_CI_GITHUB_SERVICE_DATA_HXX
|