summaryrefslogtreecommitdiff
path: root/libappstream-glib/as-release.h
blob: 87e10f31c21696c8d95baa725dc5134ae1ae9caf (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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
 *
 * Copyright (C) 2014-2018 Richard Hughes <richard@hughsie.com>
 * Copyright (C) 2018 Matthias Klumpp <matthias@tenstral.net>
 *
 * SPDX-License-Identifier: LGPL-2.1+
 */

#pragma once

#if !defined (__APPSTREAM_GLIB_H) && !defined (AS_COMPILATION)
#error "Only <appstream-glib.h> can be included directly."
#endif

#include <glib-object.h>

#include "as-checksum.h"

G_BEGIN_DECLS

#define AS_TYPE_RELEASE	(as_release_get_type ())
G_DECLARE_DERIVABLE_TYPE (AsRelease, as_release, AS, RELEASE, GObject)

struct _AsReleaseClass
{
	GObjectClass		parent_class;
	/*< private >*/
	void (*_as_reserved1)	(void);
	void (*_as_reserved2)	(void);
	void (*_as_reserved3)	(void);
	void (*_as_reserved4)	(void);
	void (*_as_reserved5)	(void);
	void (*_as_reserved6)	(void);
	void (*_as_reserved7)	(void);
	void (*_as_reserved8)	(void);
};

/**
 * AsReleaseKind:
 * @AS_RELEASE_KIND_UNKNOWN:		Unknown release type
 * @AS_RELEASE_KIND_STABLE:		A stable release
 * @AS_RELEASE_KIND_DEVELOPMENT:	A development release
 *
 * The release size kind.
 *
 * Since: 0.7.6
 **/
typedef enum {
	AS_RELEASE_KIND_UNKNOWN,		/* Since: 0.7.6 */
	AS_RELEASE_KIND_STABLE,			/* Since: 0.7.6 */
	AS_RELEASE_KIND_DEVELOPMENT,		/* Since: 0.7.6 */
	/*< private >*/
	AS_RELEASE_KIND_LAST
} AsReleaseKind;

/**
 * AsReleaseState:
 * @AS_RELEASE_STATE_UNKNOWN:			Unknown state
 * @AS_RELEASE_STATE_INSTALLED:			Release is installed
 * @AS_RELEASE_STATE_AVAILABLE:			Release is available
 *
 * The release state.
 **/
typedef enum {
	AS_RELEASE_STATE_UNKNOWN,		/* Since: 0.5.8 */
	AS_RELEASE_STATE_INSTALLED,		/* Since: 0.5.8 */
	AS_RELEASE_STATE_AVAILABLE,		/* Since: 0.5.8 */
	/*< private >*/
	AS_RELEASE_STATE_LAST
} AsReleaseState;

AsRelease	*as_release_new			(void);
gint		 as_release_vercmp		(AsRelease	*rel1,
						 AsRelease	*rel2);

AsReleaseKind	 as_release_kind_from_string	(const gchar	*kind_str);
const gchar	*as_release_kind_to_string	(AsReleaseKind	 kind);
AsReleaseState	 as_release_state_from_string	(const gchar	*state);
const gchar	*as_release_state_to_string	(AsReleaseState	 state);

/* getters */
const gchar	*as_release_get_version		(AsRelease	*release);
GBytes		*as_release_get_blob		(AsRelease	*release,
						 const gchar	*filename);
guint64		 as_release_get_timestamp	(AsRelease	*release);
guint64		 as_release_get_install_duration(AsRelease	*release);
const gchar	*as_release_get_description	(AsRelease	*release,
						 const gchar	*locale);
GPtrArray	*as_release_get_locations	(AsRelease	*release);
const gchar	*as_release_get_location_default (AsRelease	*release);
AsChecksum	*as_release_get_checksum_by_fn	(AsRelease	*release,
						 const gchar	*fn);
AsChecksum	*as_release_get_checksum_by_target (AsRelease	*release,
						 AsChecksumTarget target);
GPtrArray	*as_release_get_checksums	(AsRelease	*release);
AsUrgencyKind	 as_release_get_urgency		(AsRelease	*release);
AsReleaseKind	 as_release_get_kind		(AsRelease	*release);
AsReleaseState	 as_release_get_state		(AsRelease	*release);
guint64		 as_release_get_size		(AsRelease	*release,
						 AsSizeKind	 kind);
const gchar	*as_release_get_url		(AsRelease	*release,
						 AsUrlKind	 url_kind);

/* setters */
void		 as_release_set_version		(AsRelease	*release,
						 const gchar	*version);
void		 as_release_set_blob		(AsRelease	*release,
						 const gchar	*filename,
						 GBytes		*blob);
void		 as_release_set_timestamp	(AsRelease	*release,
						 guint64	 timestamp);
void		 as_release_set_install_duration(AsRelease	*release,
						 guint64	 install_duration);
void		 as_release_set_description	(AsRelease	*release,
						 const gchar	*locale,
						 const gchar	*description);
void		 as_release_add_location	(AsRelease	*release,
						 const gchar	*location);
void		 as_release_add_checksum	(AsRelease	*release,
						 AsChecksum	*checksum);
void		 as_release_set_urgency		(AsRelease	*release,
						 AsUrgencyKind	 urgency);
void		 as_release_set_kind		(AsRelease	*release,
						 AsReleaseKind	 kind);
void		 as_release_set_state		(AsRelease	*release,
						 AsReleaseState	 state);
void		 as_release_set_size		(AsRelease	*release,
						 AsSizeKind	 kind,
						 guint64	 size);
void		 as_release_set_url		(AsRelease	*release,
						 AsUrlKind	 url_kind,
						 const gchar	*url);

G_END_DECLS