Class Soup
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
A constant corresponding to 1 day.static final int
A constant corresponding to 1 hour.static final int
A constant corresponding to 1 week.static final int
A constant corresponding to 1 year.static final String
A macro containing the valuemultipart/form-data
; the MIME type used for posting form data that contains files to be uploaded.static final String
A macro containing the valueapplication/x-www-form-urlencoded
; the default MIME type for POSTing HTML form data.static final int
An expiration date that is always in the past.static final int
The set ofGUriFlags
libsoup expects allGUri
to use.static final int
LikegetMajorVersion()
, but from the headers used at application compile time, rather than from the library linked against at application run time.static final int
LikegetMicroVersion()
, but from the headers used at application compile time, rather than from the library linked against at application run time.static final int
LikegetMinorVersion()
, but from the headers used at application compile time, rather than from the library linked against at application run time.static final int
A macro that should be defined by the user prior to includinglibsoup.h
. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic boolean
checkVersion
(int major, int minor, int micro) Likeorg.gnome.soup.Soup#CHECKVERSION
, but the check for soup_check_version is at runtime instead of compile time.static void
cookiesFree
(SList<Cookie> cookies) Freescookies
.Parsesmsg
's Cookie request header and returns aGLib.SList
ofSoupCookie
s.Parsesmsg
's Set-Cookie response headers and returns aGLib.SList
ofSoupCookie
s.static String
cookiesToCookieHeader
(SList<Cookie> cookies) Serializes aGLib.SList
ofSoupCookie
into a string suitable for setting as the value of the "Cookie" header.static void
cookiesToRequest
(SList<Cookie> cookies, Message msg) Adds the name and value of each cookie incookies
tomsg
's "Cookie" request.static void
cookiesToResponse
(SList<Cookie> cookies, Message msg) Appends a "Set-Cookie" response header tomsg
for each cookie incookies
.static DateTime
dateTimeNewFromHttpString
(String dateString) ParsesdateString
and tries to extract a date from it.static String
dateTimeToString
(DateTime date, DateFormat format) Convertsdate
to a string in the format described byformat
.formDecode
(String encodedForm) Decodesform
.formDecodeMultipart
(Multipart multipart, @Nullable String fileControlName, @Nullable Out<String> filename, @Nullable Out<String> contentType, @Nullable Out<Bytes> file) Decodes the "multipart/form-data" request inmultipart
.static String
formEncode
(String firstField, Object... varargs) Encodes the given field names and values into a value of type "application/x-www-form-urlencoded".static String
formEncodeDatalist
(Data[] formDataSet) EncodesformDataSet
into a value of type "application/x-www-form-urlencoded".static String
formEncodeHash
(HashTable<String, String> formDataSet) EncodesformDataSet
into a value of type "application/x-www-form-urlencoded".static int
Returns the major version number of the libsoup library.static int
Returns the micro version number of the libsoup library.static int
Returns the minor version number of the libsoup library.static boolean
headerContains
(String header, String token) Parsesheader
to see if it contains the tokentoken
(matched case-insensitively).static void
headerFreeList
(SList<MemorySegment> list) Freeslist
.static void
headerFreeParamList
(HashTable<String, String> paramList) FreesparamList
.static void
headerGStringAppendParam
(GString string, String name, @Nullable String value) Appends something likename=value
tostring
, taking care to quotevalue
if needed, and if so, to escape any quotes or backslashes invalue
.static void
headerGStringAppendParamQuoted
(GString string, String name, String value) Appends something likename="value"
tostring
, taking care to escape any quotes or backslashes invalue
.headerParseList
(String header) Parses a header whose content is described by RFC2616 as#something
.headerParseParamList
(String header) Parses a header which is a comma-delimited list of something like:token [ "=" ( token | quoted-string ) ]
.headerParseParamListStrict
(String header) A strict version ofheaderParseParamList(java.lang.String)
that bails out if there are duplicate parameters.headerParseQualityList
(String header, @Nullable Out<SList<String>> unacceptable) Parses a header whose content is a list of items with optional "qvalue"s (eg, Accept, Accept-Charset, Accept-Encoding, Accept-Language, TE).headerParseSemiParamList
(String header) Parses a header which is a semicolon-delimited list of something like:token [ "=" ( token | quoted-string ) ]
.headerParseSemiParamListStrict
(String header) A strict version ofheaderParseSemiParamList(java.lang.String)
that bails out if there are duplicate parameters.static boolean
headersParse
(String str, int len, MessageHeaders dest) Parses the headers of an HTTP request or response instr
and stores the results indest
.static int
headersParseRequest
(String str, int len, MessageHeaders reqHeaders, @Nullable Out<String> reqMethod, @Nullable Out<String> reqPath, @Nullable Out<HTTPVersion> ver) Parses the headers of an HTTP request instr
and stores the results inreqMethod
,reqPath
,ver
, andreqHeaders
.static boolean
headersParseResponse
(String str, int len, MessageHeaders headers, @Nullable Out<HTTPVersion> ver, @Nullable Out<Integer> statusCode, @Nullable Out<String> reasonPhrase) Parses the headers of an HTTP response instr
and stores the results inver
,statusCode
,reasonPhrase
, andheaders
.static boolean
headersParseStatusLine
(String statusLine, @Nullable Out<HTTPVersion> ver, @Nullable Out<Integer> statusCode, @Nullable Out<String> reasonPhrase) Parses the HTTP Status-Line string instatusLine
intover
,statusCode
, andreasonPhrase
.static void
static boolean
tldDomainIsPublicSuffix
(String domain) Looks whether thedomain
passed as argument is a public domain suffix (.org, .com, .co.uk, etc) or not.static String
tldGetBaseDomain
(String hostname) Finds the base domain for a givenhostname
static Uri
uriCopy
(Uri uri, URIComponent firstComponent, Object... varargs) As of 3.4.0 this will detect the default ports of HTTP(s) and WS(S) URIs when copying and set it to the default port of the new scheme.static Bytes
uriDecodeDataUri
(String uri, @Nullable Out<String> contentType) Decodes the given data URI and returns its contents andcontentType
.static boolean
Tests whether or noturi1
anduri2
are equal in all parts.static void
websocketClientPrepareHandshake
(Message msg, @Nullable String origin, @Nullable String[] protocols, @Nullable TypeClass[] supportedExtensions) Adds the necessary headers tomsg
to request a WebSocket handshake including supported WebSocket extensions.static boolean
websocketClientVerifyHandshake
(Message msg, @Nullable TypeClass[] supportedExtensions, @Nullable Out<List<WebsocketExtension>> acceptedExtensions) Looks at the response status code and headers inmsg
and determines if they contain a valid WebSocket handshake response (given the handshake request inmsg
's request headers).static boolean
websocketServerCheckHandshake
(ServerMessage msg, @Nullable String origin, @Nullable String[] protocols, @Nullable TypeClass[] supportedExtensions) Examines the method and request headers inmsg
and determines whethermsg
contains a valid handshake request.static boolean
websocketServerProcessHandshake
(ServerMessage msg, @Nullable String expectedOrigin, @Nullable String[] protocols, @Nullable TypeClass[] supportedExtensions, @Nullable Out<List<WebsocketExtension>> acceptedExtensions) Examines the method and request headers inmsg
and (assumingmsg
contains a valid handshake request), fills in the handshake response.
-
Field Details
-
COOKIE_MAX_AGE_ONE_DAY
public static final int COOKIE_MAX_AGE_ONE_DAYA constant corresponding to 1 day.For use with
Cookie(java.lang.String, java.lang.String, java.lang.String, java.lang.String, int)
andCookie.setMaxAge(int)
.- See Also:
-
COOKIE_MAX_AGE_ONE_HOUR
public static final int COOKIE_MAX_AGE_ONE_HOURA constant corresponding to 1 hour.For use with
Cookie(java.lang.String, java.lang.String, java.lang.String, java.lang.String, int)
andCookie.setMaxAge(int)
.- See Also:
-
COOKIE_MAX_AGE_ONE_WEEK
public static final int COOKIE_MAX_AGE_ONE_WEEKA constant corresponding to 1 week.For use with
Cookie(java.lang.String, java.lang.String, java.lang.String, java.lang.String, int)
andCookie.setMaxAge(int)
.- See Also:
-
COOKIE_MAX_AGE_ONE_YEAR
public static final int COOKIE_MAX_AGE_ONE_YEARA constant corresponding to 1 year.For use with
Cookie(java.lang.String, java.lang.String, java.lang.String, java.lang.String, int)
andCookie.setMaxAge(int)
.- See Also:
-
FORM_MIME_TYPE_MULTIPART
A macro containing the valuemultipart/form-data
; the MIME type used for posting form data that contains files to be uploaded.- See Also:
-
FORM_MIME_TYPE_URLENCODED
A macro containing the valueapplication/x-www-form-urlencoded
; the default MIME type for POSTing HTML form data.- See Also:
-
HSTS_POLICY_MAX_AGE_PAST
public static final int HSTS_POLICY_MAX_AGE_PASTAn expiration date that is always in the past.- See Also:
-
HTTP_URI_FLAGS
public static final int HTTP_URI_FLAGSThe set ofGUriFlags
libsoup expects allGUri
to use.- See Also:
-
MAJOR_VERSION
public static final int MAJOR_VERSIONLikegetMajorVersion()
, but from the headers used at application compile time, rather than from the library linked against at application run time.- See Also:
-
MICRO_VERSION
public static final int MICRO_VERSIONLikegetMicroVersion()
, but from the headers used at application compile time, rather than from the library linked against at application run time.- See Also:
-
MINOR_VERSION
public static final int MINOR_VERSIONLikegetMinorVersion()
, but from the headers used at application compile time, rather than from the library linked against at application run time.- See Also:
-
VERSION_MIN_REQUIRED
public static final int VERSION_MIN_REQUIREDA macro that should be defined by the user prior to includinglibsoup.h
.The definition should be one of the predefined libsoup version macros:
SOUP_VERSION_2_24
,SOUP_VERSION_2_26
, ...This macro defines the earliest version of libsoup that the package is required to be able to compile against.
If the compiler is configured to warn about the use of deprecated functions, then using functions that were deprecated in version
SOUP_VERSION_MIN_REQUIRED
or earlier will cause warnings (but using functions deprecated in later releases will not).- See Also:
-
-
Constructor Details
-
Soup
public Soup()
-
-
Method Details
-
javagi$ensureInitialized
public static void javagi$ensureInitialized() -
checkVersion
public static boolean checkVersion(int major, int minor, int micro) throws UnsupportedPlatformException Likeorg.gnome.soup.Soup#CHECKVERSION
, but the check for soup_check_version is at runtime instead of compile time.This is useful for compiling against older versions of libsoup, but using features from newer versions.
- Parameters:
major
- the major version to checkminor
- the minor version to checkmicro
- the micro version to check- Returns:
true
if the version of the libsoup currently loaded is the same as or newer than the passed-in version.- Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
cookiesFree
Freescookies
.- Parameters:
cookies
- aGSList
ofSoupCookie
- Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
cookiesFromRequest
Parsesmsg
's Cookie request header and returns aGLib.SList
ofSoupCookie
s.As the "Cookie" header, unlike "Set-Cookie", only contains cookie names and values, none of the other
SoupCookie
fields will be filled in. (Thus, you can't generally pass a cookie returned from this method directly tocookiesToResponse(org.gnome.glib.SList<org.gnome.soup.Cookie>, org.gnome.soup.Message)
.)- Parameters:
msg
- aSoupMessage
containing a "Cookie" request header- Returns:
- a
GSList
ofSoupCookie
s, which can be freed withCookie.free()
. - Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
cookiesFromResponse
Parsesmsg
's Set-Cookie response headers and returns aGLib.SList
ofSoupCookie
s.Cookies that do not specify "path" or "domain" attributes will have their values defaulted from
msg
.- Parameters:
msg
- aSoupMessage
containing a "Set-Cookie" response header- Returns:
- a
GSList
ofSoupCookie
s, which can be freed withCookie.free()
. - Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
cookiesToCookieHeader
public static String cookiesToCookieHeader(SList<Cookie> cookies) throws UnsupportedPlatformException Serializes aGLib.SList
ofSoupCookie
into a string suitable for setting as the value of the "Cookie" header.- Parameters:
cookies
- aGSList
ofSoupCookie
- Returns:
- the serialization of
cookies
- Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
cookiesToRequest
public static void cookiesToRequest(SList<Cookie> cookies, Message msg) throws UnsupportedPlatformException Adds the name and value of each cookie incookies
tomsg
's "Cookie" request.If
msg
already has a "Cookie" request header, these cookies will be appended to the cookies already present. Be careful that you do not append the same cookies twice, eg, when requeuing a message.- Parameters:
cookies
- aGSList
ofSoupCookie
msg
- aSoupMessage
- Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
cookiesToResponse
public static void cookiesToResponse(SList<Cookie> cookies, Message msg) throws UnsupportedPlatformException Appends a "Set-Cookie" response header tomsg
for each cookie incookies
.This is in addition to any other "Set-Cookie" headers
msg
may already have.- Parameters:
cookies
- aGSList
ofSoupCookie
msg
- aSoupMessage
- Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
dateTimeNewFromHttpString
public static DateTime dateTimeNewFromHttpString(String dateString) throws UnsupportedPlatformException ParsesdateString
and tries to extract a date from it.This recognizes all of the "HTTP-date" formats from RFC 2616, RFC 2822 dates, and reasonable approximations thereof. (Eg, it is lenient about whitespace, leading "0"s, etc.)
- Parameters:
dateString
- The date as a string- Returns:
- a new
GDateTime
, ornull
ifdateString
could not be parsed. - Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
dateTimeToString
public static String dateTimeToString(DateTime date, DateFormat format) throws UnsupportedPlatformException Convertsdate
to a string in the format described byformat
.- Parameters:
date
- aGDateTime
format
- the format to generate the date in- Returns:
date
as a string ornull
- Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
formDecode
public static HashTable<String,String> formDecode(String encodedForm) throws UnsupportedPlatformException Decodesform
.which is an urlencoded dataset as defined in the HTML 4.01 spec.
- Parameters:
encodedForm
- data of type "application/x-www-form-urlencoded"- Returns:
- a hash
table containing the name/value pairs from
encodedForm
, which you can free withHashTable.destroy()
. - Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
formDecodeMultipart
public static HashTable<String,String> formDecodeMultipart(Multipart multipart, @Nullable @Nullable String fileControlName, @Nullable @Nullable Out<String> filename, @Nullable @Nullable Out<String> contentType, @Nullable @Nullable Out<Bytes> file) throws UnsupportedPlatformException Decodes the "multipart/form-data" request inmultipart
.this is a convenience method for the case when you have a single file upload control in a form. (Or when you don't have any file upload controls, but are still using "multipart/form-data" anyway.) Pass the name of the file upload control in
fileControlName
, andformDecodeMultipart(org.gnome.soup.Multipart, java.lang.String, io.github.jwharm.javagi.base.Out<java.lang.String>, io.github.jwharm.javagi.base.Out<java.lang.String>, io.github.jwharm.javagi.base.Out<org.gnome.glib.Bytes>)
will extract the uploaded file data intofilename
,contentType
, andfile
. All of the other form control data will be returned (as strings, as withformDecode(java.lang.String)
in the returnedGLib.HashTable
.You may pass
null
forfilename
,contentType
and/orfile
if you do not care about those fields.formDecodeMultipart(org.gnome.soup.Multipart, java.lang.String, io.github.jwharm.javagi.base.Out<java.lang.String>, io.github.jwharm.javagi.base.Out<java.lang.String>, io.github.jwharm.javagi.base.Out<org.gnome.glib.Bytes>)
may also returnnull
in those fields if the client did not provide that information. You must free the returned filename and content-type withGLib.free(java.lang.foreign.MemorySegment)
, and the returned file data withorg.gnome.glib.Bytes#unref
.If you have a form with more than one file upload control, you will need to decode it manually, using
Multipart.fromMessage(org.gnome.soup.MessageHeaders, org.gnome.glib.Bytes)
andMultipart.getPart(int, io.github.jwharm.javagi.base.Out<org.gnome.soup.MessageHeaders>, io.github.jwharm.javagi.base.Out<org.gnome.glib.Bytes>)
.- Parameters:
multipart
- aSoupMultipart
fileControlName
- the name of the HTML file upload controlfilename
- return location for the name of the uploaded filecontentType
- return location for the MIME type of the uploaded filefile
- return location for the uploaded file data- Returns:
- a hash table containing the name/value pairs (other than
fileControlName
) frommsg
, which you can free withHashTable.destroy()
. On error, it will returnnull
. - Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
formEncode
public static String formEncode(String firstField, Object... varargs) throws UnsupportedPlatformException Encodes the given field names and values into a value of type "application/x-www-form-urlencoded".Encodes as defined in the HTML 4.01 spec.
This method requires you to know the names of the form fields (or at the very least, the total number of fields) at compile time; for working with dynamic forms, use
formEncodeHash(org.gnome.glib.HashTable<java.lang.String, java.lang.String>)
orformEncodeDatalist(org.gnome.glib.Data[])
.See also:
Message.fromEncodedForm(java.lang.String, java.lang.String, java.lang.String)
.- Parameters:
firstField
- name of the first form fieldvarargs
- value offirstField
, followed by additional field names and values, terminated bynull
.- Returns:
- the encoded form
- Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
formEncodeDatalist
EncodesformDataSet
into a value of type "application/x-www-form-urlencoded".Encodes as defined in the HTML 4.01 spec. Unlike
formEncodeHash(org.gnome.glib.HashTable<java.lang.String, java.lang.String>)
, this preserves the ordering of the form elements, which may be required in some situations.See also:
Message.fromEncodedForm(java.lang.String, java.lang.String, java.lang.String)
.- Parameters:
formDataSet
- a datalist containing name/value pairs- Returns:
- the encoded form
- Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
formEncodeHash
public static String formEncodeHash(HashTable<String, String> formDataSet) throws UnsupportedPlatformExceptionEncodesformDataSet
into a value of type "application/x-www-form-urlencoded".Encodes as defined in the HTML 4.01 spec.
Note that the HTML spec states that "The control names/values are listed in the order they appear in the document." Since this method takes a hash table, it cannot enforce that; if you care about the ordering of the form fields, use
formEncodeDatalist(org.gnome.glib.Data[])
.See also:
Message.fromEncodedForm(java.lang.String, java.lang.String, java.lang.String)
.- Parameters:
formDataSet
- a hash table containing name/value pairs (as strings)- Returns:
- the encoded form
- Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
getMajorVersion
Returns the major version number of the libsoup library.e.g. in libsoup version 2.42.0 this is 2.
This function is in the library, so it represents the libsoup library your code is running against. Contrast with the
SOUP_MAJOR_VERSION
macro, which represents the major version of the libsoup headers you have included when compiling your code.- Returns:
- the major version number of the libsoup library
- Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
getMicroVersion
Returns the micro version number of the libsoup library.e.g. in libsoup version 2.42.0 this is 0.
This function is in the library, so it represents the libsoup library your code is running against. Contrast with the
SOUP_MICRO_VERSION
macro, which represents the micro version of the libsoup headers you have included when compiling your code.- Returns:
- the micro version number of the libsoup library
- Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
getMinorVersion
Returns the minor version number of the libsoup library.e.g. in libsoup version 2.42.0 this is 42.
This function is in the library, so it represents the libsoup library your code is running against. Contrast with the
SOUP_MINOR_VERSION
macro, which represents the minor version of the libsoup headers you have included when compiling your code.- Returns:
- the minor version number of the libsoup library
- Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
headerContains
public static boolean headerContains(String header, String token) throws UnsupportedPlatformException Parsesheader
to see if it contains the tokentoken
(matched case-insensitively).Note that this can't be used with lists that have qvalues.
- Parameters:
header
- An HTTP header suitable for parsing withheaderParseList(java.lang.String)
token
- a token- Returns:
- whether or not
header
containstoken
- Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
headerFreeList
Freeslist
.- Parameters:
list
- aGSList
returned fromheaderParseList(java.lang.String)
orheaderParseQualityList(java.lang.String, io.github.jwharm.javagi.base.Out<org.gnome.glib.SList<java.lang.String>>)
- Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
headerFreeParamList
public static void headerFreeParamList(HashTable<String, String> paramList) throws UnsupportedPlatformExceptionFreesparamList
.- Parameters:
paramList
- aGHashTable
returned fromheaderParseParamList(java.lang.String)
orheaderParseSemiParamList(java.lang.String)
- Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
headerGStringAppendParam
public static void headerGStringAppendParam(GString string, String name, @Nullable @Nullable String value) throws UnsupportedPlatformException Appends something likename=value
tostring
, taking care to quotevalue
if needed, and if so, to escape any quotes or backslashes invalue
.Alternatively, if
value
is a non-ASCII UTF-8 string, it will be appended using RFC5987 syntax. Although in theory this is supposed to work anywhere in HTTP that uses this style of parameter, in reality, it can only be used portably with the Content-Disposition "filename" parameter.If
value
isnull
, this will just appendname
tostring
.- Parameters:
string
- aGString
being used to construct an HTTP header valuename
- a parameter namevalue
- a parameter value, ornull
- Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
headerGStringAppendParamQuoted
public static void headerGStringAppendParamQuoted(GString string, String name, String value) throws UnsupportedPlatformException Appends something likename="value"
tostring
, taking care to escape any quotes or backslashes invalue
.If
value
is (non-ASCII) UTF-8, this will instead use RFC 5987 encoding, just likeheaderGStringAppendParam(org.gnome.glib.GString, java.lang.String, java.lang.String)
.- Parameters:
string
- aGString
being used to construct an HTTP header valuename
- a parameter namevalue
- a parameter value- Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
headerParseList
Parses a header whose content is described by RFC2616 as#something
."something" does not itself contain commas, except as part of quoted-strings.
- Parameters:
header
- a header value- Returns:
- a
GSList
of list elements, as allocated strings - Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
headerParseParamList
public static HashTable<String,String> headerParseParamList(String header) throws UnsupportedPlatformException Parses a header which is a comma-delimited list of something like:token [ "=" ( token | quoted-string ) ]
.Tokens that don't have an associated value will still be added to the resulting hash table, but with a
null
value.This also handles RFC5987 encoding (which in HTTP is mostly used for giving UTF8-encoded filenames in the Content-Disposition header).
- Parameters:
header
- a header value- Returns:
- a
GHashTable
of list elements, which can be freed withheaderFreeParamList(org.gnome.glib.HashTable<java.lang.String, java.lang.String>)
. - Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
headerParseParamListStrict
public static HashTable<String,String> headerParseParamListStrict(String header) throws UnsupportedPlatformException A strict version ofheaderParseParamList(java.lang.String)
that bails out if there are duplicate parameters.Note that this function will treat RFC5987-encoded parameters as duplicated if an ASCII version is also present. For header fields that might contain RFC5987-encoded parameters, use
headerParseParamList(java.lang.String)
instead.- Parameters:
header
- a header value- Returns:
- a
GHashTable
of list elements, which can be freed withheaderFreeParamList(org.gnome.glib.HashTable<java.lang.String, java.lang.String>)
ornull
if there are duplicate elements. - Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
headerParseQualityList
public static SList<String> headerParseQualityList(String header, @Nullable @Nullable Out<SList<String>> unacceptable) throws UnsupportedPlatformException Parses a header whose content is a list of items with optional "qvalue"s (eg, Accept, Accept-Charset, Accept-Encoding, Accept-Language, TE).If
unacceptable
is notnull
, then on return, it will contain the items with qvalue 0. Either way, those items will be removed from the main list.- Parameters:
header
- a header valueunacceptable
- on return, will contain a list of unacceptable values- Returns:
- a
GSList
of acceptable values (as allocated strings), highest-qvalue first. - Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
headerParseSemiParamList
public static HashTable<String,String> headerParseSemiParamList(String header) throws UnsupportedPlatformException Parses a header which is a semicolon-delimited list of something like:token [ "=" ( token | quoted-string ) ]
.Tokens that don't have an associated value will still be added to the resulting hash table, but with a
null
value.This also handles RFC5987 encoding (which in HTTP is mostly used for giving UTF8-encoded filenames in the Content-Disposition header).
- Parameters:
header
- a header value- Returns:
- a
GHashTable
of list elements, which can be freed withheaderFreeParamList(org.gnome.glib.HashTable<java.lang.String, java.lang.String>)
. - Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
headerParseSemiParamListStrict
public static HashTable<String,String> headerParseSemiParamListStrict(String header) throws UnsupportedPlatformException A strict version ofheaderParseSemiParamList(java.lang.String)
that bails out if there are duplicate parameters.Note that this function will treat RFC5987-encoded parameters as duplicated if an ASCII version is also present. For header fields that might contain RFC5987-encoded parameters, use
headerParseSemiParamList(java.lang.String)
instead.- Parameters:
header
- a header value- Returns:
- a
GHashTable
of list elements, which can be freed withheaderFreeParamList(org.gnome.glib.HashTable<java.lang.String, java.lang.String>)
ornull
if there are duplicate elements. - Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
headersParse
public static boolean headersParse(String str, int len, MessageHeaders dest) throws UnsupportedPlatformException Parses the headers of an HTTP request or response instr
and stores the results indest
.Beware that
dest
may be modified even on failure.This is a low-level method; normally you would use
headersParseRequest(java.lang.String, int, org.gnome.soup.MessageHeaders, io.github.jwharm.javagi.base.Out<java.lang.String>, io.github.jwharm.javagi.base.Out<java.lang.String>, io.github.jwharm.javagi.base.Out<org.gnome.soup.HTTPVersion>)
orheadersParseResponse(java.lang.String, int, org.gnome.soup.MessageHeaders, io.github.jwharm.javagi.base.Out<org.gnome.soup.HTTPVersion>, io.github.jwharm.javagi.base.Out<java.lang.Integer>, io.github.jwharm.javagi.base.Out<java.lang.String>)
.- Parameters:
str
- the header string (including the Request-Line or Status-Line, but not the trailing blank line)len
- length ofstr
dest
-SoupMessageHeaders
to store the header values in- Returns:
- success or failure
- Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
headersParseRequest
public static int headersParseRequest(String str, int len, MessageHeaders reqHeaders, @Nullable @Nullable Out<String> reqMethod, @Nullable @Nullable Out<String> reqPath, @Nullable @Nullable Out<HTTPVersion> ver) throws UnsupportedPlatformException Parses the headers of an HTTP request instr
and stores the results inreqMethod
,reqPath
,ver
, andreqHeaders
.Beware that
reqHeaders
may be modified even on failure.- Parameters:
str
- the headers (up to, but not including, the trailing blank line)len
- length ofstr
reqHeaders
-SoupMessageHeaders
to store the header values inreqMethod
- if non-null
, will be filled in with the request methodreqPath
- if non-null
, will be filled in with the request pathver
- if non-null
, will be filled in with the HTTP version- Returns:
Status.OK
if the headers could be parsed, or an HTTP error to be returned to the client if they could not be.- Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
headersParseResponse
public static boolean headersParseResponse(String str, int len, MessageHeaders headers, @Nullable @Nullable Out<HTTPVersion> ver, @Nullable @Nullable Out<Integer> statusCode, @Nullable @Nullable Out<String> reasonPhrase) throws UnsupportedPlatformException Parses the headers of an HTTP response instr
and stores the results inver
,statusCode
,reasonPhrase
, andheaders
.Beware that
headers
may be modified even on failure.- Parameters:
str
- the headers (up to, but not including, the trailing blank line)len
- length ofstr
headers
-SoupMessageHeaders
to store the header values inver
- if non-null
, will be filled in with the HTTP versionstatusCode
- if non-null
, will be filled in with the status codereasonPhrase
- if non-null
, will be filled in with the reason phrase- Returns:
- success or failure.
- Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
headersParseStatusLine
public static boolean headersParseStatusLine(String statusLine, @Nullable @Nullable Out<HTTPVersion> ver, @Nullable @Nullable Out<Integer> statusCode, @Nullable @Nullable Out<String> reasonPhrase) throws UnsupportedPlatformException Parses the HTTP Status-Line string instatusLine
intover
,statusCode
, andreasonPhrase
.statusLine
must be terminated by either "\\0" or "\\r\\n".- Parameters:
statusLine
- an HTTP Status-Linever
- if non-null
, will be filled in with the HTTP versionstatusCode
- if non-null
, will be filled in with the status codereasonPhrase
- if non-null
, will be filled in with the reason phrase- Returns:
true
ifstatusLine
was parsed successfully.- Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
tldDomainIsPublicSuffix
Looks whether thedomain
passed as argument is a public domain suffix (.org, .com, .co.uk, etc) or not.Prior to libsoup 2.46, this function required that
domain
be in UTF-8 if it was an IDN. From 2.46 on, the name can be in either UTF-8 or ASCII format.- Parameters:
domain
- a domain name- Returns:
true
if it is a public domain,false
otherwise.- Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
tldGetBaseDomain
public static String tldGetBaseDomain(String hostname) throws UnsupportedPlatformException, GErrorException Finds the base domain for a givenhostname
The base domain is composed by the top level domain (such as .org, .com, .co.uk, etc) plus the second level domain, for example for myhost.mydomain.com it will return mydomain.com.
Note that
null
will be returned for private URLs (those not ending with any well known TLD) because choosing a base domain for them would be totally arbitrary.Prior to libsoup 2.46, this function required that
hostname
be in UTF-8 if it was an IDN. From 2.46 on, the name can be in either UTF-8 or ASCII format (and the return value will be in the same format).- Parameters:
hostname
- a hostname- Returns:
- a pointer to the start of the base domain in
hostname
. If an error occurs,null
will be returned anderror
set. - Throws:
GErrorException
- seeGError
UnsupportedPlatformException
- when run on a platform other than linux
-
uriCopy
public static Uri uriCopy(Uri uri, URIComponent firstComponent, Object... varargs) throws UnsupportedPlatformException As of 3.4.0 this will detect the default ports of HTTP(s) and WS(S) URIs when copying and set it to the default port of the new scheme. So for example copyinghttp://localhost:80
while changing the scheme to https will result inhttps://localhost:443
.Return a copy of
uri
with the given components updated.- Parameters:
uri
- theGUri
to copyfirstComponent
- firstSoupURIComponent
to updatevarargs
- value offirstComponent
followed by additional components and values, terminated byURIComponent.NONE
- Returns:
- a new
GUri
- Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
uriDecodeDataUri
public static Bytes uriDecodeDataUri(String uri, @Nullable @Nullable Out<String> contentType) throws UnsupportedPlatformException Decodes the given data URI and returns its contents andcontentType
.- Parameters:
uri
- a data URI, in string formcontentType
- location to store content type- Returns:
- a
GBytes
with the contents ofuri
, ornull
ifuri
is not a valid data URI - Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
uriEqual
Tests whether or noturi1
anduri2
are equal in all parts.- Parameters:
uri1
- aGUri
uri2
- anotherGUri
- Returns:
true
if equal otherwisefalse
- Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
websocketClientPrepareHandshake
public static void websocketClientPrepareHandshake(Message msg, @Nullable @Nullable String origin, @Nullable @Nullable String[] protocols, @Nullable @Nullable TypeClass[] supportedExtensions) throws UnsupportedPlatformException Adds the necessary headers tomsg
to request a WebSocket handshake including supported WebSocket extensions.The message body and non-WebSocket-related headers are not modified.
This is a low-level function; if you use
Session.websocketConnectAsync(org.gnome.soup.Message, java.lang.String, java.lang.String[], int, org.gnome.gio.Cancellable, org.gnome.gio.AsyncReadyCallback)
to create a WebSocket connection, it will call this for you.- Parameters:
msg
- aSoupMessage
origin
- the "Origin" header to setprotocols
- list of protocols to offersupportedExtensions
- list of supported extension types- Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-
websocketClientVerifyHandshake
public static boolean websocketClientVerifyHandshake(Message msg, @Nullable @Nullable TypeClass[] supportedExtensions, @Nullable @Nullable Out<List<WebsocketExtension>> acceptedExtensions) throws UnsupportedPlatformException, GErrorException Looks at the response status code and headers inmsg
and determines if they contain a valid WebSocket handshake response (given the handshake request inmsg
's request headers).If
supportedExtensions
is non-null
, extensions included in the response "Sec-WebSocket-Extensions" are verified too. Accepted extensions are returned inacceptedExtensions
parameter if non-null
.This is a low-level function; if you use
Session.websocketConnectAsync(org.gnome.soup.Message, java.lang.String, java.lang.String[], int, org.gnome.gio.Cancellable, org.gnome.gio.AsyncReadyCallback)
to create a WebSocket connection, it will call this for you.- Parameters:
msg
-SoupMessage
containing both client and server sides of a WebSocket handshakesupportedExtensions
- list of supported extension typesacceptedExtensions
- aGList
ofSoupWebsocketExtension
objects- Returns:
true
ifmsg
contains a completed valid WebSocket handshake,false
and an error if not.- Throws:
GErrorException
- seeGError
UnsupportedPlatformException
- when run on a platform other than linux
-
websocketServerCheckHandshake
public static boolean websocketServerCheckHandshake(ServerMessage msg, @Nullable @Nullable String origin, @Nullable @Nullable String[] protocols, @Nullable @Nullable TypeClass[] supportedExtensions) throws UnsupportedPlatformException, GErrorException Examines the method and request headers inmsg
and determines whethermsg
contains a valid handshake request.If
origin
is non-null
, then only requests containing a matching "Origin" header will be accepted. Ifprotocols
is non-null
, then only requests containing a compatible "Sec-WebSocket-Protocols" header will be accepted. IfsupportedExtensions
is non-null
, then only requests containing valid supported extensions in "Sec-WebSocket-Extensions" header will be accepted.Normally
websocketServerProcessHandshake(org.gnome.soup.ServerMessage, java.lang.String, java.lang.String[], org.gnome.gobject.TypeClass[], io.github.jwharm.javagi.base.Out<org.gnome.glib.List<org.gnome.soup.WebsocketExtension>>)
will take care of this for you, and if you useServer.addWebsocketHandler(java.lang.String, java.lang.String, java.lang.String[], org.gnome.soup.ServerWebsocketCallback)
to handle accepting WebSocket connections, it will call that for you. However, this function may be useful if you need to perform more complicated validation; eg, accepting multiple different Origins, or handling different protocols depending on the path.- Parameters:
msg
-SoupServerMessage
containing the client side of a WebSocket handshakeorigin
- expected Origin headerprotocols
- allowed WebSocket protocols.supportedExtensions
- list of supported extension types- Returns:
true
ifmsg
contained a valid WebSocket handshake,false
and an error if not.- Throws:
GErrorException
- seeGError
UnsupportedPlatformException
- when run on a platform other than linux
-
websocketServerProcessHandshake
public static boolean websocketServerProcessHandshake(ServerMessage msg, @Nullable @Nullable String expectedOrigin, @Nullable @Nullable String[] protocols, @Nullable @Nullable TypeClass[] supportedExtensions, @Nullable @Nullable Out<List<WebsocketExtension>> acceptedExtensions) throws UnsupportedPlatformException Examines the method and request headers inmsg
and (assumingmsg
contains a valid handshake request), fills in the handshake response.If
expectedOrigin
is non-null
, then only requests containing a matching "Origin" header will be accepted. Ifprotocols
is non-null
, then only requests containing a compatible "Sec-WebSocket-Protocols" header will be accepted. IfsupportedExtensions
is non-null
, then only requests containing valid supported extensions in "Sec-WebSocket-Extensions" header will be accepted. The accepted extensions will be returned inacceptedExtensions
parameter if non-null
.This is a low-level function; if you use
Server.addWebsocketHandler(java.lang.String, java.lang.String, java.lang.String[], org.gnome.soup.ServerWebsocketCallback)
to handle accepting WebSocket connections, it will call this for you.- Parameters:
msg
-SoupServerMessage
containing the client side of a WebSocket handshakeexpectedOrigin
- expected Origin headerprotocols
- allowed WebSocket protocols.supportedExtensions
- list of supported extension typesacceptedExtensions
- aGList
ofSoupWebsocketExtension
objects- Returns:
true
ifmsg
contained a valid WebSocket handshake request and was updated to contain a handshake response.false
if not.- Throws:
UnsupportedPlatformException
- when run on a platform other than linux
-