// GENERATED — DO NOT EDIT

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libsoup/libsoup-3.0/enum.Status.html).
pub(all) enum Status {
  None = 0
  Continue = 1
  SwitchingProtocols = 2
  Processing = 3
  Ok = 4
  Created = 5
  Accepted = 6
  NonAuthoritative = 7
  NoContent = 8
  ResetContent = 9
  PartialContent = 10
  MultiStatus = 11
  MultipleChoices = 12
  MovedPermanently = 13
  Found = 14
  SeeOther = 15
  NotModified = 16
  UseProxy = 17
  NotAppearingInThisProtocol = 18
  TemporaryRedirect = 19
  PermanentRedirect = 20
  BadRequest = 21
  Unauthorized = 22
  PaymentRequired = 23
  Forbidden = 24
  NotFound = 25
  MethodNotAllowed = 26
  NotAcceptable = 27
  ProxyAuthenticationRequired = 28
  RequestTimeout = 29
  Conflict = 30
  Gone = 31
  LengthRequired = 32
  PreconditionFailed = 33
  RequestEntityTooLarge = 34
  RequestUriTooLong = 35
  UnsupportedMediaType = 36
  RequestedRangeNotSatisfiable = 37
  ExpectationFailed = 38
  MisdirectedRequest = 39
  UnprocessableEntity = 40
  Locked = 41
  FailedDependency = 42
  InternalServerError = 43
  NotImplemented = 44
  BadGateway = 45
  ServiceUnavailable = 46
  GatewayTimeout = 47
  HttpVersionNotSupported = 48
  InsufficientStorage = 49
  NotExtended = 50
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libsoup/libsoup-3.0/enum.HTTPVersion.html).
pub(all) enum HTTPVersion {
  Http10 = 0
  Http11 = 1
  Http20 = 2
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libsoup/libsoup-3.0/enum.MessagePriority.html).
pub(all) enum MessagePriority {
  VeryLow = 0
  Low = 1
  Normal = 2
  High = 3
  VeryHigh = 4
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libsoup/libsoup-3.0/error.SessionError.html).
pub(all) enum SessionError {
  Parsing = 0
  Encoding = 1
  TooManyRedirects = 2
  TooManyRestarts = 3
  RedirectNoLocation = 4
  RedirectBadUri = 5
  MessageAlreadyInQueue = 6
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libsoup/libsoup-3.0/enum.Encoding.html).
pub(all) enum Encoding {
  Unrecognized = 0
  None = 1
  ContentLength = 2
  Eof = 3
  Chunked = 4
  Byteranges = 5
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libsoup/libsoup-3.0/enum.WebsocketState.html).
pub(all) enum WebsocketState {
  Open = 0
  Closing = 1
  Closed = 2
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libsoup/libsoup-3.0/enum.WebsocketConnectionType.html).
pub(all) enum WebsocketConnectionType {
  Unknown = 0
  Client = 1
  Server = 2
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libsoup/libsoup-3.0/enum.WebsocketDataType.html).
pub(all) enum WebsocketDataType {
  Text = 0
  Binary = 1
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libsoup/libsoup-3.0/error.WebsocketError.html).
pub(all) enum WebsocketError {
  Failed = 0
  NotWebsocket = 1
  BadHandshake = 2
  BadOrigin = 3
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libsoup/libsoup-3.0/enum.WebsocketCloseCode.html).
pub(all) enum WebsocketCloseCode {
  Normal = 0
  GoingAway = 1
  ProtocolError = 2
  UnsupportedData = 3
  NoStatus = 4
  Abnormal = 5
  BadData = 6
  PolicyViolation = 7
  TooBig = 8
  NoExtension = 9
  ServerError = 10
  TlsHandshake = 11
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libsoup/libsoup-3.0/flags.MessageFlags.html).
pub(all) enum MessageFlag {
  NoRedirect = 1
  NewConnection = 2
  Idempotent = 4
  DoNotUseAuthCache = 8
  CollectMetrics = 16
}

///|
fn MessageFlag::to_int(self : MessageFlag) -> Int = "%identity"

///|
pub struct MessageFlags {
  priv value : Int
}

///|
pub fn MessageFlags::MessageFlags(flags : Array[MessageFlag]) -> MessageFlags {
  let mut v = 0
  for flag in flags {
    v = v | flag.to_int()
  }
  MessageFlags::{ value: v }
}

///|
pub fn MessageFlags::from_int(value : Int) -> MessageFlags {
  MessageFlags::{ value, }
}

///|
pub fn MessageFlags::to_int(self : MessageFlags) -> Int {
  self.value
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libsoup/libsoup-3.0/flags.Cacheability.html).
pub(all) enum CacheabilityFlag {
  Cacheable = 1
  Uncacheable = 2
  Invalidates = 4
  Validates = 8
}

///|
fn CacheabilityFlag::to_int(self : CacheabilityFlag) -> Int = "%identity"

///|
pub struct Cacheability {
  priv value : Int
}

///|
pub fn Cacheability::Cacheability(
  flags : Array[CacheabilityFlag],
) -> Cacheability {
  let mut v = 0
  for flag in flags {
    v = v | flag.to_int()
  }
  Cacheability::{ value: v }
}

///|
pub fn Cacheability::from_int(value : Int) -> Cacheability {
  Cacheability::{ value, }
}

///|
pub fn Cacheability::to_int(self : Cacheability) -> Int {
  self.value
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libsoup/libsoup-3.0/flags.ServerListenOptions.html).
pub(all) enum ServerListenOption {
  Https = 1
  Ipv4Only = 2
  Ipv6Only = 4
}

///|
fn ServerListenOption::to_int(self : ServerListenOption) -> Int = "%identity"

///|
pub struct ServerListenOptions {
  priv value : Int
}

///|
pub fn ServerListenOptions::ServerListenOptions(
  flags : Array[ServerListenOption],
) -> ServerListenOptions {
  let mut v = 0
  for flag in flags {
    v = v | flag.to_int()
  }
  ServerListenOptions::{ value: v }
}

///|
pub fn ServerListenOptions::from_int(value : Int) -> ServerListenOptions {
  ServerListenOptions::{ value, }
}

///|
pub fn ServerListenOptions::to_int(self : ServerListenOptions) -> Int {
  self.value
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/libsoup/libsoup-3.0/enum.MemoryUse.html).
pub(all) enum MemoryUse {
  Static = 0
  Take = 1
  Copy = 2
}