Compare commits
No commits in common. "94d6fe4925bfbc2cb8262a92ec9e8c92033a1f9f" and "93418f0127e6b140b5d1d57e4ce050fc65888e36" have entirely different histories.
94d6fe4925
...
93418f0127
2
.gitlint
2
.gitlint
@ -7,7 +7,7 @@ line-length=72
|
|||||||
[title-trailing-punctuation]
|
[title-trailing-punctuation]
|
||||||
[title-hard-tab]
|
[title-hard-tab]
|
||||||
[title-match-regex]
|
[title-match-regex]
|
||||||
regex=^((feat|fix|chore|refactor|docs|release|test)\((meta|tests|style|docs|xep|core|example|all|flake)+(,(meta|tests|style|docs|xep|core|example|all|flake))*\)|release): [A-Z0-9].*$
|
regex=^((feat|fix|chore|refactor|docs|release|test)\((meta|tests|style|docs|xep|core|example|all)+(,(meta|tests|style|docs|xep|core|example|all))*\)|release): [A-Z0-9].*$
|
||||||
|
|
||||||
|
|
||||||
[body-trailing-whitespace]
|
[body-trailing-whitespace]
|
||||||
|
122
flake.lock
122
flake.lock
@ -1,72 +1,12 @@
|
|||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"android-nixpkgs": {
|
|
||||||
"inputs": {
|
|
||||||
"devshell": "devshell",
|
|
||||||
"flake-utils": "flake-utils",
|
|
||||||
"nixpkgs": "nixpkgs"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1689798050,
|
|
||||||
"narHash": "sha256-ZyFPra7N0MF803o55dYQQyX9b/BmXr6QTCyN7slRThY=",
|
|
||||||
"owner": "tadfisher",
|
|
||||||
"repo": "android-nixpkgs",
|
|
||||||
"rev": "9aa0e2990da86de8ca203af313668851dcb9ea6e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "tadfisher",
|
|
||||||
"repo": "android-nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"devshell": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"android-nixpkgs",
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"systems": "systems"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1688380630,
|
|
||||||
"narHash": "sha256-8ilApWVb1mAi4439zS3iFeIT0ODlbrifm/fegWwgHjA=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "devshell",
|
|
||||||
"rev": "f9238ec3d75cefbb2b42a44948c4e8fb1ae9a205",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "devshell",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-utils": {
|
"flake-utils": {
|
||||||
"inputs": {
|
|
||||||
"systems": "systems_2"
|
|
||||||
},
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1689068808,
|
"lastModified": 1678901627,
|
||||||
"narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=",
|
"narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4",
|
"rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6",
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-utils_2": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1667395993,
|
|
||||||
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -77,27 +17,27 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1689679375,
|
"lastModified": 1676076353,
|
||||||
"narHash": "sha256-LHUC52WvyVDi9PwyL1QCpaxYWBqp4ir4iL6zgOkmcb8=",
|
"narHash": "sha256-mdUtE8Tp40cZETwcq5tCwwLqkJVV1ULJQ5GKRtbshag=",
|
||||||
"owner": "NixOS",
|
"owner": "AtaraxiaSjel",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "684c17c429c42515bafb3ad775d2a710947f3d67",
|
"rev": "5deb99bdccbbb97e7562dee4ba8a3ee3021688e6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "AtaraxiaSjel",
|
||||||
"ref": "nixos-unstable",
|
"ref": "update/flutter",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1689752456,
|
"lastModified": 1680273054,
|
||||||
"narHash": "sha256-VOChdECcEI8ixz8QY+YC4JaNEFwQd1V8bA0G4B28Ki0=",
|
"narHash": "sha256-Bs6/5LpvYp379qVqGt9mXxxx9GSE789k3oFc+OAL07M=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "7f256d7da238cb627ef189d56ed590739f42f13b",
|
"rev": "3364b5b117f65fe1ce65a3cdd5612a078a3b31e3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -109,39 +49,9 @@
|
|||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"android-nixpkgs": "android-nixpkgs",
|
"flake-utils": "flake-utils",
|
||||||
"flake-utils": "flake-utils_2",
|
"nixpkgs": "nixpkgs",
|
||||||
"nixpkgs": "nixpkgs_2"
|
"nixpkgs-unstable": "nixpkgs-unstable"
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems_2": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
53
flake.nix
53
flake.nix
@ -1,35 +1,38 @@
|
|||||||
{
|
{
|
||||||
description = "moxxmpp";
|
description = "moxxmpp";
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
nixpkgs.url = "github:AtaraxiaSjel/nixpkgs/update/flutter";
|
||||||
android-nixpkgs.url = "github:tadfisher/android-nixpkgs";
|
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||||
flake-utils.url = "github:numtide/flake-utils";
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { self, nixpkgs, android-nixpkgs, flake-utils }: flake-utils.lib.eachDefaultSystem (system: let
|
outputs = { self, nixpkgs, nixpkgs-unstable, flake-utils }: flake-utils.lib.eachDefaultSystem (system: let
|
||||||
pkgs = import nixpkgs {
|
pkgs = import nixpkgs {
|
||||||
inherit system;
|
inherit system;
|
||||||
config = {
|
config = {
|
||||||
android_sdk.accept_license = true;
|
android_sdk.accept_license = true;
|
||||||
allowUnfree = true;
|
allowUnfree = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
# Everything to make Flutter happy
|
unstable = import nixpkgs-unstable {
|
||||||
sdk = android-nixpkgs.sdk.${system} (sdkPkgs: with sdkPkgs; [
|
inherit system;
|
||||||
cmdline-tools-latest
|
};
|
||||||
build-tools-30-0-3
|
android = pkgs.androidenv.composeAndroidPackages {
|
||||||
build-tools-33-0-2
|
# TODO: Find a way to pin these
|
||||||
build-tools-34-0-0
|
#toolsVersion = "26.1.1";
|
||||||
platform-tools
|
#platformToolsVersion = "31.0.3";
|
||||||
emulator
|
#buildToolsVersions = [ "31.0.0" ];
|
||||||
patcher-v4
|
#includeEmulator = true;
|
||||||
platforms-android-28
|
#emulatorVersion = "30.6.3";
|
||||||
platforms-android-29
|
platformVersions = [ "28" ];
|
||||||
platforms-android-30
|
includeSources = false;
|
||||||
platforms-android-31
|
includeSystemImages = true;
|
||||||
platforms-android-33
|
systemImageTypes = [ "default" ];
|
||||||
]);
|
abiVersions = [ "x86_64" ];
|
||||||
lib = pkgs.lib;
|
includeNDK = false;
|
||||||
|
useGoogleAPIs = false;
|
||||||
|
useGoogleTVAddOns = false;
|
||||||
|
};
|
||||||
pinnedJDK = pkgs.jdk17;
|
pinnedJDK = pkgs.jdk17;
|
||||||
|
|
||||||
pythonEnv = pkgs.python3.withPackages (ps: with ps; [
|
pythonEnv = pkgs.python3.withPackages (ps: with ps; [
|
||||||
@ -48,7 +51,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
devShell = let
|
devShell = let
|
||||||
prosody-newer-community-modules = pkgs.prosody.overrideAttrs (old: {
|
prosody-newer-community-modules = unstable.prosody.overrideAttrs (old: {
|
||||||
communityModules = pkgs.fetchhg {
|
communityModules = pkgs.fetchhg {
|
||||||
url = "https://hg.prosody.im/prosody-modules";
|
url = "https://hg.prosody.im/prosody-modules";
|
||||||
rev = "e3a3a6c86a9f";
|
rev = "e3a3a6c86a9f";
|
||||||
@ -68,7 +71,7 @@
|
|||||||
};
|
};
|
||||||
in pkgs.mkShell {
|
in pkgs.mkShell {
|
||||||
buildInputs = with pkgs; [
|
buildInputs = with pkgs; [
|
||||||
flutter37 pinnedJDK sdk dart # Dart
|
flutter pinnedJDK android.platform-tools dart # Dart
|
||||||
gitlint # Code hygiene
|
gitlint # Code hygiene
|
||||||
ripgrep # General utilities
|
ripgrep # General utilities
|
||||||
|
|
||||||
@ -100,13 +103,7 @@
|
|||||||
CPATH = "${pkgs.xorg.libX11.dev}/include:${pkgs.xorg.xorgproto}/include";
|
CPATH = "${pkgs.xorg.libX11.dev}/include:${pkgs.xorg.xorgproto}/include";
|
||||||
LD_LIBRARY_PATH = with pkgs; lib.makeLibraryPath [ atk cairo epoxy gdk-pixbuf glib gtk3 harfbuzz pango ];
|
LD_LIBRARY_PATH = with pkgs; lib.makeLibraryPath [ atk cairo epoxy gdk-pixbuf glib gtk3 harfbuzz pango ];
|
||||||
|
|
||||||
ANDROID_SDK_ROOT = "${sdk}/share/android-sdk";
|
|
||||||
ANDROID_HOME = "${sdk}/share/android-sdk";
|
|
||||||
JAVA_HOME = pinnedJDK;
|
JAVA_HOME = pinnedJDK;
|
||||||
|
|
||||||
# Fix an issue with Flutter using an older version of aapt2, which does not know
|
|
||||||
# an used parameter.
|
|
||||||
GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${sdk}/share/android-sdk/build-tools/34.0.0/aapt2";
|
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
- **BREAKING**: `ChatState.toString()` is now `ChatState.toName()`
|
- **BREAKING**: `ChatState.toString()` is now `ChatState.toName()`
|
||||||
- **BREAKING**: Overriding `BaseOmemoManager` is no longer required. `OmemoManager` now takes callback methods instead.
|
- **BREAKING**: Overriding `BaseOmemoManager` is no longer required. `OmemoManager` now takes callback methods instead.
|
||||||
- Removed `ErrorResponseDiscoError` from the possible XEP-0030 errors.
|
- Removed `ErrorResponseDiscoError` from the possible XEP-0030 errors.
|
||||||
- **BREAKING**: Removed "Extensible File Thumbnails" (The `Thumbnail` type)
|
|
||||||
|
|
||||||
## 0.3.1
|
## 0.3.1
|
||||||
|
|
||||||
|
@ -39,6 +39,7 @@ export 'package:moxxmpp/src/socket.dart';
|
|||||||
export 'package:moxxmpp/src/stanza.dart';
|
export 'package:moxxmpp/src/stanza.dart';
|
||||||
export 'package:moxxmpp/src/stringxml.dart';
|
export 'package:moxxmpp/src/stringxml.dart';
|
||||||
export 'package:moxxmpp/src/util/typed_map.dart';
|
export 'package:moxxmpp/src/util/typed_map.dart';
|
||||||
|
export 'package:moxxmpp/src/xeps/staging/extensible_file_thumbnails.dart';
|
||||||
export 'package:moxxmpp/src/xeps/staging/fast.dart';
|
export 'package:moxxmpp/src/xeps/staging/fast.dart';
|
||||||
export 'package:moxxmpp/src/xeps/staging/file_upload_notification.dart';
|
export 'package:moxxmpp/src/xeps/staging/file_upload_notification.dart';
|
||||||
export 'package:moxxmpp/src/xeps/xep_0004.dart';
|
export 'package:moxxmpp/src/xeps/xep_0004.dart';
|
||||||
|
@ -312,7 +312,7 @@ class XmppConnection {
|
|||||||
|
|
||||||
/// Called when a stream ending error has occurred
|
/// Called when a stream ending error has occurred
|
||||||
Future<void> handleError(XmppError error) async {
|
Future<void> handleError(XmppError error) async {
|
||||||
_log.severe('handleError called with $error');
|
_log.severe('handleError called with ${error.toString()}');
|
||||||
|
|
||||||
// Whenever we encounter an error that would trigger a reconnection attempt while
|
// Whenever we encounter an error that would trigger a reconnection attempt while
|
||||||
// the connection result is being awaited, don't attempt a reconnection but instead
|
// the connection result is being awaited, don't attempt a reconnection but instead
|
||||||
|
@ -55,6 +55,8 @@ class JID {
|
|||||||
|
|
||||||
/// Converts the JID into a bare JID.
|
/// Converts the JID into a bare JID.
|
||||||
JID toBare() {
|
JID toBare() {
|
||||||
|
if (isBare()) return this;
|
||||||
|
|
||||||
return JID(local, domain, '');
|
return JID(local, domain, '');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,9 +69,6 @@ const delayedDeliveryXmlns = 'urn:xmpp:delay';
|
|||||||
// XEP-0234
|
// XEP-0234
|
||||||
const jingleFileTransferXmlns = 'urn:xmpp:jingle:apps:file-transfer:5';
|
const jingleFileTransferXmlns = 'urn:xmpp:jingle:apps:file-transfer:5';
|
||||||
|
|
||||||
// XEP-0264
|
|
||||||
const jingleContentThumbnailXmlns = 'urn:xmpp:thumbs:1';
|
|
||||||
|
|
||||||
// XEP-0280
|
// XEP-0280
|
||||||
const carbonsXmlns = 'urn:xmpp:carbons:2';
|
const carbonsXmlns = 'urn:xmpp:carbons:2';
|
||||||
|
|
||||||
|
@ -0,0 +1,57 @@
|
|||||||
|
import 'package:moxxmpp/src/stringxml.dart';
|
||||||
|
|
||||||
|
/// NOTE: Specified by https://codeberg.org/moxxy/custom-xeps/src/branch/master/xep-xxxx-extensible-file-thumbnails.md
|
||||||
|
|
||||||
|
const fileThumbnailsXmlns = 'proto:urn:xmpp:eft:0';
|
||||||
|
const blurhashThumbnailType = '$fileThumbnailsXmlns:blurhash';
|
||||||
|
|
||||||
|
abstract class Thumbnail {}
|
||||||
|
|
||||||
|
class BlurhashThumbnail extends Thumbnail {
|
||||||
|
BlurhashThumbnail(this.hash);
|
||||||
|
final String hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
Thumbnail? parseFileThumbnailElement(XMLNode node) {
|
||||||
|
assert(
|
||||||
|
node.attributes['xmlns'] == fileThumbnailsXmlns,
|
||||||
|
'Invalid element xmlns',
|
||||||
|
);
|
||||||
|
assert(node.tag == 'file-thumbnail', 'Invalid element name');
|
||||||
|
|
||||||
|
switch (node.attributes['type']!) {
|
||||||
|
case blurhashThumbnailType:
|
||||||
|
{
|
||||||
|
final hash = node.firstTag('blurhash')!.innerText();
|
||||||
|
return BlurhashThumbnail(hash);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
XMLNode? _fromThumbnail(Thumbnail thumbnail) {
|
||||||
|
if (thumbnail is BlurhashThumbnail) {
|
||||||
|
return XMLNode(
|
||||||
|
tag: 'blurhash',
|
||||||
|
text: thumbnail.hash,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
XMLNode constructFileThumbnailElement(Thumbnail thumbnail) {
|
||||||
|
final node = _fromThumbnail(thumbnail)!;
|
||||||
|
var type = '';
|
||||||
|
if (thumbnail is BlurhashThumbnail) {
|
||||||
|
type = blurhashThumbnailType;
|
||||||
|
}
|
||||||
|
|
||||||
|
return XMLNode.xmlns(
|
||||||
|
tag: 'file-thumbnail',
|
||||||
|
xmlns: fileThumbnailsXmlns,
|
||||||
|
attributes: {'type': type},
|
||||||
|
children: [node],
|
||||||
|
);
|
||||||
|
}
|
@ -5,6 +5,7 @@ import 'package:moxxmpp/src/managers/namespaces.dart';
|
|||||||
import 'package:moxxmpp/src/namespaces.dart';
|
import 'package:moxxmpp/src/namespaces.dart';
|
||||||
import 'package:moxxmpp/src/stanza.dart';
|
import 'package:moxxmpp/src/stanza.dart';
|
||||||
import 'package:moxxmpp/src/stringxml.dart';
|
import 'package:moxxmpp/src/stringxml.dart';
|
||||||
|
import 'package:moxxmpp/src/xeps/xep_0030/errors.dart';
|
||||||
import 'package:moxxmpp/src/xeps/xep_0030/types.dart';
|
import 'package:moxxmpp/src/xeps/xep_0030/types.dart';
|
||||||
import 'package:moxxmpp/src/xeps/xep_0030/xep_0030.dart';
|
import 'package:moxxmpp/src/xeps/xep_0030/xep_0030.dart';
|
||||||
import 'package:moxxmpp/src/xeps/xep_0045/errors.dart';
|
import 'package:moxxmpp/src/xeps/xep_0045/errors.dart';
|
||||||
|
@ -15,6 +15,7 @@ import 'package:moxxmpp/src/stringxml.dart';
|
|||||||
import 'package:moxxmpp/src/util/list.dart';
|
import 'package:moxxmpp/src/util/list.dart';
|
||||||
import 'package:moxxmpp/src/xeps/xep_0004.dart';
|
import 'package:moxxmpp/src/xeps/xep_0004.dart';
|
||||||
import 'package:moxxmpp/src/xeps/xep_0030/cache.dart';
|
import 'package:moxxmpp/src/xeps/xep_0030/cache.dart';
|
||||||
|
import 'package:moxxmpp/src/xeps/xep_0030/errors.dart';
|
||||||
import 'package:moxxmpp/src/xeps/xep_0030/types.dart';
|
import 'package:moxxmpp/src/xeps/xep_0030/types.dart';
|
||||||
import 'package:moxxmpp/src/xeps/xep_0030/xep_0030.dart';
|
import 'package:moxxmpp/src/xeps/xep_0030/xep_0030.dart';
|
||||||
import 'package:moxxmpp/src/xeps/xep_0300.dart';
|
import 'package:moxxmpp/src/xeps/xep_0300.dart';
|
||||||
|
@ -1,59 +0,0 @@
|
|||||||
import 'package:moxxmpp/src/namespaces.dart';
|
|
||||||
import 'package:moxxmpp/src/stringxml.dart';
|
|
||||||
|
|
||||||
extension _StringToInt on String {
|
|
||||||
int toInt() => int.parse(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
class JingleContentThumbnail {
|
|
||||||
const JingleContentThumbnail(
|
|
||||||
this.uri,
|
|
||||||
this.mediaType,
|
|
||||||
this.width,
|
|
||||||
this.height,
|
|
||||||
);
|
|
||||||
|
|
||||||
factory JingleContentThumbnail.fromXML(XMLNode thumbnail) {
|
|
||||||
assert(
|
|
||||||
thumbnail.tag == 'thumbnail',
|
|
||||||
'thumbnail must be Jingle Content Thumbnail',
|
|
||||||
);
|
|
||||||
assert(
|
|
||||||
thumbnail.attributes['xmlns'] == jingleContentThumbnailXmlns,
|
|
||||||
'thumbnail must be Jingle Content Thumbnail',
|
|
||||||
);
|
|
||||||
|
|
||||||
return JingleContentThumbnail(
|
|
||||||
Uri.parse(thumbnail.attributes['uri']! as String),
|
|
||||||
thumbnail.attributes['media-type'] as String?,
|
|
||||||
(thumbnail.attributes['width'] as String?)?.toInt(),
|
|
||||||
(thumbnail.attributes['height'] as String?)?.toInt(),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// The URI of the thumbnail data.
|
|
||||||
final Uri uri;
|
|
||||||
|
|
||||||
/// The MIME type of the thumbnail
|
|
||||||
final String? mediaType;
|
|
||||||
|
|
||||||
/// The width of the thumbnail.
|
|
||||||
final int? width;
|
|
||||||
|
|
||||||
/// The height of the thumbnail.
|
|
||||||
final int? height;
|
|
||||||
|
|
||||||
/// Convert the thumbnail to its XML representation.
|
|
||||||
XMLNode toXML() {
|
|
||||||
return XMLNode.xmlns(
|
|
||||||
tag: 'thumbnail',
|
|
||||||
xmlns: jingleContentThumbnailXmlns,
|
|
||||||
attributes: {
|
|
||||||
'uri': uri.toString(),
|
|
||||||
if (mediaType != null) 'media-type': mediaType!,
|
|
||||||
if (width != null) 'width': width.toString(),
|
|
||||||
if (height != null) 'height': height.toString(),
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
@ -5,7 +5,7 @@ import 'package:moxxmpp/src/managers/namespaces.dart';
|
|||||||
import 'package:moxxmpp/src/namespaces.dart';
|
import 'package:moxxmpp/src/namespaces.dart';
|
||||||
import 'package:moxxmpp/src/stanza.dart';
|
import 'package:moxxmpp/src/stanza.dart';
|
||||||
import 'package:moxxmpp/src/stringxml.dart';
|
import 'package:moxxmpp/src/stringxml.dart';
|
||||||
import 'package:moxxmpp/src/xeps/xep_0264.dart';
|
import 'package:moxxmpp/src/xeps/staging/extensible_file_thumbnails.dart';
|
||||||
|
|
||||||
class StatelessMediaSharingData implements StanzaHandlerExtension {
|
class StatelessMediaSharingData implements StanzaHandlerExtension {
|
||||||
const StatelessMediaSharingData({
|
const StatelessMediaSharingData({
|
||||||
@ -20,7 +20,7 @@ class StatelessMediaSharingData implements StanzaHandlerExtension {
|
|||||||
final int size;
|
final int size;
|
||||||
final String description;
|
final String description;
|
||||||
final Map<String, String> hashes; // algo -> hash value
|
final Map<String, String> hashes; // algo -> hash value
|
||||||
final List<JingleContentThumbnail> thumbnails;
|
final List<Thumbnail> thumbnails;
|
||||||
|
|
||||||
final String url;
|
final String url;
|
||||||
}
|
}
|
||||||
@ -48,11 +48,16 @@ StatelessMediaSharingData parseSIMSElement(XMLNode node) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Thumbnails
|
final thumbnails = List<Thumbnail>.empty(growable: true);
|
||||||
final thumbnails = List<JingleContentThumbnail>.empty(growable: true);
|
for (final child in file.children) {
|
||||||
for (final i
|
// TODO(Unknown): Handle other thumbnails
|
||||||
in file.findTags('thumbnail', xmlns: jingleContentThumbnailXmlns)) {
|
if (child.tag == 'file-thumbnail' &&
|
||||||
thumbnails.add(JingleContentThumbnail.fromXML(i));
|
child.attributes['xmlns'] == fileThumbnailsXmlns) {
|
||||||
|
final thumb = parseFileThumbnailElement(child);
|
||||||
|
if (thumb != null) {
|
||||||
|
thumbnails.add(thumb);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return StatelessMediaSharingData(
|
return StatelessMediaSharingData(
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import 'package:moxxmpp/src/namespaces.dart';
|
import 'package:moxxmpp/src/namespaces.dart';
|
||||||
import 'package:moxxmpp/src/stringxml.dart';
|
import 'package:moxxmpp/src/stringxml.dart';
|
||||||
import 'package:moxxmpp/src/xeps/xep_0264.dart';
|
import 'package:moxxmpp/src/xeps/staging/extensible_file_thumbnails.dart';
|
||||||
import 'package:moxxmpp/src/xeps/xep_0300.dart';
|
import 'package:moxxmpp/src/xeps/xep_0300.dart';
|
||||||
|
|
||||||
class FileMetadataData {
|
class FileMetadataData {
|
||||||
@ -39,10 +39,12 @@ class FileMetadataData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Thumbnails
|
// Thumbnails
|
||||||
final thumbnails = List<JingleContentThumbnail>.empty(growable: true);
|
final thumbnails = List<Thumbnail>.empty(growable: true);
|
||||||
for (final i
|
for (final i in node.findTags('file-thumbnail')) {
|
||||||
in node.findTags('thumbnail', xmlns: jingleContentThumbnailXmlns)) {
|
final thumbnail = parseFileThumbnailElement(i);
|
||||||
thumbnails.add(JingleContentThumbnail.fromXML(i));
|
if (thumbnail != null) {
|
||||||
|
thumbnails.add(thumbnail);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Length and height
|
// Length and height
|
||||||
@ -73,7 +75,7 @@ class FileMetadataData {
|
|||||||
final String? mediaType;
|
final String? mediaType;
|
||||||
final int? width;
|
final int? width;
|
||||||
final int? height;
|
final int? height;
|
||||||
final List<JingleContentThumbnail> thumbnails;
|
final List<Thumbnail> thumbnails;
|
||||||
final String? desc;
|
final String? desc;
|
||||||
final Map<HashFunction, String> hashes;
|
final Map<HashFunction, String> hashes;
|
||||||
final int? length;
|
final int? length;
|
||||||
@ -117,7 +119,7 @@ class FileMetadataData {
|
|||||||
|
|
||||||
for (final thumbnail in thumbnails) {
|
for (final thumbnail in thumbnails) {
|
||||||
node.addChild(
|
node.addChild(
|
||||||
thumbnail.toXML(),
|
constructFileThumbnailElement(thumbnail),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,267 +1,275 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://usefulinc.com/ns/doap#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:xmpp="https://linkmauve.fr/ns/xmpp-doap#">
|
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
|
||||||
<Project xml:lang="en">
|
xmlns='http://usefulinc.com/ns/doap#'
|
||||||
|
xmlns:foaf='http://xmlns.com/foaf/0.1/'
|
||||||
|
xmlns:xmpp='https://linkmauve.fr/ns/xmpp-doap#'>
|
||||||
|
<Project xml:lang='en'>
|
||||||
<name>moxxmpp</name>
|
<name>moxxmpp</name>
|
||||||
<created>2021-12-26</created>
|
<created>2021-12-26</created>
|
||||||
<homepage rdf:resource="https://codeberg.org/moxxy/moxxmpp"/>
|
<homepage rdf:resource='https://codeberg.org/moxxy/moxxmpp'/>
|
||||||
<os>Linux</os>
|
<os>Linux</os>
|
||||||
<os>Windows</os>
|
<os>Windows</os>
|
||||||
<os>macOS</os>
|
<os>macOS</os>
|
||||||
<os>Android</os>
|
<os>Android</os>
|
||||||
<os>iOS</os>
|
<os>iOS</os>
|
||||||
|
|
||||||
<programming-language>Dart</programming-language>
|
<programming-language>Dart</programming-language>
|
||||||
|
|
||||||
<maintainer>
|
<maintainer>
|
||||||
<foaf:Person>
|
<foaf:Person>
|
||||||
<foaf:name>Alexander "Polynomdivision"</foaf:name>
|
<foaf:name>Alexander "Polynomdivision"</foaf:name>
|
||||||
<foaf:homepage rdf:resource="https://blog.polynom.me"/>
|
<foaf:homepage rdf:resource="https://blog.polynom.me" />
|
||||||
</foaf:Person>
|
</foaf:Person>
|
||||||
</maintainer>
|
</maintainer>
|
||||||
<implements rdf:resource="https://xmpp.org/rfcs/rfc6120.html"/>
|
|
||||||
|
<implements rdf:resource="https://xmpp.org/rfcs/rfc6120.html" />
|
||||||
|
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0004.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0004.html" />
|
||||||
<xmpp:status>complete</xmpp:status>
|
<xmpp:status>complete</xmpp:status>
|
||||||
<xmpp:version>2.13.0</xmpp:version>
|
<xmpp:version>2.13.0</xmpp:version>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0030.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0030.html" />
|
||||||
<xmpp:status>complete</xmpp:status>
|
<xmpp:status>complete</xmpp:status>
|
||||||
<xmpp:version>2.5rc3</xmpp:version>
|
<xmpp:version>2.5rc3</xmpp:version>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0054.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0054.html" />
|
||||||
<xmpp:status>partial</xmpp:status>
|
<xmpp:status>partial</xmpp:status>
|
||||||
<xmpp:version>1.2</xmpp:version>
|
<xmpp:version>1.2</xmpp:version>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0060.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0060.html" />
|
||||||
<xmpp:status>partial</xmpp:status>
|
<xmpp:status>partial</xmpp:status>
|
||||||
<xmpp:version>1.24.1</xmpp:version>
|
<xmpp:version>1.24.1</xmpp:version>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0066.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0066.html" />
|
||||||
<xmpp:status>partial</xmpp:status>
|
<xmpp:status>partial</xmpp:status>
|
||||||
<xmpp:note xml:lang="en">Only jabber:x:oob</xmpp:note>
|
<xmpp:note xml:lang="en">Only jabber:x:oob</xmpp:note>
|
||||||
<xmpp:version>1.5</xmpp:version>
|
<xmpp:version>1.5</xmpp:version>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0084.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0084.html" />
|
||||||
<xmpp:status>partial</xmpp:status>
|
<xmpp:status>partial</xmpp:status>
|
||||||
<xmpp:note xml:lang="en">Receiving data</xmpp:note>
|
<xmpp:note xml:lang="en">Receiving data</xmpp:note>
|
||||||
<xmpp:version>1.1.4</xmpp:version>
|
<xmpp:version>1.1.4</xmpp:version>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0085.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0085.html" />
|
||||||
<xmpp:status>complete</xmpp:status>
|
<xmpp:status>complete</xmpp:status>
|
||||||
<xmpp:version>2.1</xmpp:version>
|
<xmpp:version>2.1</xmpp:version>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0115.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0115.html" />
|
||||||
<xmpp:status>partial</xmpp:status>
|
<xmpp:status>partial</xmpp:status>
|
||||||
<xmpp:version>1.5.2</xmpp:version>
|
<xmpp:version>1.5.2</xmpp:version>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0153.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0153.html" />
|
||||||
<xmpp:status>partial</xmpp:status>
|
<xmpp:status>partial</xmpp:status>
|
||||||
<xmpp:version>1.1</xmpp:version>
|
<xmpp:version>1.1</xmpp:version>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0184.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0184.html" />
|
||||||
<xmpp:status>complete</xmpp:status>
|
<xmpp:status>complete</xmpp:status>
|
||||||
<xmpp:version>1.4.0</xmpp:version>
|
<xmpp:version>1.4.0</xmpp:version>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0191.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0191.html" />
|
||||||
<xmpp:status>complete</xmpp:status>
|
<xmpp:status>complete</xmpp:status>
|
||||||
<xmpp:version>1.3.0</xmpp:version>
|
<xmpp:version>1.3.0</xmpp:version>
|
||||||
<xmpp:note xml:lang="en">Not plugged into the UI</xmpp:note>
|
<xmpp:note xml:lang="en">Not plugged into the UI</xmpp:note>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0198.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0198.html" />
|
||||||
<xmpp:status>complete</xmpp:status>
|
<xmpp:status>complete</xmpp:status>
|
||||||
<xmpp:version>1.6</xmpp:version>
|
<xmpp:version>1.6</xmpp:version>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0264.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0280.html" />
|
||||||
<xmpp:status>complete</xmpp:status>
|
<xmpp:status>complete</xmpp:status>
|
||||||
<xmpp:version>0.4.1</xmpp:version>
|
<xmpp:version>1.0.1</xmpp:version>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0280.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0297.html" />
|
||||||
<xmpp:status>complete</xmpp:status>
|
<xmpp:status>partial</xmpp:status>
|
||||||
<xmpp:version>1.0.1</xmpp:version>
|
<xmpp:note xml:lang="en">Exists only as part of support for XEP-0280</xmpp:note>
|
||||||
|
<xmpp:version>1.0</xmpp:version>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0297.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0300.html" />
|
||||||
<xmpp:status>partial</xmpp:status>
|
<xmpp:status>partial</xmpp:status>
|
||||||
<xmpp:note xml:lang="en">Exists only as part of support for XEP-0280</xmpp:note>
|
<xmpp:note xml:lang="en">Supports only Sha256, Sha512 and blake2b512</xmpp:note>
|
||||||
<xmpp:version>1.0</xmpp:version>
|
<xmpp:version>1.0.0</xmpp:version>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0300.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0308.html" />
|
||||||
<xmpp:status>partial</xmpp:status>
|
<xmpp:status>complete</xmpp:status>
|
||||||
<xmpp:note xml:lang="en">Supports only Sha256, Sha512 and blake2b512</xmpp:note>
|
<xmpp:version>1.2.1</xmpp:version>
|
||||||
<xmpp:version>1.0.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0308.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0333.html" />
|
||||||
<xmpp:status>complete</xmpp:status>
|
<xmpp:status>partial</xmpp:status>
|
||||||
<xmpp:version>1.2.1</xmpp:version>
|
<xmpp:note xml:lang="en">Read-only support</xmpp:note>
|
||||||
|
<xmpp:version>0.4</xmpp:version>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0333.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0334.html" />
|
||||||
<xmpp:status>partial</xmpp:status>
|
<xmpp:status>complete</xmpp:status>
|
||||||
<xmpp:note xml:lang="en">Read-only support</xmpp:note>
|
<xmpp:note xml:lang="en">Write-only support</xmpp:note>
|
||||||
<xmpp:version>0.4</xmpp:version>
|
<xmpp:version>0.3.0</xmpp:version>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0334.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0352.html" />
|
||||||
<xmpp:status>complete</xmpp:status>
|
<xmpp:status>complete</xmpp:status>
|
||||||
<xmpp:note xml:lang="en">Write-only support</xmpp:note>
|
<xmpp:version>1.0</xmpp:version>
|
||||||
<xmpp:version>0.3.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0352.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0359.html" />
|
||||||
<xmpp:status>complete</xmpp:status>
|
<xmpp:status>complete</xmpp:status>
|
||||||
<xmpp:version>1.0</xmpp:version>
|
<xmpp:version>0.6.1</xmpp:version>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0359.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0363.html" />
|
||||||
<xmpp:status>complete</xmpp:status>
|
<xmpp:status>partial</xmpp:status>
|
||||||
<xmpp:version>0.6.1</xmpp:version>
|
<xmpp:version>1.1.0</xmpp:version>
|
||||||
|
<xmpp:note xml:lang="en">Only handles the success case; not accessible via the App</xmpp:note>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0363.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0368.html" />
|
||||||
<xmpp:status>partial</xmpp:status>
|
<xmpp:status>partial</xmpp:status>
|
||||||
<xmpp:version>1.1.0</xmpp:version>
|
<xmpp:version>1.1.0</xmpp:version>
|
||||||
<xmpp:note xml:lang="en">Only handles the success case; not accessible via the App</xmpp:note>
|
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0368.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0380.html" />
|
||||||
<xmpp:status>partial</xmpp:status>
|
<xmpp:status>complete</xmpp:status>
|
||||||
<xmpp:version>1.1.0</xmpp:version>
|
<xmpp:version>0.4.0</xmpp:version>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0380.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0384.html" />
|
||||||
<xmpp:status>complete</xmpp:status>
|
<xmpp:status>complete</xmpp:status>
|
||||||
<xmpp:version>0.4.0</xmpp:version>
|
<xmpp:version>0.8.3</xmpp:version>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0384.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0420.html" />
|
||||||
<xmpp:status>complete</xmpp:status>
|
<xmpp:status>partial</xmpp:status>
|
||||||
<xmpp:version>0.8.3</xmpp:version>
|
<xmpp:version>0.4.1</xmpp:version>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0420.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0424.html" />
|
||||||
<xmpp:status>partial</xmpp:status>
|
<xmpp:status>complete</xmpp:status>
|
||||||
<xmpp:version>0.4.1</xmpp:version>
|
<xmpp:version>0.3.0</xmpp:version>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0424.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0444.html" />
|
||||||
<xmpp:status>complete</xmpp:status>
|
<xmpp:status>complete</xmpp:status>
|
||||||
<xmpp:version>0.3.0</xmpp:version>
|
<xmpp:version>0.1.0</xmpp:version>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0444.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0446.html" />
|
||||||
<xmpp:status>complete</xmpp:status>
|
<xmpp:status>complete</xmpp:status>
|
||||||
<xmpp:version>0.1.0</xmpp:version>
|
<xmpp:version>0.2.0</xmpp:version>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0446.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0447.html" />
|
||||||
<xmpp:status>complete</xmpp:status>
|
<xmpp:status>complete</xmpp:status>
|
||||||
<xmpp:version>0.2.0</xmpp:version>
|
<xmpp:version>0.1.2</xmpp:version>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0447.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0448.html" />
|
||||||
<xmpp:status>complete</xmpp:status>
|
<xmpp:status>partial</xmpp:status>
|
||||||
<xmpp:version>0.1.2</xmpp:version>
|
<xmpp:version>0.2.0</xmpp:version>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0448.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0449.html" />
|
||||||
<xmpp:status>partial</xmpp:status>
|
<xmpp:status>complete</xmpp:status>
|
||||||
<xmpp:version>0.2.0</xmpp:version>
|
<xmpp:version>0.1.1</xmpp:version>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0449.html"/>
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0461.html" />
|
||||||
<xmpp:status>complete</xmpp:status>
|
<xmpp:status>complete</xmpp:status>
|
||||||
<xmpp:version>0.1.1</xmpp:version>
|
<xmpp:version>0.2.0</xmpp:version>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0461.html"/>
|
<xmpp:xep rdf:resource="https://codeberg.org/moxxy/custom-xeps/src/branch/master/xep-xxxx-extensible-file-thumbnails.md" />
|
||||||
<xmpp:status>complete</xmpp:status>
|
<xmpp:status>partial</xmpp:status>
|
||||||
<xmpp:version>0.2.0</xmpp:version>
|
<xmpp:version>0.2.1</xmpp:version>
|
||||||
|
<xmpp:note xml:lang="en">Only Blurhash is implemented</xmpp:note>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
<implements>
|
<implements>
|
||||||
<xmpp:SupportedXep>
|
<xmpp:SupportedXep>
|
||||||
<xmpp:xep rdf:resource="https://codeberg.org/moxxy/custom-xeps/src/branch/master/xep-xxxx-file-upload-notification.md"/>
|
<xmpp:xep rdf:resource="https://codeberg.org/moxxy/custom-xeps/src/branch/master/xep-xxxx-file-upload-notification.md" />
|
||||||
<xmpp:status>partial</xmpp:status>
|
<xmpp:status>partial</xmpp:status>
|
||||||
<xmpp:version>0.0.5</xmpp:version>
|
<xmpp:version>0.0.5</xmpp:version>
|
||||||
<xmpp:note xml:lang="en">Sending and receiving implemented; cancellation not implemented</xmpp:note>
|
<xmpp:note xml:lang="en">Sending and receiving implemented; cancellation not implemented</xmpp:note>
|
||||||
</xmpp:SupportedXep>
|
</xmpp:SupportedXep>
|
||||||
</implements>
|
</implements>
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -58,7 +58,7 @@ List<ExpectationBase> buildAuthenticatedPlay(ConnectionSettings settings) {
|
|||||||
);
|
);
|
||||||
return [
|
return [
|
||||||
StringExpectation(
|
StringExpectation(
|
||||||
"<stream:stream xmlns='jabber:client' version='1.0' xmlns:stream='http://etherx.jabber.org/streams' to='${settings.jid.domain}' from='${settings.jid.toBare()}' xml:lang='en'>",
|
"<stream:stream xmlns='jabber:client' version='1.0' xmlns:stream='http://etherx.jabber.org/streams' to='${settings.jid.domain}' from='${settings.jid.toBare().toString()}' xml:lang='en'>",
|
||||||
'''
|
'''
|
||||||
<stream:stream
|
<stream:stream
|
||||||
xmlns="jabber:client"
|
xmlns="jabber:client"
|
||||||
@ -77,7 +77,7 @@ List<ExpectationBase> buildAuthenticatedPlay(ConnectionSettings settings) {
|
|||||||
'<success xmlns="urn:ietf:params:xml:ns:xmpp-sasl" />',
|
'<success xmlns="urn:ietf:params:xml:ns:xmpp-sasl" />',
|
||||||
),
|
),
|
||||||
StringExpectation(
|
StringExpectation(
|
||||||
"<stream:stream xmlns='jabber:client' version='1.0' xmlns:stream='http://etherx.jabber.org/streams' to='${settings.jid.domain}' from='${settings.jid.toBare()}' xml:lang='en'>",
|
"<stream:stream xmlns='jabber:client' version='1.0' xmlns:stream='http://etherx.jabber.org/streams' to='${settings.jid.domain}' from='${settings.jid.toBare().toString()}' xml:lang='en'>",
|
||||||
'''
|
'''
|
||||||
<stream:stream
|
<stream:stream
|
||||||
xmlns="jabber:client"
|
xmlns="jabber:client"
|
||||||
|
Loading…
Reference in New Issue
Block a user