diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index c556993..c59f7dc 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,18 +1,30 @@ --- name: Bug report -about: Create a report to help us improve +about: Create a report and we will try to help with your problem! --- +> [!CAUTION] +> Web-API (formerly the .php version) is deprecated and won't receive any help + +> [!CAUTION] +> Remember this is public, please don't add any sensitive information + +> [!TIP] +> Please, set XenAPI with debug output by setting the option (XenAPI::setDebug(true)) if you want to add the trace of the bug + +**About the environment (please complete the following information):** + +- Xenforo version: [e.g. Xenforo 2.1.0] +- Java Version: [e.g. termiun 21] +- RequestType & Params [e.g. Request: getNode, Params: AUTH_USER] +- XenAPI Version [e.g. 2.0.0] + **Describe the bug** A clear and concise description of what the bug is. **To Reproduce** Steps to reproduce the behavior: -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error **Expected behavior** A clear and concise description of what you expected to happen. @@ -20,16 +32,5 @@ A clear and concise description of what you expected to happen. **Screenshots** If applicable, add screenshots to help explain your problem. -**Web-API (please complete the following information):** - - Action [e.g. getNode] - - Hash [e.g. username:hash, api-key] - - Version [e.g. 1.4.4] - -**Java-API (please complete the following information):** - - Action: [e.g. getNode] - - Hash [e.g. api-key] - - RequestType & Params [e.g. Request: getNode, Params: AUTH_USER] - - Version [e.g. 0.3.2] - **Additional context** -Add any other context about the problem here. +Add any other context about the problem here. Also, if the base API was modified in any way, please explain what changed here. diff --git a/.github/workflow/build.yml b/.github/workflow/build.yml new file mode 100644 index 0000000..b9c6eaf --- /dev/null +++ b/.github/workflow/build.yml @@ -0,0 +1,31 @@ +name: XenAPI CI + +on: + push: + branches: [ dev, master ] + pull_request: + types: [ opened ] + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + java: [ '11', '17', '21' ] + name: Java ${{ matrix.Java }} sample + + steps: + - uses: actions/checkout@v5 + - name: Setup java + uses: actions/setup-java@v5 + with: + distribution: 'temurin' + java-version: ${{ matrix.java }} + cache: maven + - name: Cache the Maven packages to speed up build + uses: actions/cache@v4 + with: + path: ~/.m2 + key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} + restore-keys: ${{ runner.os }}-m2 + - run: mvn clean install --file pom.xml \ No newline at end of file diff --git a/.gitignore b/.gitignore index 153b80e..3a5777c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,16 @@ .idea - +target # Used for testing -src/es/cadox8/xenapi/Launcher.java \ No newline at end of file +/src/test/ +# Docs +/docs/docs +/docs/src +/docs/static +/docs/node_modules +/docs/docusaurus.config.ts +/docs/package-lock.json +/docs/pnpm-workspace.yaml +/docs/package.json +/docs/pnpm-lock.yaml +/docs/sidebars.ts +/docs/tsconfig.json \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index ef863ea..0000000 --- a/.travis.yml +++ /dev/null @@ -1,21 +0,0 @@ -os: - - linux - -language: java - -jdk: - - openjdk10 - - oraclejdk11 - -cache: - directories: - - $HOME/.m2 - -install: mvn clean install - -branches: - only: - - master - -notifications: - email: false \ No newline at end of file diff --git a/README.md b/README.md index e252fc4..2e064ab 100644 --- a/README.md +++ b/README.md @@ -1,88 +1,107 @@ -![Logo](docs/img/logo_64.png) +![Logo](docs/logo/svg/logo-no-background.svg) -[![Build Status](https://travis-ci.org/cadox8/XenAPI.svg?branch=master)](https://travis-ci.org/cadox8/XenAPI) +[![Build Status](https://github.com/cadox8/XenAPI/actions/workflows/build.yml/badge.svg)](https://github.com/cadox8/XenAPI/actions) + +## This is a simple XenForo 2.X API for Java. -### This is a simple XenForo API for Java. ----- ## Summary + * [XenAPI for Xenforo 1.X](#me.cadox8.xenapi-for-xenforo-1x) * [Downloads & Repo](#downloads--repo) * [Documentation](#documentation) * [Bug Reporting](#bug-reporting) * [Contributing](#contributing) -* [Instalation](#installation) * [Usage & API Key](#usage--api-key) * [Dependencies](#dependencies) * [Bug Reporting](#bug-reporting) * [License & Copyright](#license--copyright) -* [Donations](#donations) -* [TODO](https://github.com/cadox8/XenAPI/issues/15) + ----- ## XenAPI for Xenforo 1.X + This repo contains only a framework for Xenforo 2.X. -v1.X of Xenforo will not be developed anymore. If you need the old API you can grab it from [here](https://github.com/cadox8/XenAPI/releases/tag/Xenforo_v1.X). +v1.X of Xenforo will not be developed anymore. If you need the old API you can grab it +from [here](https://github.com/cadox8/XenAPI/releases/tag/Xenforo_v1.X). + +> [!CAUTION] +> The v1.X is deprecated ## Downloads & Repo -All downloads are hosted in [Github](https://github.com/cadox8/XenAPI/releases). + +All downloads are hosted in [this repo](https://repo.cadox8.es/#/). + +Alternatively, you can download files [here on Github](https://github.com/cadox8/XenAPI/releases/latest). For the Java-API, you can add it on Maven: ```xml - - - XenAPI Repo - https://cadox8.es/repo - - - - - - es.cadox8 - XenAPI - RELEASE - - + + + + XenAPI Repo + https://repo.cadox8.es/#/ + + + + + + es.cadox8 + XenAPI + LATEST + + ``` -**NOTE:** You can use ``RELEASE`` as version or you can use the version number (you can check all versions [here](https://github.com/cadox8/XenAPI/releases)) +**NOTE:** You can use ``LATEST`` as version, or you can use the version number (you can check all +versions [here](https://repo.cadox8.es/#/) or [on the docs](https://)). ## Documentation -**Web-API & Java-API:** You can get the documentation [here](https://cadox8.github.io/XenAPI/#/). -**Javadocs:** You can check the Javadocs [here](https://cadox8.github.io/XenAPI/javadocs). +**XenAPI Docs**: You can get the documentation [here](https://cadox8.github.io/XenAPI/#/). + +**Javadocs**: +Now you can see the javadocs by version! + +Just go to https://repo.cadox8.es/javadoc/snapshots/es/cadox8/XenAPI/ + +*Replace with the version you want to check! Example: 2.0.0-9-SNAPSHOT* + +**Endpoints**: I use [Yaak](https://yaak.app/) to check/tests the endpoints, you can import it from [here](docs/yaak.xenforo.json) ## Bug Reporting + You can create an issue here on GitHub to report a bug with the API or to suggest enhancements. ## Contributing -If you want to contribute to the project, you must accept and follow our [Code Of Conduct](.github/CODE_OF_CONDUCT.md) and our [guides for contributing](.github/CONTRIBUTING.md). - -## Instalation +If you want to contribute to the project, you must accept and follow our [Code Of Conduct](.github/CODE_OF_CONDUCT.md) and +our [guides for contributing](.github/CONTRIBUTING.md). ## Usage & API Key -You will need to enable API in your XenForo. You can use this [guide](https://xenforo.com/docs/dev/rest-api/). +You will need to enable API in your XenForo. You can use this [guide](https://xenforo.com/docs/dev/rest-api/). ## Dependencies + The XenAPI (Java) has the following dependencies: + * [Google Gson library](https://mvnrepository.com/artifact/com.google.code.gson/gson) * [Project Lombok](https://projectlombok.org) * [Apache HttpClient](https://hc.apache.org) +* [StaticLog](https://github.com/jupf/staticlog) ## License & Copyright + XenAPI is licensed under [GNU LESSER GENERAL PUBLIC LICENSE Version 3](LICENSE.md). -The logo and some parts of the PHP Code is property of [Contex](https://github.com/Contex/XenAPI). +Some parts of the PHP Code is property of [Contex](https://github.com/Contex/XenAPI). Cadox8 updated the code and created the Java API. [Contex](https://github.com/Contex) © 2012-2014 -[Cadox8](https://cadox8.es) © 2018-2021 - -## Donations -Building an Open Source Project is hard. You have to invert time and resources. :money_with_wings: :money_with_wings: +[Cadox8](https://cadox8.es) © 2018-2025 \ No newline at end of file diff --git a/docs/.nojekyll b/docs/.nojekyll deleted file mode 100644 index e69de29..0000000 diff --git a/docs/_404.md b/docs/_404.md deleted file mode 100644 index cf9cd04..0000000 --- a/docs/_404.md +++ /dev/null @@ -1,3 +0,0 @@ -# Ooooooops - -It seams that you're lost! [You can go back](/) and leave this dark site... \ No newline at end of file diff --git a/docs/_coverpage.md b/docs/_coverpage.md deleted file mode 100644 index fd092b3..0000000 --- a/docs/_coverpage.md +++ /dev/null @@ -1,8 +0,0 @@ -![logo](img/logo.png) - -# XenAPI - -> Simple Xenforo API for Java - -[GitHub](https://github.com/cadox8/XenAPI/) -[Get Started](#welcome-to-the-xenapi-wiki) \ No newline at end of file diff --git a/docs/_navbar.md b/docs/_navbar.md deleted file mode 100644 index 05634e4..0000000 --- a/docs/_navbar.md +++ /dev/null @@ -1,4 +0,0 @@ - - diff --git a/docs/_sidebar.md b/docs/_sidebar.md deleted file mode 100644 index ba4a3a4..0000000 --- a/docs/_sidebar.md +++ /dev/null @@ -1,13 +0,0 @@ - - -- Getting started - - [XenAPI](/) - - [API](/api.md) -- Actions - - [Auth](/auth.md) - - [Me]() - - [[GET] Me](/actions/me_get.md) - - -- [Javadocs](https://cadox8.github.io/XenAPI/javadocs/index.html) -- Version: 0.0.1-SNAPSHOT diff --git a/docs/actions/auth.md b/docs/actions/auth.md deleted file mode 100644 index 90310a7..0000000 --- a/docs/actions/auth.md +++ /dev/null @@ -1 +0,0 @@ -## Auth \ No newline at end of file diff --git a/docs/actions/me/me_get.md b/docs/actions/me/me_get.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/api.md b/docs/api.md deleted file mode 100644 index 98c1914..0000000 --- a/docs/api.md +++ /dev/null @@ -1,18 +0,0 @@ -**NOTE:** You must have **XenAPI.jar** as dependency. - -```xml - - - XenAPI Repo - https://cadox8.es/repo/ - - - - - - me.cadox8 - XenAPI - RELEASE - - -``` \ No newline at end of file diff --git a/docs/img/logo.png b/docs/img/logo.png deleted file mode 100644 index 088a5af..0000000 Binary files a/docs/img/logo.png and /dev/null differ diff --git a/docs/img/logo_64.png b/docs/img/logo_64.png deleted file mode 100644 index 437cc24..0000000 Binary files a/docs/img/logo_64.png and /dev/null differ diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index 8ae0eed..0000000 --- a/docs/index.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - XenAPI Docs - - - - - - - - - - - -
- - - - - - - - - - - diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index da24ec8..0000000 --- a/docs/index.md +++ /dev/null @@ -1,15 +0,0 @@ -![Logo](img/logo.png) - -# Welcome to the XenAPI wiki! ------- - -## What is XenAPI? -XenAPI is a REST API allows usage of several of XenForo functions, such as authentication, user information and many more! - -XenAPI was created in 2012 by [Contex](https://github.com/Contex) and it was "abandoned" in 2014. Now I am taking the open-source project to maintain it and add a Java API. - -## Downloads -All downloads are hosted in [Github](https://github.com/cadox8/XenAPI/releases). - -## Documentation -**Javadocs:** You can check the Javadocs [here](https://cadox8.github.io/XenAPI/javadocs). diff --git a/docs/javadocs/allclasses-index.html b/docs/javadocs/allclasses-index.html deleted file mode 100644 index b572782..0000000 --- a/docs/javadocs/allclasses-index.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - -All Classes - - - - - - - - - - - - - - -
- -
-
-
-

All Classes

-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
Argument 
Launcher 
Log 
Log.LogType 
NotAuthorizedException 
NotFoundException 
UrlExpander 
User -
User class
-
Utils 
XenAPI 
XenAPIBuilder 
XenForoBadRequestException 
XenForoClient 
XenForoEntity 
XenForoHttpException 
XenForoUrl 
-
-
-
- -
-
- - diff --git a/docs/javadocs/allpackages-index.html b/docs/javadocs/allpackages-index.html deleted file mode 100644 index c611f35..0000000 --- a/docs/javadocs/allpackages-index.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - -All Packages - - - - - - - - - - - - - - -
- -
-
-
-

All Packages

-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Package Summary
PackageDescription
es.cadox8.xenapi 
es.cadox8.xenapi.api 
es.cadox8.xenapi.exceptions 
es.cadox8.xenapi.net 
es.cadox8.xenapi.utils 
-
-
- -
-
- - diff --git a/docs/javadocs/constant-values.html b/docs/javadocs/constant-values.html deleted file mode 100644 index 388ea70..0000000 --- a/docs/javadocs/constant-values.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - -Constant Field Values - - - - - - - - - - - - - - -
- -
-
-
-

Constant Field Values

-
-

Contents

- -
-
-
-

es.cadox8.*

-
    -
  • -
    - - - - - - - - - - - - - - - - -
    es.cadox8.xenapi.net.XenForoUrl
    Modifier and TypeConstant FieldValue
    public static final java.lang.StringGET_ME"/me"
    -
    -
  • -
-
-
- -
-
- - diff --git a/docs/javadocs/deprecated-list.html b/docs/javadocs/deprecated-list.html deleted file mode 100644 index 2866627..0000000 --- a/docs/javadocs/deprecated-list.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - -Deprecated List - - - - - - - - - - - - - - -
- -
-
-
-

Deprecated API

-

Contents

-
-
- -
-
- - diff --git a/docs/javadocs/element-list b/docs/javadocs/element-list deleted file mode 100644 index 29439b7..0000000 --- a/docs/javadocs/element-list +++ /dev/null @@ -1,5 +0,0 @@ -es.cadox8.xenapi -es.cadox8.xenapi.api -es.cadox8.xenapi.exceptions -es.cadox8.xenapi.net -es.cadox8.xenapi.utils diff --git a/docs/javadocs/es/cadox8/xenapi/XenAPI.html b/docs/javadocs/es/cadox8/xenapi/XenAPI.html deleted file mode 100644 index c6e9f33..0000000 --- a/docs/javadocs/es/cadox8/xenapi/XenAPI.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - -XenAPI - - - - - - - - - - - - - - -
- -
-
- -
- -

Interface XenAPI

-
-
-
-
All Known Implementing Classes:
-
XenAPIBuilder
-
-
-
public interface XenAPI
-
-
-
    - -
  • -
    -

    Method Summary

    -
    -
    -
    - - - - - - - - - - - - - - - -
    Modifier and TypeMethodDescription
    Userme() -
    Gets the info about the current user (token user)
    -
    -
    -
    -
    -
  • -
-
-
-
    - -
  • -
    -

    Method Details

    -
      -
    • -
      -

      me

      -
      User me()
      -
      Gets the info about the current user (token user)
      -
      -
      Returns:
      -
      The user information
      -
      See Also:
      -
      User
      -
      -
      -
    • -
    -
    -
  • -
-
- -
- -
-
- - diff --git a/docs/javadocs/es/cadox8/xenapi/XenAPIBuilder.html b/docs/javadocs/es/cadox8/xenapi/XenAPIBuilder.html deleted file mode 100644 index e837f91..0000000 --- a/docs/javadocs/es/cadox8/xenapi/XenAPIBuilder.html +++ /dev/null @@ -1,270 +0,0 @@ - - - - - -XenAPIBuilder - - - - - - - - - - - - - - -
- -
-
- -
- -

Class XenAPIBuilder

-
-
java.lang.Object -
es.cadox8.xenapi.XenAPIBuilder
-
-
-
-
All Implemented Interfaces:
-
XenAPI
-
-
-
public class XenAPIBuilder
-extends java.lang.Object
-implements XenAPI
-
-
-
    - -
  • -
    -

    Constructor Summary

    -
    - - - - - - - - - - - - - - - - - - -
    Constructors
    ConstructorDescription
    XenAPIBuilder​(java.lang.String url, -java.lang.String token) -
    Constructor for the XenAPI Builder
    -
    XenAPIBuilder​(java.lang.String url, -java.lang.String token, -java.lang.String user) -
    Constructor for the XenAPI Builder
    -
    -
    -
    -
  • - -
  • -
    -

    Method Summary

    -
    -
    -
    - - - - - - - - - - - - - - - -
    Modifier and TypeMethodDescription
    Userme() -
    Gets the info about the current user (token user)
    -
    -
    -
    -
    -

    Methods inherited from class java.lang.Object

    -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    -
    -
  • -
-
-
-
    - -
  • -
    -

    Constructor Details

    -
      -
    • -
      -

      XenAPIBuilder

      -
      public XenAPIBuilder​(java.lang.String url, -java.lang.String token)
      -
      Constructor for the XenAPI Builder
      -
      -
      Parameters:
      -
      url - the url where XenForo is installed at
      -
      token - The token you have to access
      -
      -
      -
    • -
    • -
      -

      XenAPIBuilder

      -
      public XenAPIBuilder​(java.lang.String url, -java.lang.String token, -java.lang.String user)
      -
      Constructor for the XenAPI Builder
      -
      -
      Parameters:
      -
      url - the url where XenForo is installed at
      -
      token - The token you have to access
      -
      user - The user of the generated token - - You need to pass the user param if the token is for superuser
      -
      -
      -
    • -
    -
    -
  • - -
  • -
    -

    Method Details

    -
      -
    • -
      -

      me

      -
      public User me()
      -
      Description copied from interface: XenAPI
      -
      Gets the info about the current user (token user)
      -
      -
      Specified by:
      -
      me in interface XenAPI
      -
      Returns:
      -
      The user information
      -
      See Also:
      -
      User
      -
      -
      -
    • -
    -
    -
  • -
-
- -
- -
-
- - diff --git a/docs/javadocs/es/cadox8/xenapi/api/User.html b/docs/javadocs/es/cadox8/xenapi/api/User.html deleted file mode 100644 index 6003da8..0000000 --- a/docs/javadocs/es/cadox8/xenapi/api/User.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - -User - - - - - - - - - - - - - - -
- -
-
- -
- -

Class User

-
-
java.lang.Object -
es.cadox8.xenapi.api.XenForoEntity -
es.cadox8.xenapi.api.User
-
-
-
-
-
public class User
-extends XenForoEntity
-
User class
-
-
-
    - -
  • -
    -

    Field Summary

    -
    -

    Fields inherited from class es.cadox8.xenapi.api.XenForoEntity

    -xenAPIService
    -
    -
  • - -
  • -
    -

    Constructor Summary

    -
    - - - - - - - - - - - - - - -
    Constructors
    ConstructorDescription
    User() 
    -
    -
    -
  • - -
  • -
    -

    Method Summary

    -
    -

    Methods inherited from class es.cadox8.xenapi.api.XenForoEntity

    -getXenAPIService, setInternalXenAPI
    -
    -

    Methods inherited from class java.lang.Object

    -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    -
    -
  • -
-
-
-
    - -
  • -
    -

    Constructor Details

    -
      -
    • -
      -

      User

      -
      public User()
      -
      -
    • -
    -
    -
  • -
-
- -
- -
-
- - diff --git a/docs/javadocs/es/cadox8/xenapi/api/XenForoEntity.html b/docs/javadocs/es/cadox8/xenapi/api/XenForoEntity.html deleted file mode 100644 index b6f2816..0000000 --- a/docs/javadocs/es/cadox8/xenapi/api/XenForoEntity.html +++ /dev/null @@ -1,272 +0,0 @@ - - - - - -XenForoEntity - - - - - - - - - - - - - - -
- -
-
- -
- -

Class XenForoEntity

-
-
java.lang.Object -
es.cadox8.xenapi.api.XenForoEntity
-
-
-
-
Direct Known Subclasses:
-
User
-
-
-
public class XenForoEntity
-extends java.lang.Object
-
-
-
    - -
  • -
    -

    Field Summary

    -
    - - - - - - - - - - - - - - - - -
    Fields
    Modifier and TypeFieldDescription
    protected XenAPIxenAPIService 
    -
    -
    -
  • - -
  • -
    -

    Constructor Summary

    -
    - - - - - - - - - - - - - - -
    Constructors
    ConstructorDescription
    XenForoEntity() 
    -
    -
    -
  • - -
  • -
    -

    Method Summary

    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - -
    Modifier and TypeMethodDescription
    protected XenAPIgetXenAPIService() 
    <T extends XenForoEntity>
    T
    setInternalXenAPI​(XenAPI xenAPIService) 
    -
    -
    -
    -

    Methods inherited from class java.lang.Object

    -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    -
    -
  • -
-
-
-
    - -
  • -
    -

    Field Details

    -
      -
    • -
      -

      xenAPIService

      -
      protected XenAPI xenAPIService
      -
      -
    • -
    -
    -
  • - -
  • -
    -

    Constructor Details

    -
      -
    • -
      -

      XenForoEntity

      -
      public XenForoEntity()
      -
      -
    • -
    -
    -
  • - -
  • -
    -

    Method Details

    -
      -
    • -
      -

      setInternalXenAPI

      -
      public <T extends XenForoEntity> T setInternalXenAPI​(XenAPI xenAPIService)
      -
      -
    • -
    • -
      -

      getXenAPIService

      -
      protected XenAPI getXenAPIService()
      -
      -
    • -
    -
    -
  • -
-
- -
- -
-
- - diff --git a/docs/javadocs/es/cadox8/xenapi/api/package-summary.html b/docs/javadocs/es/cadox8/xenapi/api/package-summary.html deleted file mode 100644 index e8086a4..0000000 --- a/docs/javadocs/es/cadox8/xenapi/api/package-summary.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - -es.cadox8.xenapi.api - - - - - - - - - - - - - - -
- -
-
-
-

Package es.cadox8.xenapi.api

-
-
-
    -
  • -
    - - - - - - - - - - - - - - - - - - -
    Class Summary
    ClassDescription
    User -
    User class
    -
    XenForoEntity 
    -
    -
  • -
-
-
- -
-
- - diff --git a/docs/javadocs/es/cadox8/xenapi/api/package-tree.html b/docs/javadocs/es/cadox8/xenapi/api/package-tree.html deleted file mode 100644 index d7f217e..0000000 --- a/docs/javadocs/es/cadox8/xenapi/api/package-tree.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - -es.cadox8.xenapi.api Class Hierarchy - - - - - - - - - - - - - - -
- -
-
-
-

Hierarchy For Package es.cadox8.xenapi.api

-Package Hierarchies: - -
-
-

Class Hierarchy

-
    -
  • java.lang.Object - -
  • -
-
-
- -
-
- - diff --git a/docs/javadocs/es/cadox8/xenapi/exceptions/NotAuthorizedException.html b/docs/javadocs/es/cadox8/xenapi/exceptions/NotAuthorizedException.html deleted file mode 100644 index 33fe782..0000000 --- a/docs/javadocs/es/cadox8/xenapi/exceptions/NotAuthorizedException.html +++ /dev/null @@ -1,218 +0,0 @@ - - - - - -NotAuthorizedException - - - - - - - - - - - - - - -
- -
-
- -
- -

Class NotAuthorizedException

-
-
java.lang.Object -
java.lang.Throwable -
java.lang.Exception -
java.lang.RuntimeException -
es.cadox8.xenapi.exceptions.XenForoBadRequestException -
es.cadox8.xenapi.exceptions.NotAuthorizedException
-
-
-
-
-
-
-
-
All Implemented Interfaces:
-
java.io.Serializable
-
-
-
public class NotAuthorizedException
-extends XenForoBadRequestException
-
-
See Also:
-
Serialized Form
-
-
-
-
    - -
  • -
    -

    Constructor Summary

    -
    - - - - - - - - - - - - - - - - - - - - - - -
    Constructors
    ConstructorDescription
    NotAuthorizedException() 
    NotAuthorizedException​(java.lang.String message) 
    NotAuthorizedException​(java.lang.String response, -java.lang.Throwable cause) 
    -
    -
    -
  • - -
  • -
    -

    Method Summary

    -
    -

    Methods inherited from class java.lang.Throwable

    -addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
    -
    -

    Methods inherited from class java.lang.Object

    -clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    -
    -
  • -
-
-
-
    - -
  • -
    -

    Constructor Details

    -
      -
    • -
      -

      NotAuthorizedException

      -
      public NotAuthorizedException​(java.lang.String message)
      -
      -
    • -
    • -
      -

      NotAuthorizedException

      -
      public NotAuthorizedException()
      -
      -
    • -
    • -
      -

      NotAuthorizedException

      -
      public NotAuthorizedException​(java.lang.String response, -java.lang.Throwable cause)
      -
      -
    • -
    -
    -
  • -
-
- -
- -
-
- - diff --git a/docs/javadocs/es/cadox8/xenapi/exceptions/NotFoundException.html b/docs/javadocs/es/cadox8/xenapi/exceptions/NotFoundException.html deleted file mode 100644 index 61a0168..0000000 --- a/docs/javadocs/es/cadox8/xenapi/exceptions/NotFoundException.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - - -NotFoundException - - - - - - - - - - - - - - -
- -
-
- -
- -

Class NotFoundException

-
-
java.lang.Object -
java.lang.Throwable -
java.lang.Exception -
java.lang.RuntimeException -
es.cadox8.xenapi.exceptions.XenForoBadRequestException -
es.cadox8.xenapi.exceptions.NotFoundException
-
-
-
-
-
-
-
-
All Implemented Interfaces:
-
java.io.Serializable
-
-
-
public class NotFoundException
-extends XenForoBadRequestException
-
-
See Also:
-
Serialized Form
-
-
-
-
    - -
  • -
    -

    Constructor Summary

    -
    - - - - - - - - - - - - - - - - - - -
    Constructors
    ConstructorDescription
    NotFoundException​(java.lang.String message) 
    NotFoundException​(java.lang.String message, -java.lang.Throwable cause) 
    -
    -
    -
  • - -
  • -
    -

    Method Summary

    -
    -

    Methods inherited from class java.lang.Throwable

    -addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
    -
    -

    Methods inherited from class java.lang.Object

    -clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    -
    -
  • -
-
-
-
    - -
  • -
    -

    Constructor Details

    -
      -
    • -
      -

      NotFoundException

      -
      public NotFoundException​(java.lang.String message, -java.lang.Throwable cause)
      -
      -
    • -
    • -
      -

      NotFoundException

      -
      public NotFoundException​(java.lang.String message)
      -
      -
    • -
    -
    -
  • -
-
- -
- -
-
- - diff --git a/docs/javadocs/es/cadox8/xenapi/exceptions/XenForoBadRequestException.html b/docs/javadocs/es/cadox8/xenapi/exceptions/XenForoBadRequestException.html deleted file mode 100644 index cf4dd40..0000000 --- a/docs/javadocs/es/cadox8/xenapi/exceptions/XenForoBadRequestException.html +++ /dev/null @@ -1,220 +0,0 @@ - - - - - -XenForoBadRequestException - - - - - - - - - - - - - - -
- -
-
- -
- -

Class XenForoBadRequestException

-
-
java.lang.Object -
java.lang.Throwable -
java.lang.Exception -
java.lang.RuntimeException -
es.cadox8.xenapi.exceptions.XenForoBadRequestException
-
-
-
-
-
-
-
All Implemented Interfaces:
-
java.io.Serializable
-
-
-
Direct Known Subclasses:
-
NotAuthorizedException, NotFoundException
-
-
-
public class XenForoBadRequestException
-extends java.lang.RuntimeException
-
-
See Also:
-
Serialized Form
-
-
-
-
    - -
  • -
    -

    Constructor Summary

    -
    - - - - - - - - - - - - - - - - - - - - - - -
    Constructors
    ConstructorDescription
    XenForoBadRequestException​(java.lang.String message) 
    XenForoBadRequestException​(java.lang.String message, -java.lang.Throwable cause) 
    XenForoBadRequestException​(java.lang.Throwable cause) 
    -
    -
    -
  • - -
  • -
    -

    Method Summary

    -
    -

    Methods inherited from class java.lang.Throwable

    -addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
    -
    -

    Methods inherited from class java.lang.Object

    -clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    -
    -
  • -
-
-
-
    - -
  • -
    -

    Constructor Details

    -
      -
    • -
      -

      XenForoBadRequestException

      -
      public XenForoBadRequestException​(java.lang.String message, -java.lang.Throwable cause)
      -
      -
    • -
    • -
      -

      XenForoBadRequestException

      -
      public XenForoBadRequestException​(java.lang.String message)
      -
      -
    • -
    • -
      -

      XenForoBadRequestException

      -
      public XenForoBadRequestException​(java.lang.Throwable cause)
      -
      -
    • -
    -
    -
  • -
-
- -
- -
-
- - diff --git a/docs/javadocs/es/cadox8/xenapi/exceptions/XenForoHttpException.html b/docs/javadocs/es/cadox8/xenapi/exceptions/XenForoHttpException.html deleted file mode 100644 index f2321cb..0000000 --- a/docs/javadocs/es/cadox8/xenapi/exceptions/XenForoHttpException.html +++ /dev/null @@ -1,242 +0,0 @@ - - - - - -XenForoHttpException - - - - - - - - - - - - - - -
- -
-
- -
- -

Class XenForoHttpException

-
-
java.lang.Object -
java.lang.Throwable -
java.lang.Exception -
java.lang.RuntimeException -
es.cadox8.xenapi.exceptions.XenForoHttpException
-
-
-
-
-
-
-
All Implemented Interfaces:
-
java.io.Serializable
-
-
-
public class XenForoHttpException
-extends java.lang.RuntimeException
-
-
See Also:
-
Serialized Form
-
-
-
-
    - -
  • -
    -

    Constructor Summary

    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Constructors
    ConstructorDescription
    XenForoHttpException() 
    XenForoHttpException​(java.lang.String message) 
    XenForoHttpException​(java.lang.String message, -java.lang.Throwable cause) 
    XenForoHttpException​(java.lang.String message, -java.lang.Throwable cause, -boolean enableSuppression, -boolean writableStackTrace) 
    XenForoHttpException​(java.lang.Throwable cause) 
    -
    -
    -
  • - -
  • -
    -

    Method Summary

    -
    -

    Methods inherited from class java.lang.Throwable

    -addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
    -
    -

    Methods inherited from class java.lang.Object

    -clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    -
    -
  • -
-
-
-
    - -
  • -
    -

    Constructor Details

    -
      -
    • -
      -

      XenForoHttpException

      -
      public XenForoHttpException()
      -
      -
    • -
    • -
      -

      XenForoHttpException

      -
      public XenForoHttpException​(java.lang.String message)
      -
      -
    • -
    • -
      -

      XenForoHttpException

      -
      public XenForoHttpException​(java.lang.String message, -java.lang.Throwable cause)
      -
      -
    • -
    • -
      -

      XenForoHttpException

      -
      public XenForoHttpException​(java.lang.Throwable cause)
      -
      -
    • -
    • -
      -

      XenForoHttpException

      -
      public XenForoHttpException​(java.lang.String message, -java.lang.Throwable cause, -boolean enableSuppression, -boolean writableStackTrace)
      -
      -
    • -
    -
    -
  • -
-
- -
- -
-
- - diff --git a/docs/javadocs/es/cadox8/xenapi/exceptions/package-summary.html b/docs/javadocs/es/cadox8/xenapi/exceptions/package-summary.html deleted file mode 100644 index 1673377..0000000 --- a/docs/javadocs/es/cadox8/xenapi/exceptions/package-summary.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -es.cadox8.xenapi.exceptions - - - - - - - - - - - - - - -
- -
-
-
-

Package es.cadox8.xenapi.exceptions

-
-
- -
-
- -
-
- - diff --git a/docs/javadocs/es/cadox8/xenapi/exceptions/package-tree.html b/docs/javadocs/es/cadox8/xenapi/exceptions/package-tree.html deleted file mode 100644 index be812ca..0000000 --- a/docs/javadocs/es/cadox8/xenapi/exceptions/package-tree.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - -es.cadox8.xenapi.exceptions Class Hierarchy - - - - - - - - - - - - - - -
- -
-
-
-

Hierarchy For Package es.cadox8.xenapi.exceptions

-Package Hierarchies: - -
-
-

Class Hierarchy

- -
-
- -
-
- - diff --git a/docs/javadocs/es/cadox8/xenapi/net/UrlExpander.html b/docs/javadocs/es/cadox8/xenapi/net/UrlExpander.html deleted file mode 100644 index aecf22b..0000000 --- a/docs/javadocs/es/cadox8/xenapi/net/UrlExpander.html +++ /dev/null @@ -1,220 +0,0 @@ - - - - - -UrlExpander - - - - - - - - - - - - - - -
- -
-
- -
- -

Class UrlExpander

-
-
java.lang.Object -
es.cadox8.xenapi.utils.UrlExpander
-
-
-
-
public final class UrlExpander
-extends java.lang.Object
-
-
-
    - -
  • -
    -

    Constructor Summary

    -
    - - - - - - - - - - - - - - -
    Constructors
    ConstructorDescription
    UrlExpander() 
    -
    -
    -
  • - -
  • -
    -

    Method Summary

    -
    -
    -
    - - - - - - - - - - - - - - - -
    Modifier and TypeMethodDescription
    static java.lang.StringexpandUrl​(java.lang.String url, -java.lang.String... params) 
    -
    -
    -
    -

    Methods inherited from class java.lang.Object

    -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    -
    -
  • -
-
-
-
    - -
  • -
    -

    Constructor Details

    -
      -
    • -
      -

      UrlExpander

      -
      public UrlExpander()
      -
      -
    • -
    -
    -
  • - -
  • -
    -

    Method Details

    -
      -
    • -
      -

      expandUrl

      -
      public static java.lang.String expandUrl​(java.lang.String url, -java.lang.String... params)
      -
      -
    • -
    -
    -
  • -
-
- -
- -
-
- - diff --git a/docs/javadocs/es/cadox8/xenapi/net/XenForoClient.html b/docs/javadocs/es/cadox8/xenapi/net/XenForoClient.html deleted file mode 100644 index 5c6b92e..0000000 --- a/docs/javadocs/es/cadox8/xenapi/net/XenForoClient.html +++ /dev/null @@ -1,314 +0,0 @@ - - - - - -XenForoClient - - - - - - - - - - - - - - -
- -
-
- -
- -

Class XenForoClient

-
-
java.lang.Object -
es.cadox8.xenapi.net.XenForoClient
-
-
-
-
public class XenForoClient
-extends java.lang.Object
-
-
-
    - -
  • -
    -

    Constructor Summary

    -
    - - - - - - - - - - - - - - - - - - - - - - -
    Constructors
    ConstructorDescription
    XenForoClient​(java.lang.String token) 
    XenForoClient​(java.lang.String token, -java.lang.String user) 
    XenForoClient​(java.lang.String token, -java.lang.String user, -org.apache.http.client.HttpClient httpClient) 
    -
    -
    -
  • - -
  • -
    -

    Method Summary

    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Modifier and TypeMethodDescription
    <T> Tdelete​(java.lang.String url, -java.lang.Class<T> responseType, -java.lang.String... params) 
    <T> Tget​(java.lang.String url, -java.lang.Class<T> responseType, -java.lang.String... params) 
    <T> TpostFileForObject​(java.lang.String url, -java.io.File file, -java.lang.Class<T> objectClass, -java.lang.String... params) 
    <T> TpostForObject​(java.lang.String url, -java.lang.Object body, -java.lang.Class<T> responseType, -java.lang.String... params) 
    <T> TputForObject​(java.lang.String url, -java.lang.Object body, -java.lang.Class<T> responseType, -java.lang.String... params) 
    -
    -
    -
    -

    Methods inherited from class java.lang.Object

    -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    -
    -
  • -
-
-
-
    - -
  • -
    -

    Constructor Details

    -
      -
    • -
      -

      XenForoClient

      -
      public XenForoClient​(java.lang.String token)
      -
      -
    • -
    • -
      -

      XenForoClient

      -
      public XenForoClient​(java.lang.String token, -java.lang.String user)
      -
      -
    • -
    • -
      -

      XenForoClient

      -
      public XenForoClient​(java.lang.String token, -java.lang.String user, -org.apache.http.client.HttpClient httpClient)
      -
      -
    • -
    -
    -
  • - -
  • -
    -

    Method Details

    -
      -
    • -
      -

      get

      -
      public <T> T get​(java.lang.String url, -java.lang.Class<T> responseType, -java.lang.String... params)
      -
      -
    • -
    • -
      -

      postForObject

      -
      public <T> T postForObject​(java.lang.String url, -java.lang.Object body, -java.lang.Class<T> responseType, -java.lang.String... params)
      -
      -
    • -
    • -
      -

      postFileForObject

      -
      public <T> T postFileForObject​(java.lang.String url, -java.io.File file, -java.lang.Class<T> objectClass, -java.lang.String... params)
      -
      -
    • -
    • -
      -

      putForObject

      -
      public <T> T putForObject​(java.lang.String url, -java.lang.Object body, -java.lang.Class<T> responseType, -java.lang.String... params)
      -
      -
    • -
    • -
      -

      delete

      -
      public <T> T delete​(java.lang.String url, -java.lang.Class<T> responseType, -java.lang.String... params)
      -
      -
    • -
    -
    -
  • -
-
- -
- -
-
- - diff --git a/docs/javadocs/es/cadox8/xenapi/net/XenForoUrl.html b/docs/javadocs/es/cadox8/xenapi/net/XenForoUrl.html deleted file mode 100644 index e068d01..0000000 --- a/docs/javadocs/es/cadox8/xenapi/net/XenForoUrl.html +++ /dev/null @@ -1,261 +0,0 @@ - - - - - -XenForoUrl - - - - - - - - - - - - - - -
- -
-
- -
- -

Class XenForoUrl

-
-
java.lang.Object -
es.cadox8.xenapi.net.XenForoUrl
-
-
-
-
public class XenForoUrl
-extends java.lang.Object
-
-
-
    - -
  • -
    -

    Field Summary

    -
    - - - - - - - - - - - - - - - - -
    Fields
    Modifier and TypeFieldDescription
    static java.lang.StringGET_ME 
    -
    -
    -
  • - -
  • -
    -

    Method Summary

    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Modifier and TypeMethodDescription
    java.lang.StringasString() 
    static XenForoUrlcreateUrl​(java.lang.String api_url, -java.lang.String baseUrl) 
    static java.lang.StringcreateUrlWithNoArgs​(java.lang.String api_url, -java.lang.String baseUrl) 
    XenForoUrlparams​(Argument... args) 
    -
    -
    -
    -

    Methods inherited from class java.lang.Object

    -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    -
    -
  • -
-
-
-
    - -
  • -
    -

    Field Details

    - -
    -
  • - -
  • -
    -

    Method Details

    -
      -
    • -
      -

      createUrl

      -
      public static XenForoUrl createUrl​(java.lang.String api_url, -java.lang.String baseUrl)
      -
      -
    • -
    • -
      -

      createUrlWithNoArgs

      -
      public static java.lang.String createUrlWithNoArgs​(java.lang.String api_url, -java.lang.String baseUrl)
      -
      -
    • -
    • -
      -

      params

      -
      public XenForoUrl params​(Argument... args)
      -
      -
    • -
    • -
      -

      asString

      -
      public java.lang.String asString()
      -
      -
    • -
    -
    -
  • -
-
- -
- -
-
- - diff --git a/docs/javadocs/es/cadox8/xenapi/net/package-summary.html b/docs/javadocs/es/cadox8/xenapi/net/package-summary.html deleted file mode 100644 index 5769c07..0000000 --- a/docs/javadocs/es/cadox8/xenapi/net/package-summary.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - -es.cadox8.xenapi.net - - - - - - - - - - - - - - -
- -
-
-
-

Package es.cadox8.xenapi.net

-
-
- -
-
- -
-
- - diff --git a/docs/javadocs/es/cadox8/xenapi/net/package-tree.html b/docs/javadocs/es/cadox8/xenapi/net/package-tree.html deleted file mode 100644 index a6ac015..0000000 --- a/docs/javadocs/es/cadox8/xenapi/net/package-tree.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - -es.cadox8.xenapi.net Class Hierarchy - - - - - - - - - - - - - - -
- -
-
-
-

Hierarchy For Package es.cadox8.xenapi.net

-Package Hierarchies: - -
-
-

Class Hierarchy

- -
-
- -
-
- - diff --git a/docs/javadocs/es/cadox8/xenapi/package-summary.html b/docs/javadocs/es/cadox8/xenapi/package-summary.html deleted file mode 100644 index fc23b3a..0000000 --- a/docs/javadocs/es/cadox8/xenapi/package-summary.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - -es.cadox8.xenapi - - - - - - - - - - - - - - -
- -
-
-
-

Package es.cadox8.xenapi

-
-
-
    -
  • -
    - - - - - - - - - - - - - - -
    Interface Summary
    InterfaceDescription
    XenAPI 
    -
    -
  • -
  • -
    - - - - - - - - - - - - - - - - - - -
    Class Summary
    ClassDescription
    Launcher 
    XenAPIBuilder 
    -
    -
  • -
-
-
- -
-
- - diff --git a/docs/javadocs/es/cadox8/xenapi/package-tree.html b/docs/javadocs/es/cadox8/xenapi/package-tree.html deleted file mode 100644 index 7bdf61e..0000000 --- a/docs/javadocs/es/cadox8/xenapi/package-tree.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - -es.cadox8.xenapi Class Hierarchy - - - - - - - - - - - - - - -
- -
-
-
-

Hierarchy For Package es.cadox8.xenapi

-Package Hierarchies: - -
-
-

Class Hierarchy

- -
-
-

Interface Hierarchy

- -
-
- -
-
- - diff --git a/docs/javadocs/es/cadox8/xenapi/utils/Argument.html b/docs/javadocs/es/cadox8/xenapi/utils/Argument.html deleted file mode 100644 index c0a80da..0000000 --- a/docs/javadocs/es/cadox8/xenapi/utils/Argument.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - -Argument - - - - - - - - - - - - - - -
- -
-
- -
- -

Class Argument

-
-
java.lang.Object -
es.cadox8.xenapi.utils.Argument
-
-
-
-
public class Argument
-extends java.lang.Object
-
-
-
    - -
  • -
    -

    Constructor Summary

    -
    - - - - - - - - - - - - - - -
    Constructors
    ConstructorDescription
    Argument() 
    -
    -
    -
  • - -
  • -
    -

    Method Summary

    -
    -

    Methods inherited from class java.lang.Object

    -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    -
    -
  • -
-
-
-
    - -
  • -
    -

    Constructor Details

    -
      -
    • -
      -

      Argument

      -
      public Argument()
      -
      -
    • -
    -
    -
  • -
-
- -
- -
-
- - diff --git a/docs/javadocs/es/cadox8/xenapi/utils/Log.LogType.html b/docs/javadocs/es/cadox8/xenapi/utils/Log.LogType.html deleted file mode 100644 index 75a2821..0000000 --- a/docs/javadocs/es/cadox8/xenapi/utils/Log.LogType.html +++ /dev/null @@ -1,315 +0,0 @@ - - - - - -Log.LogType - - - - - - - - - - - - - - -
- -
-
- -
- -

Enum Log.LogType

-
-
java.lang.Object -
java.lang.Enum<Log.LogType> -
es.cadox8.xenapi.utils.Log.LogType
-
-
-
-
-
All Implemented Interfaces:
-
java.io.Serializable, java.lang.Comparable<Log.LogType>, java.lang.constant.Constable
-
-
-
Enclosing class:
-
Log
-
-
-
public static enum Log.LogType
-extends java.lang.Enum<Log.LogType>
-
-
-
    - -
  • -
    -

    Nested Class Summary

    -
    -

    Nested classes/interfaces inherited from class java.lang.Enum

    -java.lang.Enum.EnumDesc<E extends java.lang.Enum<E>>
    -
    -
  • - -
  • -
    -

    Enum Constant Summary

    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Enum Constants
    Enum ConstantDescription
    DANGER 
    DEBUG 
    NORMAL 
    SUCCESS 
    SYSTEM 
    -
    -
    -
  • - -
  • -
    -

    Method Summary

    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - -
    Modifier and TypeMethodDescription
    static Log.LogTypevalueOf​(java.lang.String name) -
    Returns the enum constant of this type with the specified name.
    -
    static Log.LogType[]values() -
    Returns an array containing the constants of this enum type, in -the order they are declared.
    -
    -
    -
    -
    -

    Methods inherited from class java.lang.Enum

    -clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
    -
    -

    Methods inherited from class java.lang.Object

    -getClass, notify, notifyAll, wait, wait, wait
    -
    -
  • -
-
-
-
    - -
  • -
    -

    Enum Constant Details

    -
      -
    • -
      -

      SYSTEM

      -
      public static final Log.LogType SYSTEM
      -
      -
    • -
    • -
      -

      SUCCESS

      -
      public static final Log.LogType SUCCESS
      -
      -
    • -
    • -
      -

      NORMAL

      -
      public static final Log.LogType NORMAL
      -
      -
    • -
    • -
      -

      DANGER

      -
      public static final Log.LogType DANGER
      -
      -
    • -
    • -
      -

      DEBUG

      -
      public static final Log.LogType DEBUG
      -
      -
    • -
    -
    -
  • - -
  • -
    -

    Method Details

    -
      -
    • -
      -

      values

      -
      public static Log.LogType[] values()
      -
      Returns an array containing the constants of this enum type, in -the order they are declared.
      -
      -
      Returns:
      -
      an array containing the constants of this enum type, in the order they are declared
      -
      -
      -
    • -
    • -
      -

      valueOf

      -
      public static Log.LogType valueOf​(java.lang.String name)
      -
      Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
      -
      -
      Parameters:
      -
      name - the name of the enum constant to be returned.
      -
      Returns:
      -
      the enum constant with the specified name
      -
      Throws:
      -
      java.lang.IllegalArgumentException - if this enum type has no constant with the specified name
      -
      java.lang.NullPointerException - if the argument is null
      -
      -
      -
    • -
    -
    -
  • -
-
- -
- -
-
- - diff --git a/docs/javadocs/es/cadox8/xenapi/utils/Log.html b/docs/javadocs/es/cadox8/xenapi/utils/Log.html deleted file mode 100644 index 9744bf9..0000000 --- a/docs/javadocs/es/cadox8/xenapi/utils/Log.html +++ /dev/null @@ -1,322 +0,0 @@ - - - - - -Log - - - - - - - - - - - - - - -
- -
-
- -
- -

Class Log

-
-
java.lang.Object -
es.cadox8.xenapi.utils.Log
-
-
-
-
public class Log
-extends java.lang.Object
-
-
-
    - -
  • -
    -

    Nested Class Summary

    -
    - - - - - - - - - - - - - - - - -
    Nested Classes
    Modifier and TypeClassDescription
    static class Log.LogType 
    -
    -
    -
  • - -
  • -
    -

    Constructor Summary

    -
    - - - - - - - - - - - - - - -
    Constructors
    ConstructorDescription
    Log() 
    -
    -
    -
  • - -
  • -
    -

    Method Summary

    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Modifier and TypeMethodDescription
    static voiddanger​(java.lang.Object info) -
    Logs the info as Danger
    -
    static voiddebug​(java.lang.Object info) -
    Logs the info as Debug
    -
    static voidnormal​(java.lang.Object info) -
    Logs the info as Normal
    -
    static voidsuccess​(java.lang.Object info) -
    Logs the info as Success
    -
    static voidsystem​(java.lang.Object info) -
    Logs the info as Debug System
    -
    -
    -
    -
    -

    Methods inherited from class java.lang.Object

    -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    -
    -
  • -
-
-
-
    - -
  • -
    -

    Constructor Details

    -
      -
    • -
      -

      Log

      -
      public Log()
      -
      -
    • -
    -
    -
  • - -
  • -
    -

    Method Details

    -
      -
    • -
      -

      system

      -
      public static void system​(java.lang.Object info)
      -
      Logs the info as Debug System
      -
      -
      Parameters:
      -
      info - The object to be logged
      -
      -
      -
    • -
    • -
      -

      debug

      -
      public static void debug​(java.lang.Object info)
      -
      Logs the info as Debug
      -
      -
      Parameters:
      -
      info - The object to be logged
      -
      -
      -
    • -
    • -
      -

      danger

      -
      public static void danger​(java.lang.Object info)
      -
      Logs the info as Danger
      -
      -
      Parameters:
      -
      info - The object to be logged
      -
      -
      -
    • -
    • -
      -

      normal

      -
      public static void normal​(java.lang.Object info)
      -
      Logs the info as Normal
      -
      -
      Parameters:
      -
      info - The object to be logged
      -
      -
      -
    • -
    • -
      -

      success

      -
      public static void success​(java.lang.Object info)
      -
      Logs the info as Success
      -
      -
      Parameters:
      -
      info - The object to be logged
      -
      -
      -
    • -
    -
    -
  • -
-
- -
- -
-
- - diff --git a/docs/javadocs/es/cadox8/xenapi/utils/Utils.html b/docs/javadocs/es/cadox8/xenapi/utils/Utils.html deleted file mode 100644 index 97ffe24..0000000 --- a/docs/javadocs/es/cadox8/xenapi/utils/Utils.html +++ /dev/null @@ -1,219 +0,0 @@ - - - - - -Utils - - - - - - - - - - - - - - -
- -
-
- -
- -

Class Utils

-
-
java.lang.Object -
es.cadox8.xenapi.utils.Utils
-
-
-
-
public class Utils
-extends java.lang.Object
-
-
-
    - -
  • -
    -

    Constructor Summary

    -
    - - - - - - - - - - - - - - -
    Constructors
    ConstructorDescription
    Utils() 
    -
    -
    -
  • - -
  • -
    -

    Method Summary

    -
    -
    -
    - - - - - - - - - - - - - - - -
    Modifier and TypeMethodDescription
    static java.lang.StringtoString​(@NonNull java.io.InputStream in) 
    -
    -
    -
    -

    Methods inherited from class java.lang.Object

    -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    -
    -
  • -
-
-
-
    - -
  • -
    -

    Constructor Details

    -
      -
    • -
      -

      Utils

      -
      public Utils()
      -
      -
    • -
    -
    -
  • - -
  • -
    -

    Method Details

    -
      -
    • -
      -

      toString

      -
      public static java.lang.String toString​(@NonNull -@NonNull java.io.InputStream in)
      -
      -
    • -
    -
    -
  • -
-
- -
- -
-
- - diff --git a/docs/javadocs/es/cadox8/xenapi/utils/package-summary.html b/docs/javadocs/es/cadox8/xenapi/utils/package-summary.html deleted file mode 100644 index 42ed5ad..0000000 --- a/docs/javadocs/es/cadox8/xenapi/utils/package-summary.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - -es.cadox8.xenapi.utils - - - - - - - - - - - - - - -
- -
-
-
-

Package es.cadox8.xenapi.utils

-
-
-
    -
  • -
    - - - - - - - - - - - - - - - - - - - - - - -
    Class Summary
    ClassDescription
    Argument 
    Log 
    Utils 
    -
    -
  • -
  • -
    - - - - - - - - - - - - - - -
    Enum Summary
    EnumDescription
    Log.LogType 
    -
    -
  • -
-
-
- -
-
- - diff --git a/docs/javadocs/es/cadox8/xenapi/utils/package-tree.html b/docs/javadocs/es/cadox8/xenapi/utils/package-tree.html deleted file mode 100644 index b71c086..0000000 --- a/docs/javadocs/es/cadox8/xenapi/utils/package-tree.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - -es.cadox8.xenapi.utils Class Hierarchy - - - - - - - - - - - - - - -
- -
-
-
-

Hierarchy For Package es.cadox8.xenapi.utils

-Package Hierarchies: - -
-
-

Class Hierarchy

-
    -
  • java.lang.Object -
      -
    • es.cadox8.xenapi.utils.Argument
    • -
    • es.cadox8.xenapi.utils.Log
    • -
    • es.cadox8.xenapi.utils.Utils
    • -
    -
  • -
-
-
-

Enum Hierarchy

-
    -
  • java.lang.Object -
      -
    • java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) - -
    • -
    -
  • -
-
-
- -
-
- - diff --git a/docs/javadocs/help-doc.html b/docs/javadocs/help-doc.html deleted file mode 100644 index 9e5dff3..0000000 --- a/docs/javadocs/help-doc.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - -API Help - - - - - - - - - - - - - - -
- -
-
-
-

How This API Document Is Organized

-
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
-
-
-

Overview

-

The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

-
-
-

Package

-

Each package has a page that contains a list of its classes and interfaces, with a summary for each. These pages may contain six categories:

-
    -
  • Interfaces
  • -
  • Classes
  • -
  • Enums
  • -
  • Exceptions
  • -
  • Errors
  • -
  • Annotation Types
  • -
-
-
-

Class or Interface

-

Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

-
    -
  • Class Inheritance Diagram
  • -
  • Direct Subclasses
  • -
  • All Known Subinterfaces
  • -
  • All Known Implementing Classes
  • -
  • Class or Interface Declaration
  • -
  • Class or Interface Description
  • -
-
-
    -
  • Nested Class Summary
  • -
  • Field Summary
  • -
  • Property Summary
  • -
  • Constructor Summary
  • -
  • Method Summary
  • -
-
-
    -
  • Field Details
  • -
  • Property Details
  • -
  • Constructor Details
  • -
  • Method Details
  • -
-

The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

-
-
-

Annotation Type

-

Each annotation type has its own separate page with the following sections:

-
    -
  • Annotation Type Declaration
  • -
  • Annotation Type Description
  • -
  • Required Element Summary
  • -
  • Optional Element Summary
  • -
  • Element Details
  • -
-
-
-

Enum

-

Each enum has its own separate page with the following sections:

-
    -
  • Enum Declaration
  • -
  • Enum Description
  • -
  • Enum Constant Summary
  • -
  • Enum Constant Details
  • -
-
-
-

Tree (Class Hierarchy)

-

There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. Classes are organized by inheritance structure starting with java.lang.Object. Interfaces do not inherit from java.lang.Object.

-
    -
  • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
  • -
  • When viewing a particular package, class or interface page, clicking on "Tree" displays the hierarchy for only that package.
  • -
-
-
-

Deprecated API

-

The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to shortcomings, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.

-
-
-

Index

-

The Index contains an alphabetic index of all classes, interfaces, constructors, methods, and fields, as well as lists of all packages and all classes.

-
-
-

Serialized Form

-

Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to those who implement rather than use the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See Also" section of the class description.

-
-
-

Constant Field Values

-

The Constant Field Values page lists the static final fields and their values.

-
-
-

Search

-

You can search for definitions of modules, packages, types, fields, methods, system properties and other terms defined in the API, using some or all of the name, optionally using "camel-case" abbreviations. For example:

-
    -
  • j.l.obj will match "java.lang.Object"
  • -
  • InpStr will match "java.io.InputStream"
  • -
  • HM.cK will match "java.util.HashMap.containsKey(Object)"
  • -
-

Refer to the Javadoc Search Specification for a full description of search features.

-
-
-This help file applies to API documentation generated by the standard doclet.
- -
-
- - diff --git a/docs/javadocs/index-files/index-1.html b/docs/javadocs/index-files/index-1.html deleted file mode 100644 index 7afd62d..0000000 --- a/docs/javadocs/index-files/index-1.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - -A-Index - - - - - - - - - - - - - - -
- -
-
-
-

Index

-
-A C D E G L M N P S T U V X 
All Classes|All Packages -

A

-
-
Argument - Class in es.cadox8.xenapi.utils
-
 
-
Argument() - Constructor for class es.cadox8.xenapi.utils.Argument
-
 
-
asString() - Method in class es.cadox8.xenapi.net.XenForoUrl
-
 
-
-A C D E G L M N P S T U V X 
All Classes|All Packages
- -
-
- - diff --git a/docs/javadocs/index-files/index-10.html b/docs/javadocs/index-files/index-10.html deleted file mode 100644 index 8e050a8..0000000 --- a/docs/javadocs/index-files/index-10.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - -S-Index - - - - - - - - - - - - - - -
- -
-
-
-

Index

-
-A C D E G L M N P S T U V X 
All Classes|All Packages -

S

-
-
setInternalXenAPI(XenAPI) - Method in class es.cadox8.xenapi.api.XenForoEntity
-
 
-
success(Object) - Static method in class es.cadox8.xenapi.utils.Log
-
-
Logs the info as Success
-
-
SUCCESS - es.cadox8.xenapi.utils.Log.LogType
-
 
-
system(Object) - Static method in class es.cadox8.xenapi.utils.Log
-
-
Logs the info as Debug System
-
-
SYSTEM - es.cadox8.xenapi.utils.Log.LogType
-
 
-
-A C D E G L M N P S T U V X 
All Classes|All Packages
- -
-
- - diff --git a/docs/javadocs/index-files/index-11.html b/docs/javadocs/index-files/index-11.html deleted file mode 100644 index db90917..0000000 --- a/docs/javadocs/index-files/index-11.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -T-Index - - - - - - - - - - - - - - -
- -
-
-
-

Index

-
-A C D E G L M N P S T U V X 
All Classes|All Packages -

T

-
-
toString(InputStream) - Static method in class es.cadox8.xenapi.utils.Utils
-
 
-
-A C D E G L M N P S T U V X 
All Classes|All Packages
- -
-
- - diff --git a/docs/javadocs/index-files/index-12.html b/docs/javadocs/index-files/index-12.html deleted file mode 100644 index d92024f..0000000 --- a/docs/javadocs/index-files/index-12.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - -U-Index - - - - - - - - - - - - - - -
- -
-
-
-

Index

-
-A C D E G L M N P S T U V X 
All Classes|All Packages -

U

-
-
UrlExpander - Class in es.cadox8.xenapi.net
-
 
-
UrlExpander() - Constructor for class es.cadox8.xenapi.net.UrlExpander
-
 
-
User - Class in es.cadox8.xenapi.api
-
-
User class
-
-
User() - Constructor for class es.cadox8.xenapi.api.User
-
 
-
Utils - Class in es.cadox8.xenapi.utils
-
 
-
Utils() - Constructor for class es.cadox8.xenapi.utils.Utils
-
 
-
-A C D E G L M N P S T U V X 
All Classes|All Packages
- -
-
- - diff --git a/docs/javadocs/index-files/index-13.html b/docs/javadocs/index-files/index-13.html deleted file mode 100644 index 20857f6..0000000 --- a/docs/javadocs/index-files/index-13.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - -V-Index - - - - - - - - - - - - - - -
- -
-
-
-

Index

-
-A C D E G L M N P S T U V X 
All Classes|All Packages -

V

-
-
valueOf(String) - Static method in enum es.cadox8.xenapi.utils.Log.LogType
-
-
Returns the enum constant of this type with the specified name.
-
-
values() - Static method in enum es.cadox8.xenapi.utils.Log.LogType
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
-A C D E G L M N P S T U V X 
All Classes|All Packages
- -
-
- - diff --git a/docs/javadocs/index-files/index-14.html b/docs/javadocs/index-files/index-14.html deleted file mode 100644 index 813452c..0000000 --- a/docs/javadocs/index-files/index-14.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - -X-Index - - - - - - - - - - - - - - -
- -
-
-
-

Index

-
-A C D E G L M N P S T U V X 
All Classes|All Packages -

X

-
-
XenAPI - Interface in es.cadox8.xenapi
-
 
-
XenAPIBuilder - Class in es.cadox8.xenapi
-
 
-
XenAPIBuilder(String, String) - Constructor for class es.cadox8.xenapi.XenAPIBuilder
-
-
Constructor for the XenAPI Builder
-
-
XenAPIBuilder(String, String, String) - Constructor for class es.cadox8.xenapi.XenAPIBuilder
-
-
Constructor for the XenAPI Builder
-
-
xenAPIService - Variable in class es.cadox8.xenapi.api.XenForoEntity
-
 
-
XenForoBadRequestException - Exception in es.cadox8.xenapi.exceptions
-
 
-
XenForoBadRequestException(String) - Constructor for exception es.cadox8.xenapi.exceptions.XenForoBadRequestException
-
 
-
XenForoBadRequestException(String, Throwable) - Constructor for exception es.cadox8.xenapi.exceptions.XenForoBadRequestException
-
 
-
XenForoBadRequestException(Throwable) - Constructor for exception es.cadox8.xenapi.exceptions.XenForoBadRequestException
-
 
-
XenForoClient - Class in es.cadox8.xenapi.net
-
 
-
XenForoClient(String) - Constructor for class es.cadox8.xenapi.net.XenForoClient
-
 
-
XenForoClient(String, String) - Constructor for class es.cadox8.xenapi.net.XenForoClient
-
 
-
XenForoClient(String, String, HttpClient) - Constructor for class es.cadox8.xenapi.net.XenForoClient
-
 
-
XenForoEntity - Class in es.cadox8.xenapi.api
-
 
-
XenForoEntity() - Constructor for class es.cadox8.xenapi.api.XenForoEntity
-
 
-
XenForoHttpException - Exception in es.cadox8.xenapi.exceptions
-
 
-
XenForoHttpException() - Constructor for exception es.cadox8.xenapi.exceptions.XenForoHttpException
-
 
-
XenForoHttpException(String) - Constructor for exception es.cadox8.xenapi.exceptions.XenForoHttpException
-
 
-
XenForoHttpException(String, Throwable) - Constructor for exception es.cadox8.xenapi.exceptions.XenForoHttpException
-
 
-
XenForoHttpException(String, Throwable, boolean, boolean) - Constructor for exception es.cadox8.xenapi.exceptions.XenForoHttpException
-
 
-
XenForoHttpException(Throwable) - Constructor for exception es.cadox8.xenapi.exceptions.XenForoHttpException
-
 
-
XenForoUrl - Class in es.cadox8.xenapi.net
-
 
-
-A C D E G L M N P S T U V X 
All Classes|All Packages
- -
-
- - diff --git a/docs/javadocs/index-files/index-2.html b/docs/javadocs/index-files/index-2.html deleted file mode 100644 index 2d75401..0000000 --- a/docs/javadocs/index-files/index-2.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - -C-Index - - - - - - - - - - - - - - -
- -
-
-
-

Index

-
-A C D E G L M N P S T U V X 
All Classes|All Packages -

C

-
-
createUrl(String, String) - Static method in class es.cadox8.xenapi.net.XenForoUrl
-
 
-
createUrlWithNoArgs(String, String) - Static method in class es.cadox8.xenapi.net.XenForoUrl
-
 
-
-A C D E G L M N P S T U V X 
All Classes|All Packages
- -
-
- - diff --git a/docs/javadocs/index-files/index-3.html b/docs/javadocs/index-files/index-3.html deleted file mode 100644 index 2e30059..0000000 --- a/docs/javadocs/index-files/index-3.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - -D-Index - - - - - - - - - - - - - - -
- -
-
-
-

Index

-
-A C D E G L M N P S T U V X 
All Classes|All Packages -

D

-
-
danger(Object) - Static method in class es.cadox8.xenapi.utils.Log
-
-
Logs the info as Danger
-
-
DANGER - es.cadox8.xenapi.utils.Log.LogType
-
 
-
debug(Object) - Static method in class es.cadox8.xenapi.utils.Log
-
-
Logs the info as Debug
-
-
DEBUG - es.cadox8.xenapi.utils.Log.LogType
-
 
-
delete(String, Class<T>, String...) - Method in class es.cadox8.xenapi.net.XenForoClient
-
 
-
-A C D E G L M N P S T U V X 
All Classes|All Packages
- -
-
- - diff --git a/docs/javadocs/index-files/index-4.html b/docs/javadocs/index-files/index-4.html deleted file mode 100644 index 92184e6..0000000 --- a/docs/javadocs/index-files/index-4.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - -E-Index - - - - - - - - - - - - - - -
- -
-
-
-

Index

-
-A C D E G L M N P S T U V X 
All Classes|All Packages -

E

-
-
es.cadox8.xenapi - package es.cadox8.xenapi
-
 
-
es.cadox8.xenapi.api - package es.cadox8.xenapi.api
-
 
-
es.cadox8.xenapi.exceptions - package es.cadox8.xenapi.exceptions
-
 
-
es.cadox8.xenapi.net - package es.cadox8.xenapi.net
-
 
-
es.cadox8.xenapi.utils - package es.cadox8.xenapi.utils
-
 
-
expandUrl(String, String...) - Static method in class es.cadox8.xenapi.net.UrlExpander
-
 
-
-A C D E G L M N P S T U V X 
All Classes|All Packages
- -
-
- - diff --git a/docs/javadocs/index-files/index-5.html b/docs/javadocs/index-files/index-5.html deleted file mode 100644 index 40f46ac..0000000 --- a/docs/javadocs/index-files/index-5.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - -G-Index - - - - - - - - - - - - - - -
- -
-
-
-

Index

-
-A C D E G L M N P S T U V X 
All Classes|All Packages -

G

-
-
get(String, Class<T>, String...) - Method in class es.cadox8.xenapi.net.XenForoClient
-
 
-
GET_ME - Static variable in class es.cadox8.xenapi.net.XenForoUrl
-
 
-
getXenAPIService() - Method in class es.cadox8.xenapi.api.XenForoEntity
-
 
-
-A C D E G L M N P S T U V X 
All Classes|All Packages
- -
-
- - diff --git a/docs/javadocs/index-files/index-6.html b/docs/javadocs/index-files/index-6.html deleted file mode 100644 index 34b1f88..0000000 --- a/docs/javadocs/index-files/index-6.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - -L-Index - - - - - - - - - - - - - - -
- -
-
-
-

Index

-
-A C D E G L M N P S T U V X 
All Classes|All Packages -

L

-
-
Launcher - Class in es.cadox8.xenapi
-
 
-
Launcher() - Constructor for class es.cadox8.xenapi.Launcher
-
 
-
Log - Class in es.cadox8.xenapi.utils
-
 
-
Log() - Constructor for class es.cadox8.xenapi.utils.Log
-
 
-
Log.LogType - Enum in es.cadox8.xenapi.utils
-
 
-
-A C D E G L M N P S T U V X 
All Classes|All Packages
- -
-
- - diff --git a/docs/javadocs/index-files/index-7.html b/docs/javadocs/index-files/index-7.html deleted file mode 100644 index 7b3b0bc..0000000 --- a/docs/javadocs/index-files/index-7.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - -M-Index - - - - - - - - - - - - - - -
- -
-
-
-

Index

-
-A C D E G L M N P S T U V X 
All Classes|All Packages -

M

-
-
main(String[]) - Static method in class es.cadox8.xenapi.Launcher
-
 
-
me() - Method in interface es.cadox8.xenapi.XenAPI
-
-
Gets the info about the current user (token user)
-
-
me() - Method in class es.cadox8.xenapi.XenAPIBuilder
-
 
-
-A C D E G L M N P S T U V X 
All Classes|All Packages
- -
-
- - diff --git a/docs/javadocs/index-files/index-8.html b/docs/javadocs/index-files/index-8.html deleted file mode 100644 index 72dd17c..0000000 --- a/docs/javadocs/index-files/index-8.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - -N-Index - - - - - - - - - - - - - - -
- -
-
-
-

Index

-
-A C D E G L M N P S T U V X 
All Classes|All Packages -

N

-
-
normal(Object) - Static method in class es.cadox8.xenapi.utils.Log
-
-
Logs the info as Normal
-
-
NORMAL - es.cadox8.xenapi.utils.Log.LogType
-
 
-
NotAuthorizedException - Exception in es.cadox8.xenapi.exceptions
-
 
-
NotAuthorizedException() - Constructor for exception es.cadox8.xenapi.exceptions.NotAuthorizedException
-
 
-
NotAuthorizedException(String) - Constructor for exception es.cadox8.xenapi.exceptions.NotAuthorizedException
-
 
-
NotAuthorizedException(String, Throwable) - Constructor for exception es.cadox8.xenapi.exceptions.NotAuthorizedException
-
 
-
NotFoundException - Exception in es.cadox8.xenapi.exceptions
-
 
-
NotFoundException(String) - Constructor for exception es.cadox8.xenapi.exceptions.NotFoundException
-
 
-
NotFoundException(String, Throwable) - Constructor for exception es.cadox8.xenapi.exceptions.NotFoundException
-
 
-
-A C D E G L M N P S T U V X 
All Classes|All Packages
- -
-
- - diff --git a/docs/javadocs/index-files/index-9.html b/docs/javadocs/index-files/index-9.html deleted file mode 100644 index 1d587a1..0000000 --- a/docs/javadocs/index-files/index-9.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - -P-Index - - - - - - - - - - - - - - -
- -
-
-
-

Index

-
-A C D E G L M N P S T U V X 
All Classes|All Packages -

P

-
-
params(Argument...) - Method in class es.cadox8.xenapi.net.XenForoUrl
-
 
-
postFileForObject(String, File, Class<T>, String...) - Method in class es.cadox8.xenapi.net.XenForoClient
-
 
-
postForObject(String, Object, Class<T>, String...) - Method in class es.cadox8.xenapi.net.XenForoClient
-
 
-
putForObject(String, Object, Class<T>, String...) - Method in class es.cadox8.xenapi.net.XenForoClient
-
 
-
-A C D E G L M N P S T U V X 
All Classes|All Packages
- -
-
- - diff --git a/docs/javadocs/index.html b/docs/javadocs/index.html deleted file mode 100644 index ab5bef4..0000000 --- a/docs/javadocs/index.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - -Overview - - - - - - - - - - - - - - -
- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Packages
PackageDescription
es.cadox8.xenapi 
es.cadox8.xenapi.api 
es.cadox8.xenapi.exceptions 
es.cadox8.xenapi.net 
es.cadox8.xenapi.utils 
-
-
- -
-
- - diff --git a/docs/javadocs/jquery-ui.overrides.css b/docs/javadocs/jquery-ui.overrides.css deleted file mode 100644 index 1abff95..0000000 --- a/docs/javadocs/jquery-ui.overrides.css +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. - * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - */ - -.ui-state-active, -.ui-widget-content .ui-state-active, -.ui-widget-header .ui-state-active, -a.ui-button:active, -.ui-button:active, -.ui-button.ui-state-active:hover { - /* Overrides the color of selection used in jQuery UI */ - background: #F8981D; -} diff --git a/docs/javadocs/member-search-index.js b/docs/javadocs/member-search-index.js deleted file mode 100644 index 6e1ee04..0000000 --- a/docs/javadocs/member-search-index.js +++ /dev/null @@ -1 +0,0 @@ -memberSearchIndex = [{"p":"es.cadox8.xenapi.utils","c":"Argument","l":"Argument()","u":"%3Cinit%3E()"},{"p":"es.cadox8.xenapi.net","c":"XenForoUrl","l":"asString()"},{"p":"es.cadox8.xenapi.net","c":"XenForoUrl","l":"createUrl(String, String)","u":"createUrl(java.lang.String,java.lang.String)"},{"p":"es.cadox8.xenapi.net","c":"XenForoUrl","l":"createUrlWithNoArgs(String, String)","u":"createUrlWithNoArgs(java.lang.String,java.lang.String)"},{"p":"es.cadox8.xenapi.utils","c":"Log.LogType","l":"DANGER"},{"p":"es.cadox8.xenapi.utils","c":"Log","l":"danger(Object)","u":"danger(java.lang.Object)"},{"p":"es.cadox8.xenapi.utils","c":"Log.LogType","l":"DEBUG"},{"p":"es.cadox8.xenapi.utils","c":"Log","l":"debug(Object)","u":"debug(java.lang.Object)"},{"p":"es.cadox8.xenapi.net","c":"XenForoClient","l":"delete(String, Class, String...)","u":"delete(java.lang.String,java.lang.Class,java.lang.String...)"},{"p":"es.cadox8.xenapi.net","c":"UrlExpander","l":"expandUrl(String, String...)","u":"expandUrl(java.lang.String,java.lang.String...)"},{"p":"es.cadox8.xenapi.net","c":"XenForoUrl","l":"GET_ME"},{"p":"es.cadox8.xenapi.net","c":"XenForoClient","l":"get(String, Class, String...)","u":"get(java.lang.String,java.lang.Class,java.lang.String...)"},{"p":"es.cadox8.xenapi.api","c":"XenForoEntity","l":"getXenAPIService()"},{"p":"es.cadox8.xenapi","c":"Launcher","l":"Launcher()","u":"%3Cinit%3E()"},{"p":"es.cadox8.xenapi.utils","c":"Log","l":"Log()","u":"%3Cinit%3E()"},{"p":"es.cadox8.xenapi","c":"Launcher","l":"main(String[])","u":"main(java.lang.String[])"},{"p":"es.cadox8.xenapi","c":"XenAPI","l":"me()"},{"p":"es.cadox8.xenapi","c":"XenAPIBuilder","l":"me()"},{"p":"es.cadox8.xenapi.utils","c":"Log.LogType","l":"NORMAL"},{"p":"es.cadox8.xenapi.utils","c":"Log","l":"normal(Object)","u":"normal(java.lang.Object)"},{"p":"es.cadox8.xenapi.exceptions","c":"NotAuthorizedException","l":"NotAuthorizedException()","u":"%3Cinit%3E()"},{"p":"es.cadox8.xenapi.exceptions","c":"NotAuthorizedException","l":"NotAuthorizedException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"es.cadox8.xenapi.exceptions","c":"NotAuthorizedException","l":"NotAuthorizedException(String, Throwable)","u":"%3Cinit%3E(java.lang.String,java.lang.Throwable)"},{"p":"es.cadox8.xenapi.exceptions","c":"NotFoundException","l":"NotFoundException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"es.cadox8.xenapi.exceptions","c":"NotFoundException","l":"NotFoundException(String, Throwable)","u":"%3Cinit%3E(java.lang.String,java.lang.Throwable)"},{"p":"es.cadox8.xenapi.net","c":"XenForoUrl","l":"params(Argument...)","u":"params(es.cadox8.xenapi.utils.Argument...)"},{"p":"es.cadox8.xenapi.net","c":"XenForoClient","l":"postFileForObject(String, File, Class, String...)","u":"postFileForObject(java.lang.String,java.io.File,java.lang.Class,java.lang.String...)"},{"p":"es.cadox8.xenapi.net","c":"XenForoClient","l":"postForObject(String, Object, Class, String...)","u":"postForObject(java.lang.String,java.lang.Object,java.lang.Class,java.lang.String...)"},{"p":"es.cadox8.xenapi.net","c":"XenForoClient","l":"putForObject(String, Object, Class, String...)","u":"putForObject(java.lang.String,java.lang.Object,java.lang.Class,java.lang.String...)"},{"p":"es.cadox8.xenapi.api","c":"XenForoEntity","l":"setInternalXenAPI(XenAPI)","u":"setInternalXenAPI(es.cadox8.xenapi.XenAPI)"},{"p":"es.cadox8.xenapi.utils","c":"Log.LogType","l":"SUCCESS"},{"p":"es.cadox8.xenapi.utils","c":"Log","l":"success(Object)","u":"success(java.lang.Object)"},{"p":"es.cadox8.xenapi.utils","c":"Log.LogType","l":"SYSTEM"},{"p":"es.cadox8.xenapi.utils","c":"Log","l":"system(Object)","u":"system(java.lang.Object)"},{"p":"es.cadox8.xenapi.utils","c":"Utils","l":"toString(InputStream)","u":"toString(java.io.InputStream)"},{"p":"es.cadox8.xenapi.net","c":"UrlExpander","l":"UrlExpander()","u":"%3Cinit%3E()"},{"p":"es.cadox8.xenapi.api","c":"User","l":"User()","u":"%3Cinit%3E()"},{"p":"es.cadox8.xenapi.utils","c":"Utils","l":"Utils()","u":"%3Cinit%3E()"},{"p":"es.cadox8.xenapi.utils","c":"Log.LogType","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"es.cadox8.xenapi.utils","c":"Log.LogType","l":"values()"},{"p":"es.cadox8.xenapi","c":"XenAPIBuilder","l":"XenAPIBuilder(String, String)","u":"%3Cinit%3E(java.lang.String,java.lang.String)"},{"p":"es.cadox8.xenapi","c":"XenAPIBuilder","l":"XenAPIBuilder(String, String, String)","u":"%3Cinit%3E(java.lang.String,java.lang.String,java.lang.String)"},{"p":"es.cadox8.xenapi.api","c":"XenForoEntity","l":"xenAPIService"},{"p":"es.cadox8.xenapi.exceptions","c":"XenForoBadRequestException","l":"XenForoBadRequestException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"es.cadox8.xenapi.exceptions","c":"XenForoBadRequestException","l":"XenForoBadRequestException(String, Throwable)","u":"%3Cinit%3E(java.lang.String,java.lang.Throwable)"},{"p":"es.cadox8.xenapi.exceptions","c":"XenForoBadRequestException","l":"XenForoBadRequestException(Throwable)","u":"%3Cinit%3E(java.lang.Throwable)"},{"p":"es.cadox8.xenapi.net","c":"XenForoClient","l":"XenForoClient(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"es.cadox8.xenapi.net","c":"XenForoClient","l":"XenForoClient(String, String)","u":"%3Cinit%3E(java.lang.String,java.lang.String)"},{"p":"es.cadox8.xenapi.net","c":"XenForoClient","l":"XenForoClient(String, String, HttpClient)","u":"%3Cinit%3E(java.lang.String,java.lang.String,org.apache.http.client.HttpClient)"},{"p":"es.cadox8.xenapi.api","c":"XenForoEntity","l":"XenForoEntity()","u":"%3Cinit%3E()"},{"p":"es.cadox8.xenapi.exceptions","c":"XenForoHttpException","l":"XenForoHttpException()","u":"%3Cinit%3E()"},{"p":"es.cadox8.xenapi.exceptions","c":"XenForoHttpException","l":"XenForoHttpException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"es.cadox8.xenapi.exceptions","c":"XenForoHttpException","l":"XenForoHttpException(String, Throwable)","u":"%3Cinit%3E(java.lang.String,java.lang.Throwable)"},{"p":"es.cadox8.xenapi.exceptions","c":"XenForoHttpException","l":"XenForoHttpException(String, Throwable, boolean, boolean)","u":"%3Cinit%3E(java.lang.String,java.lang.Throwable,boolean,boolean)"},{"p":"es.cadox8.xenapi.exceptions","c":"XenForoHttpException","l":"XenForoHttpException(Throwable)","u":"%3Cinit%3E(java.lang.Throwable)"}];updateSearchResults(); \ No newline at end of file diff --git a/docs/javadocs/module-search-index.js b/docs/javadocs/module-search-index.js deleted file mode 100644 index 0d59754..0000000 --- a/docs/javadocs/module-search-index.js +++ /dev/null @@ -1 +0,0 @@ -moduleSearchIndex = [];updateSearchResults(); \ No newline at end of file diff --git a/docs/javadocs/overview-summary.html b/docs/javadocs/overview-summary.html deleted file mode 100644 index 57a76d3..0000000 --- a/docs/javadocs/overview-summary.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - -Generated Documentation (Untitled) - - - - - - - - - - -
- -

index.html

-
- - diff --git a/docs/javadocs/overview-tree.html b/docs/javadocs/overview-tree.html deleted file mode 100644 index a30f841..0000000 --- a/docs/javadocs/overview-tree.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - -Class Hierarchy - - - - - - - - - - - - - - -
- -
-
-
-

Hierarchy For All Packages

-Package Hierarchies: - -
-
-

Class Hierarchy

- -
-
-

Interface Hierarchy

- -
-
-

Enum Hierarchy

-
    -
  • java.lang.Object -
      -
    • java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) - -
    • -
    -
  • -
-
-
- -
-
- - diff --git a/docs/javadocs/package-search-index.js b/docs/javadocs/package-search-index.js deleted file mode 100644 index 56ca2f2..0000000 --- a/docs/javadocs/package-search-index.js +++ /dev/null @@ -1 +0,0 @@ -packageSearchIndex = [{"l":"All Packages","u":"allpackages-index.html"},{"l":"es.cadox8.xenapi"},{"l":"es.cadox8.xenapi.api"},{"l":"es.cadox8.xenapi.exceptions"},{"l":"es.cadox8.xenapi.net"},{"l":"es.cadox8.xenapi.utils"}];updateSearchResults(); \ No newline at end of file diff --git a/docs/javadocs/resources/glass.png b/docs/javadocs/resources/glass.png deleted file mode 100644 index a7f591f..0000000 Binary files a/docs/javadocs/resources/glass.png and /dev/null differ diff --git a/docs/javadocs/resources/x.png b/docs/javadocs/resources/x.png deleted file mode 100644 index 30548a7..0000000 Binary files a/docs/javadocs/resources/x.png and /dev/null differ diff --git a/docs/javadocs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png b/docs/javadocs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png deleted file mode 100644 index 34abd18..0000000 Binary files a/docs/javadocs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png and /dev/null differ diff --git a/docs/javadocs/script-dir/images/ui-bg_glass_65_dadada_1x400.png b/docs/javadocs/script-dir/images/ui-bg_glass_65_dadada_1x400.png deleted file mode 100644 index f058a93..0000000 Binary files a/docs/javadocs/script-dir/images/ui-bg_glass_65_dadada_1x400.png and /dev/null differ diff --git a/docs/javadocs/script-dir/images/ui-bg_glass_75_dadada_1x400.png b/docs/javadocs/script-dir/images/ui-bg_glass_75_dadada_1x400.png deleted file mode 100644 index 2ce04c1..0000000 Binary files a/docs/javadocs/script-dir/images/ui-bg_glass_75_dadada_1x400.png and /dev/null differ diff --git a/docs/javadocs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png b/docs/javadocs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png deleted file mode 100644 index a90afb8..0000000 Binary files a/docs/javadocs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png and /dev/null differ diff --git a/docs/javadocs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png b/docs/javadocs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png deleted file mode 100644 index dbe091f..0000000 Binary files a/docs/javadocs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png and /dev/null differ diff --git a/docs/javadocs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/docs/javadocs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png deleted file mode 100644 index 5dc3593..0000000 Binary files a/docs/javadocs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png and /dev/null differ diff --git a/docs/javadocs/script-dir/images/ui-icons_222222_256x240.png b/docs/javadocs/script-dir/images/ui-icons_222222_256x240.png deleted file mode 100644 index e723e17..0000000 Binary files a/docs/javadocs/script-dir/images/ui-icons_222222_256x240.png and /dev/null differ diff --git a/docs/javadocs/script-dir/images/ui-icons_2e83ff_256x240.png b/docs/javadocs/script-dir/images/ui-icons_2e83ff_256x240.png deleted file mode 100644 index 1f5f497..0000000 Binary files a/docs/javadocs/script-dir/images/ui-icons_2e83ff_256x240.png and /dev/null differ diff --git a/docs/javadocs/script-dir/images/ui-icons_454545_256x240.png b/docs/javadocs/script-dir/images/ui-icons_454545_256x240.png deleted file mode 100644 index 618f5b0..0000000 Binary files a/docs/javadocs/script-dir/images/ui-icons_454545_256x240.png and /dev/null differ diff --git a/docs/javadocs/script-dir/images/ui-icons_888888_256x240.png b/docs/javadocs/script-dir/images/ui-icons_888888_256x240.png deleted file mode 100644 index ee5e33f..0000000 Binary files a/docs/javadocs/script-dir/images/ui-icons_888888_256x240.png and /dev/null differ diff --git a/docs/javadocs/script-dir/images/ui-icons_cd0a0a_256x240.png b/docs/javadocs/script-dir/images/ui-icons_cd0a0a_256x240.png deleted file mode 100644 index 7e8ebc1..0000000 Binary files a/docs/javadocs/script-dir/images/ui-icons_cd0a0a_256x240.png and /dev/null differ diff --git a/docs/javadocs/script-dir/jquery-3.5.1.min.js b/docs/javadocs/script-dir/jquery-3.5.1.min.js deleted file mode 100644 index b061403..0000000 --- a/docs/javadocs/script-dir/jquery-3.5.1.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0a;a++)for(s in o[a])n=o[a][s],o[a].hasOwnProperty(s)&&void 0!==n&&(e[s]=t.isPlainObject(n)?t.isPlainObject(e[s])?t.widget.extend({},e[s],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,s){var n=s.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=i.call(arguments,1),l=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(l=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(l=i&&i.jquery?l.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):l=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new s(o,this))})),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(i,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=e++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),i),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var l=s.match(/^([\w:-]*)\s*(.*)$/),h=l[1]+o.eventNamespace,c=l[2];c?n.on(h,c,r):i.on(h,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,l=/top|center|bottom/,h=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};h>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),l.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,l=n-r,h=r+e.collisionWidth-a-n;e.collisionWidth>a?l>0&&0>=h?(i=t.left+l+e.collisionWidth-a-n,t.left+=l-i):t.left=h>0&&0>=l?n:l>h?n+a-e.collisionWidth:n:l>0?t.left+=l:h>0?t.left-=h:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,l=n-r,h=r+e.collisionHeight-a-n;e.collisionHeight>a?l>0&&0>=h?(i=t.top+l+e.collisionHeight-a-n,t.top+=l-i):t.top=h>0&&0>=l?n:l>h?n+a-e.collisionHeight:n:l>0?t.top+=l:h>0?t.top-=h:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,l=n.isWindow?n.scrollLeft:n.offset.left,h=t.left-e.collisionPosition.marginLeft,c=h-l,u=h+e.collisionWidth-r-l,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-l,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,l=n.isWindow?n.scrollTop:n.offset.top,h=t.top-e.collisionPosition.marginTop,c=h-l,u=h+e.collisionHeight-r-l,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-l,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.widget("ui.menu",{version:"1.12.1",defaultElement:"
    ",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,l=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=l.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=l.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n;this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("
      ").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("
      ").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("
      ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(t("
      ").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("
      ").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete}); \ No newline at end of file diff --git a/docs/javadocs/script-dir/jquery-ui.structure.min.css b/docs/javadocs/script-dir/jquery-ui.structure.min.css deleted file mode 100644 index e880892..0000000 --- a/docs/javadocs/script-dir/jquery-ui.structure.min.css +++ /dev/null @@ -1,5 +0,0 @@ -/*! jQuery UI - v1.12.1 - 2018-12-06 -* http://jqueryui.com -* Copyright jQuery Foundation and other contributors; Licensed MIT */ - -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0} \ No newline at end of file diff --git a/docs/javadocs/script.js b/docs/javadocs/script.js deleted file mode 100644 index bc21e45..0000000 --- a/docs/javadocs/script.js +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved. - * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - */ - -var moduleSearchIndex; -var packageSearchIndex; -var typeSearchIndex; -var memberSearchIndex; -var tagSearchIndex; -function loadScripts(doc, tag) { - createElem(doc, tag, 'search.js'); - - createElem(doc, tag, 'module-search-index.js'); - createElem(doc, tag, 'package-search-index.js'); - createElem(doc, tag, 'type-search-index.js'); - createElem(doc, tag, 'member-search-index.js'); - createElem(doc, tag, 'tag-search-index.js'); -} - -function createElem(doc, tag, path) { - var script = doc.createElement(tag); - var scriptElement = doc.getElementsByTagName(tag)[0]; - script.src = pathtoroot + path; - scriptElement.parentNode.insertBefore(script, scriptElement); -} - -function show(type) { - count = 0; - for (var key in data) { - var row = document.getElementById(key); - if ((data[key] & type) !== 0) { - row.style.display = ''; - row.className = (count++ % 2) ? rowColor : altColor; - } - else - row.style.display = 'none'; - } - updateTabs(type); -} - -function updateTabs(type) { - var firstRow = document.getElementById(Object.keys(data)[0]); - var table = firstRow.closest('table'); - for (var value in tabs) { - var tab = document.getElementById(tabs[value][0]); - if (value == type) { - tab.className = activeTableTab; - tab.innerHTML = tabs[value][1]; - tab.setAttribute('aria-selected', true); - tab.setAttribute('tabindex',0); - table.setAttribute('aria-labelledby', tabs[value][0]); - } - else { - tab.className = tableTab; - tab.setAttribute('aria-selected', false); - tab.setAttribute('tabindex',-1); - tab.setAttribute('onclick', "show("+ value + ")"); - tab.innerHTML = tabs[value][1]; - } - } -} - -function switchTab(e) { - if (e.keyCode == 37 || e.keyCode == 38) { - $("[aria-selected=true]").prev().click().focus(); - e.preventDefault(); - } - if (e.keyCode == 39 || e.keyCode == 40) { - $("[aria-selected=true]").next().click().focus(); - e.preventDefault(); - } -} - -var updateSearchResults = function() {}; - -function indexFilesLoaded() { - return moduleSearchIndex - && packageSearchIndex - && typeSearchIndex - && memberSearchIndex - && tagSearchIndex; -} diff --git a/docs/javadocs/search.js b/docs/javadocs/search.js deleted file mode 100644 index 246cfd7..0000000 --- a/docs/javadocs/search.js +++ /dev/null @@ -1,378 +0,0 @@ -/* - * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved. - * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - */ - -var noResult = {l: "No results found"}; -var loading = {l: "Loading search index..."}; -var catModules = "Modules"; -var catPackages = "Packages"; -var catTypes = "Types"; -var catMembers = "Members"; -var catSearchTags = "SearchTags"; -var highlight = "$&"; -var searchPattern = ""; -var RANKING_THRESHOLD = 2; -var NO_MATCH = 0xffff; -var MAX_RESULTS_PER_CATEGORY = 500; -var UNNAMED = ""; -function escapeHtml(str) { - return str.replace(//g, ">"); -} -function getHighlightedText(item, matcher) { - var escapedItem = escapeHtml(item); - return escapedItem.replace(matcher, highlight); -} -function getURLPrefix(ui) { - var urlPrefix=""; - var slash = "/"; - if (ui.item.category === catModules) { - return ui.item.l + slash; - } else if (ui.item.category === catPackages && ui.item.m) { - return ui.item.m + slash; - } else if (ui.item.category === catTypes || ui.item.category === catMembers) { - if (ui.item.m) { - urlPrefix = ui.item.m + slash; - } else { - $.each(packageSearchIndex, function(index, item) { - if (item.m && ui.item.p === item.l) { - urlPrefix = item.m + slash; - } - }); - } - return urlPrefix; - } - return urlPrefix; -} -function makeCamelCaseRegex(term) { - var pattern = ""; - var isWordToken = false; - term.replace(/,\s*/g, ", ").trim().split(/\s+/).forEach(function(w, index) { - if (index > 0) { - // whitespace between identifiers is significant - pattern += (isWordToken && /^\w/.test(w)) ? "\\s+" : "\\s*"; - } - var tokens = w.split(/(?=[A-Z,.()<>[\/])/); - for (var i = 0; i < tokens.length; i++) { - var s = tokens[i]; - if (s === "") { - continue; - } - pattern += $.ui.autocomplete.escapeRegex(s); - isWordToken = /\w$/.test(s); - if (isWordToken) { - pattern += "([a-z0-9_$<>\\[\\]]*?)"; - } - } - }); - return pattern; -} -function createMatcher(pattern, flags) { - var isCamelCase = /[A-Z]/.test(pattern); - return new RegExp(pattern, flags + (isCamelCase ? "" : "i")); -} -var watermark = 'Search'; -$(function() { - $("#search").val(''); - $("#search").prop("disabled", false); - $("#reset").prop("disabled", false); - $("#search").val(watermark).addClass('watermark'); - $("#search").blur(function() { - if ($(this).val().length == 0) { - $(this).val(watermark).addClass('watermark'); - } - }); - $("#search").on('click keydown paste', function() { - if ($(this).val() == watermark) { - $(this).val('').removeClass('watermark'); - } - }); - $("#reset").click(function() { - $("#search").val(''); - $("#search").focus(); - }); - $("#search").focus(); - $("#search")[0].setSelectionRange(0, 0); -}); -$.widget("custom.catcomplete", $.ui.autocomplete, { - _create: function() { - this._super(); - this.widget().menu("option", "items", "> :not(.ui-autocomplete-category)"); - }, - _renderMenu: function(ul, items) { - var rMenu = this; - var currentCategory = ""; - rMenu.menu.bindings = $(); - $.each(items, function(index, item) { - var li; - if (item.category && item.category !== currentCategory) { - ul.append("
    • " + item.category + "
    • "); - currentCategory = item.category; - } - li = rMenu._renderItemData(ul, item); - if (item.category) { - li.attr("aria-label", item.category + " : " + item.l); - li.attr("class", "result-item"); - } else { - li.attr("aria-label", item.l); - li.attr("class", "result-item"); - } - }); - }, - _renderItem: function(ul, item) { - var label = ""; - var matcher = createMatcher(escapeHtml(searchPattern), "g"); - if (item.category === catModules) { - label = getHighlightedText(item.l, matcher); - } else if (item.category === catPackages) { - label = getHighlightedText(item.l, matcher); - } else if (item.category === catTypes) { - label = (item.p && item.p !== UNNAMED) - ? getHighlightedText(item.p + "." + item.l, matcher) - : getHighlightedText(item.l, matcher); - } else if (item.category === catMembers) { - label = (item.p && item.p !== UNNAMED) - ? getHighlightedText(item.p + "." + item.c + "." + item.l, matcher) - : getHighlightedText(item.c + "." + item.l, matcher); - } else if (item.category === catSearchTags) { - label = getHighlightedText(item.l, matcher); - } else { - label = item.l; - } - var li = $("
    • ").appendTo(ul); - var div = $("
      ").appendTo(li); - if (item.category === catSearchTags) { - if (item.d) { - div.html(label + " (" + item.h + ")
      " - + item.d + "
      "); - } else { - div.html(label + " (" + item.h + ")"); - } - } else { - if (item.m) { - div.html(item.m + "/" + label); - } else { - div.html(label); - } - } - return li; - } -}); -function rankMatch(match, category) { - if (!match) { - return NO_MATCH; - } - var index = match.index; - var input = match.input; - var leftBoundaryMatch = 2; - var periferalMatch = 0; - var delta = 0; - // make sure match is anchored on a left word boundary - if (index === 0 || /\W/.test(input[index - 1]) || "_" === input[index - 1] || "_" === input[index]) { - leftBoundaryMatch = 0; - } else if (input[index] === input[index].toUpperCase() && !/^[A-Z0-9_$]+$/.test(input)) { - leftBoundaryMatch = 1; - } - var matchEnd = index + match[0].length; - var leftParen = input.indexOf("("); - // exclude peripheral matches - if (category !== catModules && category !== catSearchTags) { - var endOfName = leftParen > -1 ? leftParen : input.length; - var delim = category === catPackages ? "/" : "."; - if (leftParen > -1 && leftParen < index) { - periferalMatch += 2; - } else if (input.lastIndexOf(delim, endOfName) >= matchEnd) { - periferalMatch += 2; - } - } - for (var i = 1; i < match.length; i++) { - // lower ranking if parts of the name are missing - if (match[i]) - delta += match[i].length; - } - if (category === catTypes) { - // lower ranking if a type name contains unmatched camel-case parts - if (/[A-Z]/.test(input.substring(matchEnd))) - delta += 5; - if (/[A-Z]/.test(input.substring(0, index))) - delta += 5; - } - return leftBoundaryMatch + periferalMatch + (delta / 200); - -} -function doSearch(request, response) { - var result = []; - var newResults = []; - - searchPattern = makeCamelCaseRegex(request.term); - if (searchPattern === "") { - return this.close(); - } - var camelCaseMatcher = createMatcher(searchPattern, ""); - var boundaryMatcher = createMatcher("\\b" + searchPattern, ""); - - function concatResults(a1, a2) { - a2.sort(function(e1, e2) { - return e1.ranking - e2.ranking; - }); - a1 = a1.concat(a2.map(function(e) { return e.item; })); - a2.length = 0; - return a1; - } - - if (moduleSearchIndex) { - $.each(moduleSearchIndex, function(index, item) { - item.category = catModules; - var ranking = rankMatch(boundaryMatcher.exec(item.l), catModules); - if (ranking < RANKING_THRESHOLD) { - newResults.push({ ranking: ranking, item: item }); - } - return newResults.length < MAX_RESULTS_PER_CATEGORY; - }); - result = concatResults(result, newResults); - } - if (packageSearchIndex) { - $.each(packageSearchIndex, function(index, item) { - item.category = catPackages; - var name = (item.m && request.term.indexOf("/") > -1) - ? (item.m + "/" + item.l) - : item.l; - var ranking = rankMatch(boundaryMatcher.exec(name), catPackages); - if (ranking < RANKING_THRESHOLD) { - newResults.push({ ranking: ranking, item: item }); - } - return newResults.length < MAX_RESULTS_PER_CATEGORY; - }); - result = concatResults(result, newResults); - } - if (typeSearchIndex) { - $.each(typeSearchIndex, function(index, item) { - item.category = catTypes; - var name = request.term.indexOf(".") > -1 - ? item.p + "." + item.l - : item.l; - var ranking = rankMatch(camelCaseMatcher.exec(name), catTypes); - if (ranking < RANKING_THRESHOLD) { - newResults.push({ ranking: ranking, item: item }); - } - return newResults.length < MAX_RESULTS_PER_CATEGORY; - }); - result = concatResults(result, newResults); - } - if (memberSearchIndex) { - $.each(memberSearchIndex, function(index, item) { - item.category = catMembers; - var name = request.term.indexOf(".") > -1 - ? item.p + "." + item.c + "." + item.l - : item.l; - var ranking = rankMatch(camelCaseMatcher.exec(name), catMembers); - if (ranking < RANKING_THRESHOLD) { - newResults.push({ ranking: ranking, item: item }); - } - return newResults.length < MAX_RESULTS_PER_CATEGORY; - }); - result = concatResults(result, newResults); - } - if (tagSearchIndex) { - $.each(tagSearchIndex, function(index, item) { - item.category = catSearchTags; - var ranking = rankMatch(boundaryMatcher.exec(item.l), catSearchTags); - if (ranking < RANKING_THRESHOLD) { - newResults.push({ ranking: ranking, item: item }); - } - return newResults.length < MAX_RESULTS_PER_CATEGORY; - }); - result = concatResults(result, newResults); - } - if (!indexFilesLoaded()) { - updateSearchResults = function() { - doSearch(request, response); - } - result.unshift(loading); - } else { - updateSearchResults = function() {}; - } - response(result); -} -$(function() { - $("#search").catcomplete({ - minLength: 1, - delay: 300, - source: doSearch, - response: function(event, ui) { - if (!ui.content.length) { - ui.content.push(noResult); - } else { - $("#search").empty(); - } - }, - autoFocus: true, - focus: function(event, ui) { - return false; - }, - position: { - collision: "flip" - }, - select: function(event, ui) { - if (ui.item.category) { - var url = getURLPrefix(ui); - if (ui.item.category === catModules) { - url += "module-summary.html"; - } else if (ui.item.category === catPackages) { - if (ui.item.u) { - url = ui.item.u; - } else { - url += ui.item.l.replace(/\./g, '/') + "/package-summary.html"; - } - } else if (ui.item.category === catTypes) { - if (ui.item.u) { - url = ui.item.u; - } else if (ui.item.p === UNNAMED) { - url += ui.item.l + ".html"; - } else { - url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.l + ".html"; - } - } else if (ui.item.category === catMembers) { - if (ui.item.p === UNNAMED) { - url += ui.item.c + ".html" + "#"; - } else { - url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.c + ".html" + "#"; - } - if (ui.item.u) { - url += ui.item.u; - } else { - url += ui.item.l; - } - } else if (ui.item.category === catSearchTags) { - url += ui.item.u; - } - if (top !== window) { - parent.classFrame.location = pathtoroot + url; - } else { - window.location.href = pathtoroot + url; - } - $("#search").focus(); - } - } - }); -}); diff --git a/docs/javadocs/serialized-form.html b/docs/javadocs/serialized-form.html deleted file mode 100644 index 876d927..0000000 --- a/docs/javadocs/serialized-form.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - -Serialized Form - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Serialized Form

      -
      - -
      - -
      -
      - - diff --git a/docs/javadocs/stylesheet.css b/docs/javadocs/stylesheet.css deleted file mode 100644 index 79a9d97..0000000 --- a/docs/javadocs/stylesheet.css +++ /dev/null @@ -1,792 +0,0 @@ -/* - * Javadoc style sheet - */ - -@import url('resources/fonts/dejavu.css'); - -/* - * Styles for individual HTML elements. - * - * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular - * HTML element throughout the page. - */ - -body { - background-color:#ffffff; - color:#353833; - font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size:14px; - margin:0; - padding:0; - height:100%; - width:100%; -} -iframe { - margin:0; - padding:0; - height:100%; - width:100%; - overflow-y:scroll; - border:none; -} -a:link, a:visited { - text-decoration:none; - color:#4A6782; -} -a[href]:hover, a[href]:focus { - text-decoration:none; - color:#bb7a2a; -} -a[name] { - color:#353833; -} -pre { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; -} -h1 { - font-size:20px; -} -h2 { - font-size:18px; -} -h3 { - font-size:16px; -} -h4 { - font-size:13px; -} -h5 { - font-size:12px; -} -h6 { - font-size:11px; -} -ul { - list-style-type:disc; -} -code, tt { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; - padding-top:4px; - margin-top:8px; - line-height:1.4em; -} -dt code { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; - padding-top:4px; -} -table tr td dt code { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; - vertical-align:top; - padding-top:4px; -} -sup { - font-size:8px; -} -button { - font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size: 14px; -} -/* - * Styles for HTML generated by javadoc. - * - * These are style classes that are used by the standard doclet to generate HTML documentation. - */ - -/* - * Styles for document title and copyright. - */ -.clear { - clear:both; - height:0px; - overflow:hidden; -} -.about-language { - float:right; - padding:0px 21px; - font-size:11px; - z-index:200; - margin-top:-9px; -} -.legal-copy { - margin-left:.5em; -} -.tab { - background-color:#0066FF; - color:#ffffff; - padding:8px; - width:5em; - font-weight:bold; -} -/* - * Styles for navigation bar. - */ -@media screen { - .flex-box { - position:fixed; - display:flex; - flex-direction:column; - height: 100%; - width: 100%; - } - .flex-header { - flex: 0 0 auto; - } - .flex-content { - flex: 1 1 auto; - overflow-y: auto; - } -} -.top-nav { - background-color:#4D7A97; - color:#FFFFFF; - float:left; - padding:0; - width:100%; - clear:right; - height:2.8em; - padding-top:10px; - overflow:hidden; - font-size:12px; -} -.bottom-nav { - margin-top:10px; - background-color:#4D7A97; - color:#FFFFFF; - float:left; - padding:0; - width:100%; - clear:right; - height:2.8em; - padding-top:10px; - overflow:hidden; - font-size:12px; -} -.sub-nav { - background-color:#dee3e9; - float:left; - width:100%; - overflow:hidden; - font-size:12px; -} -.sub-nav div { - clear:left; - float:left; - padding:0 0 5px 6px; - text-transform:uppercase; -} -.sub-nav .nav-list { - padding-top:5px; -} -ul.nav-list, ul.sub-nav-list { - float:left; - margin:0 25px 0 0; - padding:0; -} -ul.nav-list li{ - list-style:none; - float:left; - padding: 5px 6px; - text-transform:uppercase; -} -.sub-nav .nav-list-search { - float:right; - margin:0 0 0 0; - padding:5px 6px; - clear:none; -} -.nav-list-search label { - position:relative; - right:-16px; -} -ul.sub-nav-list li { - list-style:none; - float:left; - padding-top:10px; -} -.top-nav a:link, .top-nav a:active, .top-nav a:visited, .bottom-nav a:link, .bottom-nav a:active, .bottom-nav a:visited { - color:#FFFFFF; - text-decoration:none; - text-transform:uppercase; -} -.top-nav a:hover, .bottom-nav a:hover { - text-decoration:none; - color:#bb7a2a; - text-transform:uppercase; -} -.nav-bar-cell1-rev { - background-color:#F8981D; - color:#253441; - margin: auto 5px; -} -.skip-nav { - position:absolute; - top:auto; - left:-9999px; - overflow:hidden; -} -/* - * Hide navigation links and search box in print layout - */ -@media print { - ul.nav-list, div.sub-nav { - display:none; - } -} -/* - * Styles for page header and footer. - */ -.title { - color:#2c4557; - margin:10px 0; -} -.sub-title { - margin:5px 0 0 0; -} -.header ul { - margin:0 0 15px 0; - padding:0; -} -.header ul li, .footer ul li { - list-style:none; - font-size:13px; -} -/* - * Styles for headings. - */ -body.class-declaration-page .summary h2, -body.class-declaration-page .details h2, -body.class-use-page h2, -body.module-declaration-page .block-list h2 { - font-style: italic; - padding:0; - margin:15px 0; -} -body.class-declaration-page .summary h3, -body.class-declaration-page .details h3, -body.class-declaration-page .summary .inherited-list h2 { - background-color:#dee3e9; - border:1px solid #d0d9e0; - margin:0 0 6px -8px; - padding:7px 5px; -} -/* - * Styles for page layout containers. - */ -main { - clear:both; - padding:10px 20px; - position:relative; -} -dl.notes > dt { - font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size:12px; - font-weight:bold; - margin:10px 0 0 0; - color:#4E4E4E; -} -dl.notes > dd { - margin:5px 0 10px 0px; - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; -} -dl.name-value > dt { - margin-left:1px; - font-size:1.1em; - display:inline; - font-weight:bold; -} -dl.name-value > dd { - margin:0 0 0 1px; - font-size:1.1em; - display:inline; -} -/* - * Styles for lists. - */ -li.circle { - list-style:circle; -} -ul.horizontal li { - display:inline; - font-size:0.9em; -} -div.inheritance { - margin:0; - padding:0; -} -div.inheritance div.inheritance { - margin-left:2em; -} -ul.block-list, -ul.details-list, -ul.member-list, -ul.summary-list { - margin:10px 0 10px 0; - padding:0; -} -ul.block-list > li, -ul.details-list > li, -ul.member-list > li, -ul.summary-list > li { - list-style:none; - margin-bottom:15px; - line-height:1.4; -} -table tr td dl, table tr td dl dt, table tr td dl dd { - margin-top:0; - margin-bottom:1px; -} -/* - * Styles for tables. - */ -.overview-summary table, .member-summary table, .type-summary table, .use-summary table, .constants-summary table, .deprecated-summary table, -.requires-summary table, .packages-summary table, .provides-summary table, .uses-summary table, .system-properties-summary table { - width:100%; - border-spacing:0; - border-left:1px solid #EEE; - border-right:1px solid #EEE; - border-bottom:1px solid #EEE; -} -.overview-summary table, .member-summary table, .requires-summary table, .packages-summary table, -.provides-summary table, .uses-summary table, .system-properties-summary table { - padding:0px; -} -.overview-summary caption, .member-summary caption, .type-summary caption, -.use-summary caption, .constants-summary caption, .deprecated-summary caption, -.requires-summary caption, .packages-summary caption, .provides-summary caption, -.uses-summary caption, .system-properties-summary caption { - position:relative; - text-align:left; - background-repeat:no-repeat; - color:#253441; - font-weight:bold; - clear:none; - overflow:hidden; - padding:0px; - padding-top:10px; - padding-left:1px; - margin:0px; - white-space:pre; -} -.constants-summary caption a:link, .constants-summary caption a:visited, -.use-summary caption a:link, .use-summary caption a:visited { - color:#1f389c; -} -.overview-summary caption a:link, .member-summary caption a:link, .type-summary caption a:link, -.deprecated-summary caption a:link, -.requires-summary caption a:link, .packages-summary caption a:link, .provides-summary caption a:link, -.uses-summary caption a:link, -.overview-summary caption a:hover, .member-summary caption a:hover, .type-summary caption a:hover, -.use-summary caption a:hover, .constants-summary caption a:hover, .deprecated-summary caption a:hover, -.requires-summary caption a:hover, .packages-summary caption a:hover, .provides-summary caption a:hover, -.uses-summary caption a:hover, -.overview-summary caption a:active, .member-summary caption a:active, .type-summary caption a:active, -.use-summary caption a:active, .constants-summary caption a:active, .deprecated-summary caption a:active, -.requires-summary caption a:active, .packages-summary caption a:active, .provides-summary caption a:active, -.uses-summary caption a:active, -.overview-summary caption a:visited, .member-summary caption a:visited, .type-summary caption a:visited, -.deprecated-summary caption a:visited, -.requires-summary caption a:visited, .packages-summary caption a:visited, .provides-summary caption a:visited, -.uses-summary caption a:visited { - color:#FFFFFF; -} -.overview-summary caption span, .member-summary caption span, .type-summary caption span, -.use-summary caption span, .constants-summary caption span, .deprecated-summary caption span, -.requires-summary caption span, .packages-summary caption span, .provides-summary caption span, -.uses-summary caption span, .system-properties-summary caption span { - white-space:nowrap; - padding-top:5px; - padding-left:12px; - padding-right:12px; - padding-bottom:7px; - display:inline-block; - float:left; - background-color:#F8981D; - border: none; - height:16px; -} - -div.table-tabs > button { - border: none; - cursor: pointer; - padding: 5px 12px 7px 12px; - font-weight: bold; - margin-right: 3px; -} -div.table-tabs > button.active-table-tab { - background: #F8981D; - color: #253441; -} -div.table-tabs > button.table-tab { - background: #4D7A97; - color: #FFFFFF; -} - -.row-color th, -.alt-color th { - font-weight:normal; -} -.overview-summary td, .member-summary td, .type-summary td, -.use-summary td, .constants-summary td, .deprecated-summary td, -.requires-summary td, .packages-summary td, .provides-summary td, -.uses-summary td, .system-properties-summary td { - text-align:left; - padding:0px 0px 12px 10px; -} -th.col-first, th.col-second, th.col-last, th.col-constructor-name, th.col-deprecated-item-name, .use-summary th, -.constants-summary th, .packages-summary th, td.col-first, td.col-second, td.col-last, .use-summary td, -.constants-summary td, .system-properties-summary th { - vertical-align:top; - padding-right:0px; - padding-top:8px; - padding-bottom:3px; -} -th.col-first, th.col-second, th.col-last, th.col-constructor-name, th.col-deprecated-item-name, .constants-summary th, -.packages-summary th { - background:#dee3e9; - text-align:left; - padding:8px 3px 3px 7px; -} -td.col-first, th.col-first { - font-size:13px; -} -td.col-second, th.col-second, td.col-last, th.col-constructor-name, th.col-deprecated-item-name, th.col-last { - font-size:13px; -} -.constants-summary th, .packages-summary th { - font-size:13px; -} -.provides-summary th.col-first, .provides-summary th.col-last, .provides-summary td.col-first, -.provides-summary td.col-last { - white-space:normal; - font-size:13px; -} -.overview-summary td.col-first, .overview-summary th.col-first, -.requires-summary td.col-first, .requires-summary th.col-first, -.packages-summary td.col-first, .packages-summary td.col-second, .packages-summary th.col-first, .packages-summary th, -.uses-summary td.col-first, .uses-summary th.col-first, -.provides-summary td.col-first, .provides-summary th.col-first, -.member-summary td.col-first, .member-summary th.col-first, -.member-summary td.col-second, .member-summary th.col-second, .member-summary th.col-constructor-name, -.type-summary td.col-first, .type-summary th.col-first { - vertical-align:top; -} -.packages-summary th.col-last, .packages-summary td.col-last { - white-space:normal; -} -td.col-first a:link, td.col-first a:visited, -td.col-second a:link, td.col-second a:visited, -th.col-first a:link, th.col-first a:visited, -th.col-second a:link, th.col-second a:visited, -th.col-constructor-name a:link, th.col-constructor-name a:visited, -th.col-deprecated-item-name a:link, th.col-deprecated-item-name a:visited, -.constant-values-container td a:link, .constant-values-container td a:visited, -.all-classes-container td a:link, .all-classes-container td a:visited, -.all-packages-container td a:link, .all-packages-container td a:visited { - font-weight:bold; -} -.table-sub-heading-color { - background-color:#EEEEFF; -} -.alt-color, .alt-color th { - background-color:#FFFFFF; -} -.row-color, .row-color th { - background-color:#EEEEEF; -} -/* - * Styles for contents. - */ -.description pre { - margin-top:0; -} -.deprecated-content { - margin:0; - padding:10px 0; -} -div.block { - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; -} -td.col-last div { - padding-top:0px; -} -td.col-last a { - padding-bottom:3px; -} -div.member-signature { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; - margin:14px 0; - white-space: pre-wrap; -} -div.member-signature span.annotations { - white-space: pre-wrap; -} -div.member-signature span.type-parameters-long, -div.member-signature span.parameters, -div.member-signature span.exceptions { - display: inline-block; - vertical-align: top; - white-space: pre; -} -div.member-signature span.type-parameters { - white-space: normal; -} -/* - * Styles for formatting effect. - */ -.source-line-no { - color:green; - padding:0 30px 0 0; -} -h1.hidden { - visibility:hidden; - overflow:hidden; - font-size:10px; -} -.block { - display:block; - margin:0 10px 5px 0; - color:#474747; -} -.deprecated-label, .descfrm-type-label, .implementation-label, .member-name-label, .member-name-link, -.module-label-in-package, .module-label-in-type, .override-specify-label, .package-label-in-type, -.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link { - font-weight:bold; -} -.deprecation-comment, .help-footnote, .interface-name { - font-style:italic; -} -.deprecation-block { - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; - border-style:solid; - border-width:thin; - border-radius:10px; - padding:10px; - margin-bottom:10px; - margin-right:10px; - display:inline-block; -} -div.block div.deprecation-comment, div.block div.block span.emphasized-phrase, -div.block div.block span.interface-name { - font-style:normal; -} -/* - * Styles specific to HTML5 elements. - */ -main, nav, header, footer, section { - display:block; -} -/* - * Styles for javadoc search. - */ -.ui-autocomplete-category { - font-weight:bold; - font-size:15px; - padding:7px 0 7px 3px; - background-color:#4D7A97; - color:#FFFFFF; -} -.result-item { - font-size:13px; -} -.ui-autocomplete { - max-height:85%; - max-width:65%; - overflow-y:scroll; - overflow-x:scroll; - white-space:nowrap; - box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); -} -ul.ui-autocomplete { - position:fixed; - z-index:999999; -} -ul.ui-autocomplete li { - float:left; - clear:both; - width:100%; -} -.result-highlight { - font-weight:bold; -} -#search { - background-image:url('resources/glass.png'); - background-size:13px; - background-repeat:no-repeat; - background-position:2px 3px; - padding-left:20px; - position:relative; - right:-18px; - width:400px; -} -#reset { - background-color: rgb(255,255,255); - background-image:url('resources/x.png'); - background-position:center; - background-repeat:no-repeat; - background-size:12px; - border:0 none; - width:16px; - height:16px; - position:relative; - left:-4px; - top:-4px; - font-size:0px; -} -.watermark { - color:#545454; -} -.search-tag-desc-result { - font-style:italic; - font-size:11px; -} -.search-tag-holder-result { - font-style:italic; - font-size:12px; -} -.search-tag-result:target { - background-color:yellow; -} -.module-graph span { - display:none; - position:absolute; -} -.module-graph:hover span { - display:block; - margin: -100px 0 0 100px; - z-index: 1; -} -.inherited-list { - margin: 10px 0 10px 0; -} -section.description { - line-height: 1.4; -} -.summary section[class$="-summary"], .details section[class$="-details"], -.class-uses .detail, .serialized-class-details { - padding: 0px 20px 5px 10px; - border: 1px solid #ededed; - background-color: #f8f8f8; -} -.inherited-list, section[class$="-details"] .detail { - padding:0 0 5px 8px; - background-color:#ffffff; - border:none; -} -.vertical-separator { - padding: 0 5px; -} -ul.help-section-list { - margin: 0; -} -/* - * Indicator icon for external links. - */ -main a[href*="://"]::after { - content:""; - display:inline-block; - background-image:url('data:image/svg+xml; utf8, \ - \ - \ - '); - background-size:100% 100%; - width:7px; - height:7px; - margin-left:2px; - margin-bottom:4px; -} -main a[href*="://"]:hover::after, -main a[href*="://"]:focus::after { - background-image:url('data:image/svg+xml; utf8, \ - \ - \ - '); -} - -/* - * Styles for user-provided tables. - * - * borderless: - * No borders, vertical margins, styled caption. - * This style is provided for use with existing doc comments. - * In general, borderless tables should not be used for layout purposes. - * - * plain: - * Plain borders around table and cells, vertical margins, styled caption. - * Best for small tables or for complex tables for tables with cells that span - * rows and columns, when the "striped" style does not work well. - * - * striped: - * Borders around the table and vertical borders between cells, striped rows, - * vertical margins, styled caption. - * Best for tables that have a header row, and a body containing a series of simple rows. - */ - -table.borderless, -table.plain, -table.striped { - margin-top: 10px; - margin-bottom: 10px; -} -table.borderless > caption, -table.plain > caption, -table.striped > caption { - font-weight: bold; - font-size: smaller; -} -table.borderless th, table.borderless td, -table.plain th, table.plain td, -table.striped th, table.striped td { - padding: 2px 5px; -} -table.borderless, -table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th, -table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td { - border: none; -} -table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr { - background-color: transparent; -} -table.plain { - border-collapse: collapse; - border: 1px solid black; -} -table.plain > thead > tr, table.plain > tbody tr, table.plain > tr { - background-color: transparent; -} -table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th, -table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td { - border: 1px solid black; -} -table.striped { - border-collapse: collapse; - border: 1px solid black; -} -table.striped > thead { - background-color: #E3E3E3; -} -table.striped > thead > tr > th, table.striped > thead > tr > td { - border: 1px solid black; -} -table.striped > tbody > tr:nth-child(even) { - background-color: #EEE -} -table.striped > tbody > tr:nth-child(odd) { - background-color: #FFF -} -table.striped > tbody > tr > th, table.striped > tbody > tr > td { - border-left: 1px solid black; - border-right: 1px solid black; -} -table.striped > tbody > tr > th { - font-weight: normal; -} diff --git a/docs/javadocs/tag-search-index.js b/docs/javadocs/tag-search-index.js deleted file mode 100644 index 0367dae..0000000 --- a/docs/javadocs/tag-search-index.js +++ /dev/null @@ -1 +0,0 @@ -tagSearchIndex = [];updateSearchResults(); \ No newline at end of file diff --git a/docs/javadocs/type-search-index.js b/docs/javadocs/type-search-index.js deleted file mode 100644 index 697a4a9..0000000 --- a/docs/javadocs/type-search-index.js +++ /dev/null @@ -1 +0,0 @@ -typeSearchIndex = [{"l":"All Classes","u":"allclasses-index.html"},{"p":"es.cadox8.xenapi.utils","l":"Argument"},{"p":"es.cadox8.xenapi","l":"Launcher"},{"p":"es.cadox8.xenapi.utils","l":"Log"},{"p":"es.cadox8.xenapi.utils","l":"Log.LogType"},{"p":"es.cadox8.xenapi.exceptions","l":"NotAuthorizedException"},{"p":"es.cadox8.xenapi.exceptions","l":"NotFoundException"},{"p":"es.cadox8.xenapi.net","l":"UrlExpander"},{"p":"es.cadox8.xenapi.api","l":"User"},{"p":"es.cadox8.xenapi.utils","l":"Utils"},{"p":"es.cadox8.xenapi","l":"XenAPI"},{"p":"es.cadox8.xenapi","l":"XenAPIBuilder"},{"p":"es.cadox8.xenapi.exceptions","l":"XenForoBadRequestException"},{"p":"es.cadox8.xenapi.net","l":"XenForoClient"},{"p":"es.cadox8.xenapi.api","l":"XenForoEntity"},{"p":"es.cadox8.xenapi.exceptions","l":"XenForoHttpException"},{"p":"es.cadox8.xenapi.net","l":"XenForoUrl"}];updateSearchResults(); \ No newline at end of file diff --git a/docs/logo/dark.svg b/docs/logo/dark.svg new file mode 100644 index 0000000..8b343cd --- /dev/null +++ b/docs/logo/dark.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/logo/light.svg b/docs/logo/light.svg new file mode 100644 index 0000000..03e62bf --- /dev/null +++ b/docs/logo/light.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/logo/png/logo-black.png b/docs/logo/png/logo-black.png new file mode 100644 index 0000000..567ab7a Binary files /dev/null and b/docs/logo/png/logo-black.png differ diff --git a/docs/logo/png/logo-color.png b/docs/logo/png/logo-color.png new file mode 100644 index 0000000..8252c33 Binary files /dev/null and b/docs/logo/png/logo-color.png differ diff --git a/docs/logo/png/logo-no-background.png b/docs/logo/png/logo-no-background.png new file mode 100644 index 0000000..1412912 Binary files /dev/null and b/docs/logo/png/logo-no-background.png differ diff --git a/docs/logo/png/logo-white.png b/docs/logo/png/logo-white.png new file mode 100644 index 0000000..302b51c Binary files /dev/null and b/docs/logo/png/logo-white.png differ diff --git a/docs/logo/svg/logo-black.svg b/docs/logo/svg/logo-black.svg new file mode 100644 index 0000000..191e9b5 --- /dev/null +++ b/docs/logo/svg/logo-black.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/logo/svg/logo-color.svg b/docs/logo/svg/logo-color.svg new file mode 100644 index 0000000..1bbc1d6 --- /dev/null +++ b/docs/logo/svg/logo-color.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/logo/svg/logo-no-background.svg b/docs/logo/svg/logo-no-background.svg new file mode 100644 index 0000000..213afe1 --- /dev/null +++ b/docs/logo/svg/logo-no-background.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/logo/svg/logo-white.svg b/docs/logo/svg/logo-white.svg new file mode 100644 index 0000000..41cb8c8 --- /dev/null +++ b/docs/logo/svg/logo-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/sw.js b/docs/sw.js deleted file mode 100644 index a13a3f1..0000000 --- a/docs/sw.js +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright (c) 2021-2021. - * - * This file is part of XenAPI . - * - * XenAPI is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * XenAPI is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - * - * If you have any question feel free to ask at or - */ - -const RUNTIME = 'docsify' -const HOSTNAME_WHITELIST = [ - self.location.hostname, - 'fonts.gstatic.com', - 'fonts.googleapis.com', - 'cdn.jsdelivr.net' -] - -// The Util Function to hack URLs of intercepted requests -const getFixedUrl = (req) => { - var now = Date.now() - var url = new URL(req.url) - - // 1. fixed http URL - // Just keep syncing with location.protocol - // fetch(httpURL) belongs to active mixed content. - // And fetch(httpRequest) is not supported yet. - url.protocol = self.location.protocol - - // 2. add query for caching-busting. - // Github Pages served with Cache-Control: max-age=600 - // max-age on mutable content is error-prone, with SW life of bugs can even extend. - // Until cache mode of Fetch API landed, we have to workaround cache-busting with query string. - // Cache-Control-Bug: https://bugs.chromium.org/p/chromium/issues/detail?id=453190 - if (url.hostname === self.location.hostname) { - url.search += (url.search ? '&' : '?') + 'cache-bust=' + now - } - return url.href -} - -/** - * @Lifecycle Activate - * New one activated when old isnt being used. - * - * waitUntil(): activating ====> activated - */ -self.addEventListener('activate', event => { - event.waitUntil(self.clients.claim()) -}) - -/** - * @Functional Fetch - * All network requests are being intercepted here. - * - * void respondWith(Promise r) - */ -self.addEventListener('fetch', event => { - // Skip some of cross-origin requests, like those for Google Analytics. - if (HOSTNAME_WHITELIST.indexOf(new URL(event.request.url).hostname) > -1) { - // Stale-while-revalidate - // similar to HTTP's stale-while-revalidate: https://www.mnot.net/blog/2007/12/12/stale - // Upgrade from Jake's to Surma's: https://gist.github.com/surma/eb441223daaedf880801ad80006389f1 - const cached = caches.match(event.request) - const fixedUrl = getFixedUrl(event.request) - const fetched = fetch(fixedUrl, { cache: 'no-store' }) - const fetchedCopy = fetched.then(resp => resp.clone()) - - // Call respondWith() with whatever we get first. - // If the fetch fails (e.g disconnected), wait for the cache. - // If there’s nothing in cache, wait for the fetch. - // If neither yields a response, return offline pages. - event.respondWith( - Promise.race([fetched.catch(_ => cached), cached]) - .then(resp => resp || fetched) - .catch(_ => { /* eat any errors */ }) - ) - - // Update the cache with the version we fetched (only for ok status) - event.waitUntil( - Promise.all([fetchedCopy, caches.open(RUNTIME)]) - .then(([response, cache]) => response.ok && cache.put(event.request, response)) - .catch(_ => { /* eat any errors */ }) - ) - } -}) \ No newline at end of file diff --git a/docs/yaak.xenforo.json b/docs/yaak.xenforo.json new file mode 100644 index 0000000..82dd316 --- /dev/null +++ b/docs/yaak.xenforo.json @@ -0,0 +1,980 @@ +{ + "yaakVersion": "2025.7.2", + "yaakSchema": 4, + "timestamp": "2025-10-25T01:36:36.747658800", + "resources": { + "workspaces": [ + { + "model": "workspace", + "id": "wk_tgjhVbtgis", + "createdAt": "2023-11-13T21:56:55.758", + "updatedAt": "2025-10-24T18:59:26.602978800", + "authentication": {}, + "authenticationType": null, + "description": "", + "headers": [], + "name": "XenForo", + "encryptionKeyChallenge": null, + "settingValidateCertificates": true, + "settingFollowRedirects": true, + "settingRequestTimeout": 0 + } + ], + "environments": [], + "folders": [ + { + "model": "folder", + "id": "fl_WeqtPcMhog", + "createdAt": "2025-10-24T22:50:32.314013200", + "updatedAt": "2025-10-24T22:50:39.692566100", + "workspaceId": "wk_tgjhVbtgis", + "folderId": null, + "authentication": {}, + "authenticationType": null, + "description": "", + "headers": [], + "name": "Nodes", + "sortPriority": 3333.3333 + }, + { + "model": "folder", + "id": "fl_9jak9PFxgY", + "createdAt": "2025-10-01T18:41:58.701", + "updatedAt": "2025-10-24T22:50:37.137473800", + "workspaceId": "wk_tgjhVbtgis", + "folderId": null, + "authentication": {}, + "authenticationType": null, + "description": "", + "headers": [], + "name": "Conversation", + "sortPriority": 0.0 + }, + { + "model": "folder", + "id": "fl_WLKEBN2LBv", + "createdAt": "2025-10-01T13:06:16.497", + "updatedAt": "2025-10-24T22:50:37.155387700", + "workspaceId": "wk_tgjhVbtgis", + "folderId": null, + "authentication": {}, + "authenticationType": null, + "description": "", + "headers": [], + "name": "Index", + "sortPriority": 1000.0 + }, + { + "model": "folder", + "id": "fl_VuNRyeDnab", + "createdAt": "2025-09-29T19:02:01.567", + "updatedAt": "2025-10-24T22:50:37.158786200", + "workspaceId": "wk_tgjhVbtgis", + "folderId": null, + "authentication": {}, + "authenticationType": null, + "description": "", + "headers": [], + "name": "Me", + "sortPriority": 2000.0 + }, + { + "model": "folder", + "id": "fl_NqiTp3xjEB", + "createdAt": "2025-09-29T18:35:25.509", + "updatedAt": "2025-10-24T22:50:37.162282", + "workspaceId": "wk_tgjhVbtgis", + "folderId": null, + "authentication": {}, + "authenticationType": null, + "description": "", + "headers": [], + "name": "Alerts", + "sortPriority": 3000.0 + }, + { + "model": "folder", + "id": "fl_CcMqXVxBwm", + "createdAt": "2025-09-29T18:21:39.987", + "updatedAt": "2025-10-24T22:50:37.165424200", + "workspaceId": "wk_tgjhVbtgis", + "folderId": null, + "authentication": {}, + "authenticationType": null, + "description": "", + "headers": [], + "name": "Auth", + "sortPriority": 4000.0 + } + ], + "httpRequests": [ + { + "model": "http_request", + "id": "rq_ygUSvvokFn", + "createdAt": "2025-10-24T23:26:13.840545500", + "updatedAt": "2025-10-25T00:18:37.485343800", + "workspaceId": "wk_tgjhVbtgis", + "folderId": "fl_WeqtPcMhog", + "authentication": {}, + "authenticationType": null, + "body": { + "form": [ + { + "enabled": true, + "id": "dsHdbjAVjM", + "name": "node[title]", + "value": "TestTitle" + }, + { + "enabled": true, + "id": "zUUBBwreYI", + "name": "node_type_id", + "value": "Category" + }, + { + "enabled": true, + "id": "xAEwfZGsDt", + "name": "node[node_name]", + "value": "Test Node" + }, + { + "enabled": true, + "id": "vMIjqPHt0k", + "name": "node[parent_node_id]", + "value": "0" + }, + { + "enabled": true, + "id": "nUrDg95Avv", + "name": "", + "value": "" + } + ] + }, + "bodyType": "multipart/form-data", + "description": "Gets the API user's list of alerts", + "headers": [ + { + "enabled": true, + "name": "User-Agent", + "value": "insomnia/2023.5.8", + "id": "TiE7mNYWwx" + }, + { + "enabled": true, + "name": "XF-Api-Key", + "value": "eEg2u9RcroO9LiFyZpIzgZthB489WYHh", + "id": "x5yq0FDwHi" + }, + { + "enabled": true, + "name": "XF-Api-User", + "value": "1", + "id": "Kv3gRYxDMw" + }, + { + "enabled": true, + "name": "", + "value": "", + "id": "AXxM4qQaDh" + }, + { + "enabled": true, + "name": "Content-Type", + "value": "multipart/form-data", + "id": "sPIfDn24y7" + } + ], + "method": "POST", + "name": "Post Node", + "sortPriority": 0.0012, + "url": "${[base ]}/nodes", + "urlParameters": [] + }, + { + "model": "http_request", + "id": "rq_AP6xxXJNDs", + "createdAt": "2025-10-24T22:58:20.965930800", + "updatedAt": "2025-10-24T22:58:26.676685300", + "workspaceId": "wk_tgjhVbtgis", + "folderId": "fl_WeqtPcMhog", + "authentication": {}, + "authenticationType": null, + "body": { + "text": "" + }, + "bodyType": "application/json", + "description": "Gets the API user's list of alerts", + "headers": [ + { + "enabled": true, + "name": "Content-Type", + "value": "application/json", + "id": null + }, + { + "enabled": true, + "name": "User-Agent", + "value": "insomnia/2023.5.8", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-Key", + "value": "eEg2u9RcroO9LiFyZpIzgZthB489WYHh", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-User", + "value": "1", + "id": null + } + ], + "method": "GET", + "name": "Node", + "sortPriority": 0.0021999999999999997, + "url": "${[base ]}/nodes/1", + "urlParameters": [] + }, + { + "model": "http_request", + "id": "rq_PCf9YKa2Nv", + "createdAt": "2025-10-24T22:55:28.740601600", + "updatedAt": "2025-10-24T22:55:41.534120", + "workspaceId": "wk_tgjhVbtgis", + "folderId": "fl_WeqtPcMhog", + "authentication": {}, + "authenticationType": null, + "body": { + "text": "" + }, + "bodyType": "application/json", + "description": "Gets the API user's list of alerts", + "headers": [ + { + "enabled": true, + "name": "Content-Type", + "value": "application/json", + "id": null + }, + { + "enabled": true, + "name": "User-Agent", + "value": "insomnia/2023.5.8", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-Key", + "value": "eEg2u9RcroO9LiFyZpIzgZthB489WYHh", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-User", + "value": "1", + "id": null + } + ], + "method": "GET", + "name": "Flattenedd Nodes", + "sortPriority": 0.0011, + "url": "${[base ]}/nodes/flattened", + "urlParameters": [] + }, + { + "model": "http_request", + "id": "rq_5rhE47J92r", + "createdAt": "2025-10-24T22:51:07.321845800", + "updatedAt": "2025-10-24T22:51:21.603331200", + "workspaceId": "wk_tgjhVbtgis", + "folderId": "fl_WeqtPcMhog", + "authentication": {}, + "authenticationType": null, + "body": { + "text": "" + }, + "bodyType": "application/json", + "description": "Gets the API user's list of alerts", + "headers": [ + { + "enabled": true, + "name": "Content-Type", + "value": "application/json", + "id": null + }, + { + "enabled": true, + "name": "User-Agent", + "value": "insomnia/2023.5.8", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-Key", + "value": "eEg2u9RcroO9LiFyZpIzgZthB489WYHh", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-User", + "value": "1", + "id": null + } + ], + "method": "GET", + "name": "Nodes", + "sortPriority": 0.0, + "url": "${[base ]}/nodes", + "urlParameters": [] + }, + { + "model": "http_request", + "id": "rq_pFRuRLDHXM", + "createdAt": "2025-10-01T18:45:54.405", + "updatedAt": "2025-10-01T18:46:59.556", + "workspaceId": "wk_tgjhVbtgis", + "folderId": "fl_9jak9PFxgY", + "authentication": {}, + "authenticationType": null, + "body": { + "text": "{\n\t\"recipient_ids\": [1, 3],\n\t\"title\": \"Conversation Test title\",\n\t\"message\": \"Conversation Test body\",\n\t\"conversation_open\": true,\n\t\"open_invite\": false\n}" + }, + "bodyType": "application/json", + "description": "Tests a login and password for validity. Only available to super user keys. We strongly recommend the login and password parameters are passed into the request body rather than the query string.", + "headers": [ + { + "enabled": true, + "name": "Content-Type", + "value": "application/json", + "id": null + }, + { + "enabled": true, + "name": "User-Agent", + "value": "insomnia/2023.5.8", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-Key", + "value": "eEg2u9RcroO9LiFyZpIzgZthB489WYHh", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-User", + "value": "1", + "id": null + } + ], + "method": "POST", + "name": "Create Conversation", + "sortPriority": -1759326153053.8125, + "url": "${[base ]}/conversations", + "urlParameters": [] + }, + { + "model": "http_request", + "id": "rq_dmkXKtuzHk", + "createdAt": "2025-10-01T18:45:17.828", + "updatedAt": "2025-10-01T19:24:51.014", + "workspaceId": "wk_tgjhVbtgis", + "folderId": "fl_9jak9PFxgY", + "authentication": {}, + "authenticationType": null, + "body": { + "text": "" + }, + "bodyType": "application/json", + "description": "Tests a login and password for validity. Only available to super user keys. We strongly recommend the login and password parameters are passed into the request body rather than the query string.", + "headers": [ + { + "enabled": true, + "name": "Content-Type", + "value": "application/json", + "id": null + }, + { + "enabled": true, + "name": "User-Agent", + "value": "insomnia/2023.5.8", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-Key", + "value": "eEg2u9RcroO9LiFyZpIzgZthB489WYHh", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-User", + "value": "1", + "id": null + } + ], + "method": "GET", + "name": "Get Conversations", + "sortPriority": -1759332145670.875, + "url": "${[base ]}/conversations", + "urlParameters": [] + }, + { + "model": "http_request", + "id": "rq_PyPadTqUdZ", + "createdAt": "2025-10-01T18:44:56.636", + "updatedAt": "2025-10-01T18:45:10.239", + "workspaceId": "wk_tgjhVbtgis", + "folderId": "fl_9jak9PFxgY", + "authentication": {}, + "authenticationType": null, + "body": { + "text": "{\n\t\"reaction_id\": 1\n}" + }, + "bodyType": "application/json", + "description": "Tests a login and password for validity. Only available to super user keys. We strongly recommend the login and password parameters are passed into the request body rather than the query string.", + "headers": [ + { + "enabled": true, + "name": "Content-Type", + "value": "application/json", + "id": null + }, + { + "enabled": true, + "name": "User-Agent", + "value": "insomnia/2023.5.8", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-Key", + "value": "eEg2u9RcroO9LiFyZpIzgZthB489WYHh", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-User", + "value": "1", + "id": null + } + ], + "method": "POST", + "name": "React Conversation", + "sortPriority": -1759308175202.625, + "url": "${[base ]}/conversation-messages/1/react", + "urlParameters": [] + }, + { + "model": "http_request", + "id": "rq_c8hV9svA5g", + "createdAt": "2025-10-01T18:44:26.336", + "updatedAt": "2025-10-01T18:44:42.645", + "workspaceId": "wk_tgjhVbtgis", + "folderId": "fl_9jak9PFxgY", + "authentication": {}, + "authenticationType": null, + "body": { + "text": "{\n\t\"message\": \"Updated conversation\"\n}" + }, + "bodyType": "application/json", + "description": "Tests a login and password for validity. Only available to super user keys. We strongly recommend the login and password parameters are passed into the request body rather than the query string.", + "headers": [ + { + "enabled": true, + "name": "Content-Type", + "value": "application/json", + "id": null + }, + { + "enabled": true, + "name": "User-Agent", + "value": "insomnia/2023.5.8", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-Key", + "value": "eEg2u9RcroO9LiFyZpIzgZthB489WYHh", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-User", + "value": "1", + "id": null + } + ], + "method": "POST", + "name": "Update Conversation", + "sortPriority": -1759320160436.75, + "url": "${[base ]}/conversation-messages/1", + "urlParameters": [] + }, + { + "model": "http_request", + "id": "rq_jxA9rtC2eV", + "createdAt": "2025-10-01T18:42:15.414", + "updatedAt": "2025-10-01T18:47:47.262", + "workspaceId": "wk_tgjhVbtgis", + "folderId": "fl_9jak9PFxgY", + "authentication": {}, + "authenticationType": null, + "body": { + "text": "{\n\t\"conversation_id\": 1,\n\t\"message\": \"Test reply\"\n}" + }, + "bodyType": "application/json", + "description": "Tests a login and password for validity. Only available to super user keys. We strongly recommend the login and password parameters are passed into the request body rather than the query string.", + "headers": [ + { + "enabled": true, + "name": "Content-Type", + "value": "application/json", + "id": null + }, + { + "enabled": true, + "name": "User-Agent", + "value": "insomnia/2023.5.8", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-Key", + "value": "eEg2u9RcroO9LiFyZpIzgZthB489WYHh", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-User", + "value": "1", + "id": null + } + ], + "method": "POST", + "name": "Reply Conversation", + "sortPriority": -1759296189968.5, + "url": "${[base ]}/conversation-messages/", + "urlParameters": [] + }, + { + "model": "http_request", + "id": "rq_LjdBkgortc", + "createdAt": "2025-10-01T18:42:05.888", + "updatedAt": "2025-10-01T18:43:26.283", + "workspaceId": "wk_tgjhVbtgis", + "folderId": "fl_9jak9PFxgY", + "authentication": {}, + "authenticationType": null, + "body": { + "text": "" + }, + "bodyType": "application/json", + "description": "Tests a login and password for validity. Only available to super user keys. We strongly recommend the login and password parameters are passed into the request body rather than the query string.", + "headers": [ + { + "enabled": true, + "name": "Content-Type", + "value": "application/json", + "id": null + }, + { + "enabled": true, + "name": "User-Agent", + "value": "insomnia/2023.5.8", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-Key", + "value": "eEg2u9RcroO9LiFyZpIzgZthB489WYHh", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-User", + "value": "1", + "id": null + } + ], + "method": "GET", + "name": "Get Conversation", + "sortPriority": -1759344130905.0, + "url": "${[base ]}/conversation-messages/1", + "urlParameters": [] + }, + { + "model": "http_request", + "id": "rq_Xrg77HooDR", + "createdAt": "2025-10-01T13:06:23.315", + "updatedAt": "2025-10-01T18:51:02.121", + "workspaceId": "wk_tgjhVbtgis", + "folderId": "fl_WLKEBN2LBv", + "authentication": {}, + "authenticationType": null, + "body": { + "text": "" + }, + "bodyType": "application/json", + "description": "Tests a login and password for validity. Only available to super user keys. We strongly recommend the login and password parameters are passed into the request body rather than the query string.", + "headers": [ + { + "enabled": true, + "name": "Content-Type", + "value": "application/json", + "id": null + }, + { + "enabled": true, + "name": "User-Agent", + "value": "insomnia/2023.5.8", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-Key", + "value": "eEg2u9RcroO9LiFyZpIzgZthB489WYHh", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-User", + "value": "1", + "id": null + } + ], + "method": "GET", + "name": "Index", + "sortPriority": -1759344662087.0, + "url": "${[base ]}/index", + "urlParameters": [] + }, + { + "model": "http_request", + "id": "rq_FYbJ6E7UyZ", + "createdAt": "2025-09-29T19:02:06.961", + "updatedAt": "2025-10-01T18:50:57.087", + "workspaceId": "wk_tgjhVbtgis", + "folderId": "fl_VuNRyeDnab", + "authentication": {}, + "authenticationType": null, + "body": { + "text": "" + }, + "bodyType": "application/json", + "description": "Tests a login and password for validity. Only available to super user keys. We strongly recommend the login and password parameters are passed into the request body rather than the query string.", + "headers": [ + { + "enabled": true, + "name": "Content-Type", + "value": "application/json", + "id": null + }, + { + "enabled": true, + "name": "User-Agent", + "value": "insomnia/2023.5.8", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-Key", + "value": "eEg2u9RcroO9LiFyZpIzgZthB489WYHh", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-User", + "value": "1", + "id": null + } + ], + "method": "GET", + "name": "Me", + "sortPriority": -1759344657045.0, + "url": "${[base ]}/me", + "urlParameters": [] + }, + { + "model": "http_request", + "id": "rq_xbo9fVfEYY", + "createdAt": "2025-09-29T19:01:16.480", + "updatedAt": "2025-09-29T19:01:28.904", + "workspaceId": "wk_tgjhVbtgis", + "folderId": "fl_NqiTp3xjEB", + "authentication": {}, + "authenticationType": null, + "body": { + "text": "{\n\t\"read\": true,\n\t\"viewed\": true\n}" + }, + "bodyType": "application/json", + "description": "Sends an alert to the specified user. Only available to super user keys.", + "headers": [ + { + "enabled": true, + "name": "Content-Type", + "value": "application/json", + "id": null + }, + { + "enabled": true, + "name": "User-Agent", + "value": "insomnia/2023.5.8", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-Key", + "value": "eEg2u9RcroO9LiFyZpIzgZthB489WYHh", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-User", + "value": "1", + "id": null + } + ], + "method": "POST", + "name": "Mark One Alert", + "sortPriority": -1759170214003.875, + "url": "${[base ]}/alerts/${[alertId ]}/mark", + "urlParameters": [] + }, + { + "model": "http_request", + "id": "rq_4QwBSGTqVQ", + "createdAt": "2025-09-29T18:50:39.154", + "updatedAt": "2025-10-25T00:36:42.439729200", + "workspaceId": "wk_tgjhVbtgis", + "folderId": "fl_NqiTp3xjEB", + "authentication": {}, + "authenticationType": null, + "body": { + "text": "" + }, + "bodyType": "application/json", + "description": "Gets the API user's list of alerts", + "headers": [ + { + "enabled": true, + "name": "Content-Type", + "value": "application/json", + "id": null + }, + { + "enabled": true, + "name": "User-Agent", + "value": "insomnia/2023.5.8", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-Key", + "value": "eEg2u9RcroO9LiFyZpIzgZthB489WYHh", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-User", + "value": "1", + "id": null + } + ], + "method": "GET", + "name": "Get Alert Id", + "sortPriority": -1759170726398.25, + "url": "${[base ]}/alerts/32", + "urlParameters": [] + }, + { + "model": "http_request", + "id": "rq_FtuazSQ4Vm", + "createdAt": "2025-09-29T18:49:51.013", + "updatedAt": "2025-09-29T18:50:23.031", + "workspaceId": "wk_tgjhVbtgis", + "folderId": "fl_NqiTp3xjEB", + "authentication": {}, + "authenticationType": null, + "body": { + "text": "{\n\t\"read\": true,\n\t\"viewed\": true\n}" + }, + "bodyType": "application/json", + "description": "Sends an alert to the specified user. Only available to super user keys.", + "headers": [ + { + "enabled": true, + "name": "Content-Type", + "value": "application/json", + "id": null + }, + { + "enabled": true, + "name": "User-Agent", + "value": "insomnia/2023.5.8", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-Key", + "value": "eEg2u9RcroO9LiFyZpIzgZthB489WYHh", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-User", + "value": "1", + "id": null + } + ], + "method": "POST", + "name": "Mark All Alerts", + "sortPriority": -1759170316482.75, + "url": "${[base ]}/alerts/mark-all ", + "urlParameters": [] + }, + { + "model": "http_request", + "id": "rq_MqtVCS3Xwh", + "createdAt": "2025-09-29T18:40:06.923", + "updatedAt": "2025-09-29T18:45:40.467", + "workspaceId": "wk_tgjhVbtgis", + "folderId": "fl_NqiTp3xjEB", + "authentication": {}, + "authenticationType": null, + "body": { + "text": "{\n\t\"to_user_id\": 1, \n\t\"alert\": \"Test alert\", \n\t\"from_user_id\": 1\n}" + }, + "bodyType": "application/json", + "description": "Sends an alert to the specified user. Only available to super user keys.", + "headers": [ + { + "enabled": true, + "name": "Content-Type", + "value": "application/json", + "id": null + }, + { + "enabled": true, + "name": "User-Agent", + "value": "insomnia/2023.5.8", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-Key", + "value": "eEg2u9RcroO9LiFyZpIzgZthB489WYHh", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-User", + "value": "1", + "id": null + } + ], + "method": "POST", + "name": "Post Alerts", + "sortPriority": -1759170521440.5, + "url": "${[base ]}/alerts", + "urlParameters": [] + }, + { + "model": "http_request", + "id": "rq_hmA3ihpUvV", + "createdAt": "2025-09-29T18:35:54.974", + "updatedAt": "2025-09-29T18:40:13.580", + "workspaceId": "wk_tgjhVbtgis", + "folderId": "fl_NqiTp3xjEB", + "authentication": {}, + "authenticationType": null, + "body": { + "text": "" + }, + "bodyType": "application/json", + "description": "Gets the API user's list of alerts", + "headers": [ + { + "enabled": true, + "name": "Content-Type", + "value": "application/json", + "id": null + }, + { + "enabled": true, + "name": "User-Agent", + "value": "insomnia/2023.5.8", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-Key", + "value": "eEg2u9RcroO9LiFyZpIzgZthB489WYHh", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-User", + "value": "1", + "id": null + } + ], + "method": "GET", + "name": "Get Alerts", + "sortPriority": -1759170931356.0, + "url": "${[base ]}/alerts", + "urlParameters": [] + }, + { + "model": "http_request", + "id": "rq_HMLiCmfJ9B", + "createdAt": "2025-09-29T18:21:51.525", + "updatedAt": "2025-09-29T18:34:40.518", + "workspaceId": "wk_tgjhVbtgis", + "folderId": "fl_CcMqXVxBwm", + "authentication": {}, + "authenticationType": null, + "body": { + "text": "{\n\t\"login\": \"cadox8\",\n\t\"password\": \"123abc4d\"\n}" + }, + "bodyType": "application/json", + "description": "Tests a login and password for validity. Only available to super user keys. We strongly recommend the login and password parameters are passed into the request body rather than the query string.", + "headers": [ + { + "enabled": true, + "name": "Content-Type", + "value": "application/json", + "id": null + }, + { + "enabled": true, + "name": "User-Agent", + "value": "insomnia/2023.5.8", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-Key", + "value": "eEg2u9RcroO9LiFyZpIzgZthB489WYHh", + "id": null + }, + { + "enabled": true, + "name": "XF-Api-User", + "value": "1", + "id": null + } + ], + "method": "POST", + "name": "Auth", + "sortPriority": -1759170111525.0, + "url": "${[base ]}/auth", + "urlParameters": [] + } + ], + "grpcRequests": [], + "websocketRequests": [] + } +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 1141a91..c9871d1 100644 --- a/pom.xml +++ b/pom.xml @@ -1,6 +1,6 @@ - + 4.0.0 - me.cadox8 + es.cadox8 XenAPI jar - 0.1.0-SNAPSHOT + 2.0.0-10-SNAPSHOT - + - Cadox8 + cadox8-repository Cadox8 Repository - https://cadox8.es/repo - default - - true - + https://repo.cadox8.es/releases - + + cadox8-repository + Cadox8 Repository + false + https://repo.cadox8.es/snapshots + + XenAPI A Java wrapper of the XenForo API @@ -57,8 +60,8 @@ - 1.8 - 1.8 + 11 + 11 @@ -70,7 +73,7 @@ org.apache.maven.plugins maven-source-plugin - 3.2.1 + 3.3.1 sources @@ -92,6 +95,7 @@ ${java.home}/bin/javadoc + **/*Test.java @@ -99,24 +103,12 @@ org.apache.maven.plugins maven-jar-plugin - 3.1.0 - - - create-jar - package - - jar - - - - - - - + 3.4.2 net.ju-n.maven.plugins checksum-maven-plugin - 1.2 + 1.4 @@ -128,6 +120,7 @@ org.apache.maven.plugins maven-compiler-plugin + 3.11.0 11 11 @@ -137,49 +130,60 @@ - - com.google.code.gson gson - 2.8.9 + 2.11.0 - org.apache.httpcomponents - httpclient - 4.5.13 + org.apache.httpcomponents.client5 + httpclient5 + 5.5.1 + + + org.slf4j + slf4j-api + + - org.apache.httpcomponents - httpmime - 4.5.13 + org.slf4j + slf4j-api + 2.0.17 - + + - com.diogonunes - JCDP - 4.0.2 + org.slf4j + slf4j-nop + 2.0.16 + + + + + io.github.jupf.staticlog + staticlog-java + 2.2.0 org.projectlombok lombok - 1.18.22 + 1.18.38 + provided + + + org.junit.jupiter + junit-jupiter + 5.10.0 + test + + + org.junit.jupiter + junit-jupiter-api + 5.10.0 + compile \ No newline at end of file diff --git a/src/es/cadox8/xenapi/XenAPI.java b/src/es/cadox8/xenapi/XenAPI.java index 5c6fa09..a4080a9 100644 --- a/src/es/cadox8/xenapi/XenAPI.java +++ b/src/es/cadox8/xenapi/XenAPI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2021. + * Copyright (c) 2021-2024 * * This file is part of XenAPI . * @@ -21,20 +21,109 @@ package es.cadox8.xenapi; -import es.cadox8.xenapi.api.Me; -import es.cadox8.xenapi.api.User; +import de.jupf.staticlog.Log; +import de.jupf.staticlog.core.LogLevel; +import es.cadox8.xenapi.api.commons.Errors; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.ApiResponse; +import es.cadox8.xenapi.net.Response; +import es.cadox8.xenapi.net.XenForoClient; +import es.cadox8.xenapi.updater.UpdateChecker; +import es.cadox8.xenapi.utils.Utils; +import es.cadox8.xenapi.utils.Version; +import lombok.NonNull; +import org.apache.hc.core5.http.NameValuePair; -public interface XenAPI { +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +public class XenAPI { + + private final XenForoClient client; + private final String url; + + + /** + * Constructor for the XenAPI Builder + * + * @param url the url where XenForo is installed at + * @param token The token you have to access + *

      + * You need to pass the user param if the token is for superuser + */ + public XenAPI(final String url, final String token) { + this(url, token, -1); + } + + + /** + * Constructor for the XenAPI Builder + * + * @param url the url where XenForo is installed at + * @param token The token you have to access + * @param user_id The user of the generated token + *

      + * You need to pass the user param if the token is for superuser + */ + public XenAPI(final String url, final String token, int user_id) { + this.url = url.contains("/api") ? url : url + "/api"; + this.client = new XenForoClient(token, user_id); + + this.enableDebug(false); + + final Version version = new Version(2, 0, 0, "10-SNAPSHOT"); + final UpdateChecker updateChecker = new UpdateChecker(version, true); + updateChecker.sendVersionUpdate(); + updateChecker.scheduleCheckVersion(); + + Log.info("Started XenAPI client! Version: " + version, "XenforoClient"); + } /** - * Gets the info about the current user (token user) + * Sets the library to debug mode to see all logs. By default, this is False * - * @return The user information - * @see User + * @param debug true/false */ - Me me(); + public void enableDebug(boolean debug) { + Log.setLogLevel(debug ? LogLevel.DEBUG : LogLevel.INFO); + } + + /** + * Method to send the request to the XenForo API + * + * @param request The ApiRequest Class + * @param The ApiResponse Class from the ApiRequest + * @return If success, the ApiResponse Class, if error an #Errors class with the errors from XenForo + * @see Response + * @see Errors + */ + public Response send(@NonNull final ApiRequest request) { + final String url = Utils.createUrl(this.url, request.getPath()); + + final List realParams = new ArrayList<>(); + switch (request.getMethod()) { + case GET: { + request.params().forEach(p -> realParams.add(p.generate())); + return this.client.get(url, request.response(), request.query(), realParams); + } + case POST: { + request.body().forEach(p -> realParams.add(p.generate())); - User findUserById(); + if (request.containsFile()) { + final File file = (File) request.params().get(0).getValue(); + return this.client.postFile(url, request.response(), request.query(), realParams, file); + } - User findUserById(int id); + return this.client.post(url, request.response(), request.query(), realParams); + } +/* case PUT: + return client.putForObject(url, request.getBody(), request.getResponseType(), request.getQueryParams());*/ + case DELETE: + request.body().forEach(p -> realParams.add(p.generate())); + return this.client.delete(url, request.response(), request.query(), realParams); + default: + throw new IllegalArgumentException("Unsupported HTTP method: " + request.getMethod()); + } + } } diff --git a/src/es/cadox8/xenapi/XenAPIBuilder.java b/src/es/cadox8/xenapi/XenAPIBuilder.java deleted file mode 100644 index 0a81519..0000000 --- a/src/es/cadox8/xenapi/XenAPIBuilder.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (c) 2021. - * - * This file is part of XenAPI . - * - * XenAPI is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * XenAPI is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - * - * If you have any question feel free to ask at or - */ - -package es.cadox8.xenapi; - -import es.cadox8.xenapi.api.Me; -import es.cadox8.xenapi.api.User; -import es.cadox8.xenapi.api.XenForoEntity; -import es.cadox8.xenapi.net.XenForoClient; -import es.cadox8.xenapi.net.XenForoUrl; - -import java.io.File; -import java.util.Arrays; -import java.util.List; -import java.util.function.Supplier; -import java.util.stream.Collectors; - -public class XenAPIBuilder implements XenAPI { - - private final XenForoClient httpClient; - private final String url; - - /** - * Constructor for the XenAPI Builder - * - * @param url the url where XenForo is installed at - * @param token The token you have to access - */ - public XenAPIBuilder(String url, String token) { - this(url, token, ""); - } - - /** - * Constructor for the XenAPI Builder - * - * @param url the url where XenForo is installed at - * @param token The token you have to access - * @param user The user of the generated token - * - * You need to pass the user param if the token is for superuser - */ - public XenAPIBuilder(String url, String token, String user) { - this.url = url + "/api"; - this.httpClient = new XenForoClient(token, user); - } - - // - - @Override - public Me me() { - final Me me = get(XenForoUrl.createUrl(this.url, XenForoUrl.GET_ME), Me.class); - me.setInternalXenAPI(this); - return me; - } - - @Override - public User findUserById() { - final User user = get(XenForoUrl.createUrl(this.url, XenForoUrl.GET_USERS), User.class); - user.setInternalXenAPI(this); - return user; - } - - @Override - public User findUserById(int id) { - final User user = get(XenForoUrl.createUrl(this.url, XenForoUrl.GET_USERS_ID), User.class, String.valueOf(id)); - user.setInternalXenAPI(this); - return user; - } - - /* internal methods */ - - private T postFileForObject(String url, File file, Class objectClass, String... params) { - return httpClient.postFileForObject(url, file, objectClass, params); - } - - private T post(String url, Object object, Class objectClass, String... params) { - return httpClient.postForObject(url, object, objectClass, params); - } - - private T get(String url, Class objectClass, String... params) { - return httpClient.get(url, objectClass, params); - } - - private T put(String url, Object object, Class objectClass, String... params) { - return httpClient.putForObject(url, object, objectClass, params); - } - - private T delete(String url, Class responseType, String... params) { - return httpClient.delete(url, responseType, params); - } - - private List asList(Supplier responseSupplier) { - return Arrays.stream(responseSupplier.get()).peek(t -> t.setInternalXenAPI(this)).collect(Collectors.toList()); - } -} diff --git a/src/es/cadox8/xenapi/api/Me.java b/src/es/cadox8/xenapi/api/Me.java deleted file mode 100644 index 170bfa1..0000000 --- a/src/es/cadox8/xenapi/api/Me.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2021-2021. - * - * This file is part of XenAPI . - * - * XenAPI is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * XenAPI is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - * - * If you have any question feel free to ask at or - */ - -package es.cadox8.xenapi.api; - -import es.cadox8.xenapi.api.user.AvatarUrls; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.Date; -import java.util.Map; - -@EqualsAndHashCode(callSuper = true) -@Data -public class Me extends User { - - public Me(String about, boolean activity_visible, int age, Object[] alert_optout, String allow_post_profile, String allow_receive_news_feed, String allow_send_personal_conversation, String allow_view_identities, String allow_view_profile, AvatarUrls[] avatar_urls, Object[] profile_banner_urls, boolean can_ban, boolean can_converse, boolean can_edit, boolean can_follow, boolean can_ignore, boolean can_post_profile, boolean can_view_profile, boolean can_view_profile_posts, boolean can_warn, boolean content_show_signature, String creation_watch_state, Map custom_fields, String custom_title, Date dob, String email, boolean email_on_conversation, String gravatar, boolean interaction_watch_state, boolean is_admin, boolean is_banned, boolean is_discouraged) { - super(about, activity_visible, age, alert_optout, allow_post_profile, allow_receive_news_feed, allow_send_personal_conversation, allow_view_identities, allow_view_profile, avatar_urls, profile_banner_urls, can_ban, can_converse, can_edit, can_follow, can_ignore, can_post_profile, can_view_profile, can_view_profile_posts, can_warn, content_show_signature, creation_watch_state, custom_fields, custom_title, dob, email, email_on_conversation, gravatar, interaction_watch_state, is_admin, is_banned, is_discouraged); - } -} diff --git a/src/es/cadox8/xenapi/api/User.java b/src/es/cadox8/xenapi/api/User.java deleted file mode 100644 index 7219537..0000000 --- a/src/es/cadox8/xenapi/api/User.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (c) 2021. - * - * This file is part of XenAPI . - * - * XenAPI is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * XenAPI is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - * - * If you have any question feel free to ask at or - */ - -package es.cadox8.xenapi.api; - -import es.cadox8.xenapi.api.user.AvatarUrls; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.Date; -import java.util.Map; - -/** - * User class - */ -@EqualsAndHashCode(callSuper = true) -@Data -@AllArgsConstructor -public class User extends XenForoEntity { - - private String about; - private boolean activity_visible; - private int age; - private Object[] alert_optout; - private String allow_post_profile; - private String allow_receive_news_feed; - private String allow_send_personal_conversation; - private String allow_view_identities; - private String allow_view_profile; - - private AvatarUrls[] avatar_urls; - private Object[] profile_banner_urls; - - private boolean can_ban; - private boolean can_converse; - private boolean can_edit; - private boolean can_follow; - private boolean can_ignore; - private boolean can_post_profile; - private boolean can_view_profile; - private boolean can_view_profile_posts; - private boolean can_warn; - private boolean content_show_signature; - - private String creation_watch_state; - private Map custom_fields; - private String custom_title; - private Date dob; - - private String email; - private boolean email_on_conversation; - - private String gravatar; - - private boolean interaction_watch_state; - private boolean is_admin; - private boolean is_banned; - private boolean is_discouraged; -} diff --git a/src/es/cadox8/xenapi/api/alerts/AlertResponse.java b/src/es/cadox8/xenapi/api/alerts/AlertResponse.java new file mode 100644 index 0000000..3e6e4f1 --- /dev/null +++ b/src/es/cadox8/xenapi/api/alerts/AlertResponse.java @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.alerts; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.auth.UserResponse; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Data; + +@Data +public class AlertResponse implements ApiResponse { + + @Expose + @SerializedName("action") + private String action; + @Expose + @SerializedName("alert_id") + private int alertId; + @Expose + @SerializedName("alert_text") + private String alertText; + @Expose + @SerializedName("alert_url") + private String alertUrl; + @Expose + @SerializedName("alerted_user_id") + private int alertedUserId; + @Expose + @SerializedName("auto_read") + private boolean autoRead; + @Expose + @SerializedName("content_id") + private int contentId; + @Expose + @SerializedName("content_type") + private String contentType; + @Expose + @SerializedName("event_date") + private long eventDate; + @Expose + @SerializedName("read_date") + private long readDate; + @Expose + @SerializedName("User") + private UserResponse user; + @Expose + @SerializedName("user_id") + private int userId; + @Expose + @SerializedName("username") + private String username; + @Expose + @SerializedName("view_date") + private long viewDate; +} \ No newline at end of file diff --git a/src/es/cadox8/xenapi/api/alerts/AllAlertResponse.java b/src/es/cadox8/xenapi/api/alerts/AllAlertResponse.java new file mode 100644 index 0000000..b9475b7 --- /dev/null +++ b/src/es/cadox8/xenapi/api/alerts/AllAlertResponse.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.alerts; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.commons.Pagination; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Data; + +import java.util.List; + +@Data +public class AllAlertResponse implements ApiResponse { + @SerializedName("alerts") + @Expose + private List alerts; + + @SerializedName("pagination") + @Expose + private Pagination pagination; +} diff --git a/src/es/cadox8/xenapi/api/alerts/GetAlerts.java b/src/es/cadox8/xenapi/api/alerts/GetAlerts.java new file mode 100644 index 0000000..433f2c9 --- /dev/null +++ b/src/es/cadox8/xenapi/api/alerts/GetAlerts.java @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.alerts; + +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class GetAlerts implements ApiRequest { + + /** + * + */ + private final int page; + /** + * Unix timestamp of the oldest alert to include. Note that unread or unviewed alerts are always included. + */ + private final int cutoff; + /** + * If true, gets only unviewed alerts. Unviewed alerts have not been seen (in the standard UI). + */ + private final boolean unviewed; + /** + * If true, gets only unread alerts. Unread alerts may have been seen but the content they relate to has not been viewed. + */ + private final boolean unread; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.ALERTS; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.GET; + } + + @Override + public Object query() { + return null; + } + + @Override + public List params() { + final List params = new ArrayList<>(); + + if (this.cutoff > 0) + params.add(new XenNameValuePair("cutoff", this.cutoff)); + + if (this.page > 0) + params.add(new XenNameValuePair("page", this.page)); + + params.add(new XenNameValuePair("unviewed", this.unviewed)); + params.add(new XenNameValuePair("unread", this.unread)); + return params; + } + + @Override + public List body() { + return new ArrayList<>(); + } + + @Override + public Class response() { + return AllAlertResponse.class; + } +} diff --git a/src/es/cadox8/xenapi/api/alerts/GetOneAlert.java b/src/es/cadox8/xenapi/api/alerts/GetOneAlert.java new file mode 100644 index 0000000..4d778c7 --- /dev/null +++ b/src/es/cadox8/xenapi/api/alerts/GetOneAlert.java @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.alerts; + +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class GetOneAlert implements ApiRequest { + + private final int id; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.ALERT; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.GET; + } + + @Override + public Object query() { + return this.id; + } + + @Override + public List params() { + return new ArrayList<>(); + } + + @Override + public List body() { + return new ArrayList<>(); + } + + @Override + public Class response() { + return OneAlertResponse.class; + } +} \ No newline at end of file diff --git a/src/es/cadox8/xenapi/api/alerts/MarkAllAlerts.java b/src/es/cadox8/xenapi/api/alerts/MarkAllAlerts.java new file mode 100644 index 0000000..4809339 --- /dev/null +++ b/src/es/cadox8/xenapi/api/alerts/MarkAllAlerts.java @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.alerts; + +import es.cadox8.xenapi.api.commons.Success; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class MarkAllAlerts implements ApiRequest { + + private final boolean read; + private final boolean viewed; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.ALERTS_MARK; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + return null; + } + + @Override + public List params() { + return List.of(); + } + + @Override + public List body() { + final List params = new ArrayList<>(); + + if (this.read) + params.add(new XenNameValuePair("read", true)); + if (this.viewed) + params.add(new XenNameValuePair("viewed", true)); + + return params; + } + + @Override + public Class response() { + return Success.class; + } +} diff --git a/src/es/cadox8/xenapi/api/alerts/MarkOneAlert.java b/src/es/cadox8/xenapi/api/alerts/MarkOneAlert.java new file mode 100644 index 0000000..a7601a6 --- /dev/null +++ b/src/es/cadox8/xenapi/api/alerts/MarkOneAlert.java @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.alerts; + +import es.cadox8.xenapi.api.commons.Success; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class MarkOneAlert implements ApiRequest { + + private final String id; + + private final boolean read; + private final boolean unread; + private final boolean viewed; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.ALERT_MARK; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + return this.id; + } + + @Override + public List params() { + return List.of(); + } + + @Override + public List body() { + final List params = new ArrayList<>(); + + if (this.read) + params.add(new XenNameValuePair("read", true)); + if (this.unread) + params.add(new XenNameValuePair("unread", true)); + if (this.viewed) + params.add(new XenNameValuePair("viewed", true)); + + return params; + } + + @Override + public Class response() { + return Success.class; + } +} diff --git a/src/es/cadox8/xenapi/api/alerts/OneAlertResponse.java b/src/es/cadox8/xenapi/api/alerts/OneAlertResponse.java new file mode 100644 index 0000000..18f76a3 --- /dev/null +++ b/src/es/cadox8/xenapi/api/alerts/OneAlertResponse.java @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.alerts; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Data; + +@Data +public class OneAlertResponse implements ApiResponse { + @SerializedName("alert") + @Expose + private AlertResponse alert; +} diff --git a/src/es/cadox8/xenapi/api/alerts/PostAlert.java b/src/es/cadox8/xenapi/api/alerts/PostAlert.java new file mode 100644 index 0000000..22cc236 --- /dev/null +++ b/src/es/cadox8/xenapi/api/alerts/PostAlert.java @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.alerts; + +import es.cadox8.xenapi.api.commons.Success; +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class PostAlert implements ApiRequest { + + /** + * Required. ID of the user to receive the alert + */ + @Builder.Default private final int to_user_id = -1; + /** + * Required. Text of the alert. May use the placeholder "{link}" to have the link automatically inserted. + */ + @Builder.Default private final String alert = ""; + /** + * If provided, the user to send the alert from. Otherwise, uses the current API user. May be 0 for an anonymous alert. + */ + private final int from_user_id; + private final String link_url; + private final String link_title; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.ALERTS; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + return null; + } + + @Override + public List params() { + return List.of(); + } + + @Override + public List body() { + final List params = new ArrayList<>(); + + if (this.to_user_id == -1 || this.alert.isEmpty()) + throw new XenForoMissingArgsException("to_user_id or alert!"); + + params.add(new XenNameValuePair("to_user_id", this.to_user_id)); + params.add(new XenNameValuePair("alert", this.alert)); + params.add(new XenNameValuePair("from_user_id", this.from_user_id)); + + if (this.link_url != null) + params.add(new XenNameValuePair("link_url", this.link_url)); + if (this.link_title != null) + params.add(new XenNameValuePair("link_title", this.link_title)); + + return params; + } + + @Override + public Class response() { + return Success.class; + } +} diff --git a/src/es/cadox8/xenapi/api/attachment/AllAttachmentResponse.java b/src/es/cadox8/xenapi/api/attachment/AllAttachmentResponse.java new file mode 100644 index 0000000..06b673c --- /dev/null +++ b/src/es/cadox8/xenapi/api/attachment/AllAttachmentResponse.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2024-2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.attachment; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Getter; +import lombok.ToString; + +import java.util.List; + +@Getter +@ToString +public class AllAttachmentResponse implements ApiResponse { + + @Expose + @SerializedName("attachments") + private List attachments; +} diff --git a/src/es/cadox8/xenapi/api/attachment/AttachmentResponse.java b/src/es/cadox8/xenapi/api/attachment/AttachmentResponse.java new file mode 100644 index 0000000..e8d024f --- /dev/null +++ b/src/es/cadox8/xenapi/api/attachment/AttachmentResponse.java @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2024-2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.attachment; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Getter; +import lombok.ToString; + +@Getter +@ToString +public class AttachmentResponse implements ApiResponse { + + @Expose + @SerializedName("filename") + private String filename; + + @Expose + @SerializedName("file_size") + private int fileSize; + + @Expose + @SerializedName("height") + private int height; + + @Expose + @SerializedName("width") + private int width; + + @Expose + @SerializedName("thumbnail_url") + private String thumbnailUrl; + + @Expose + @SerializedName("direct_url") + private String directUrl; + + @Expose + @SerializedName("is_video") + private boolean isVideo; + + @Expose + @SerializedName("is_audio") + private boolean isAudio; + + @Expose + @SerializedName("attachment_id") + private int attachmentId; + + @Expose + @SerializedName("content_type") + private String contentType; + + @Expose + @SerializedName("content_id") + private int contentId; + + @Expose + @SerializedName("attach_date") + private int attachDate; + + @Expose + @SerializedName("view_count") + private int viewCount; +} diff --git a/src/es/cadox8/xenapi/api/attachment/GetAttachments.java b/src/es/cadox8/xenapi/api/attachment/GetAttachments.java new file mode 100644 index 0000000..67ccc3a --- /dev/null +++ b/src/es/cadox8/xenapi/api/attachment/GetAttachments.java @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.attachment; + +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.List; + +@Builder +public class GetAttachments implements ApiRequest { + + private final String key; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.ATTACHMENTS; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.GET; + } + + @Override + public Object query() { + return null; + } + + @Override + public List params() { + return List.of(new XenNameValuePair("key", this.key)); + } + + @Override + public List body() { + return List.of(); + } + + @Override + public Class response() { + return AllAttachmentResponse.class; + } +} diff --git a/src/es/cadox8/xenapi/api/attachment/NewKeyAttachment.java b/src/es/cadox8/xenapi/api/attachment/NewKeyAttachment.java new file mode 100644 index 0000000..e9e15d1 --- /dev/null +++ b/src/es/cadox8/xenapi/api/attachment/NewKeyAttachment.java @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.attachment; + +public class NewKeyAttachment { +} diff --git a/src/es/cadox8/xenapi/api/attachment/OneAttachmentResponse.java b/src/es/cadox8/xenapi/api/attachment/OneAttachmentResponse.java new file mode 100644 index 0000000..1bdac57 --- /dev/null +++ b/src/es/cadox8/xenapi/api/attachment/OneAttachmentResponse.java @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2024-2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.attachment; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Getter; +import lombok.ToString; + +@Getter +@ToString +public class OneAttachmentResponse implements ApiResponse { + + @Expose + @SerializedName("attachment") + private AttachmentResponse attachment; +} diff --git a/src/es/cadox8/xenapi/api/attachment/UploadAttachment.java b/src/es/cadox8/xenapi/api/attachment/UploadAttachment.java new file mode 100644 index 0000000..5751d9f --- /dev/null +++ b/src/es/cadox8/xenapi/api/attachment/UploadAttachment.java @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.attachment; + +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +@Builder +public class UploadAttachment implements ApiRequest { + + private final String key; + private final File attachment; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.ATTACHMENTS; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + return null; + } + + @Override + public List params() { + return List.of(); + } + + @Override + public List body() { + final List body = new ArrayList<>(); + body.add(new XenNameValuePair("key", this.key)); + body.add(new XenNameValuePair("attachment", this.attachment)); + return body; + } + + @Override + public Class response() { + return OneAttachmentResponse.class; + } +} diff --git a/src/es/cadox8/xenapi/api/auth/AuthTokenResponse.java b/src/es/cadox8/xenapi/api/auth/AuthTokenResponse.java new file mode 100644 index 0000000..8ef8765 --- /dev/null +++ b/src/es/cadox8/xenapi/api/auth/AuthTokenResponse.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.auth; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Data; + +@Data +public class AuthTokenResponse implements ApiResponse { + + @Expose + @SerializedName("login_token") + private String loginToken; + + @Expose + @SerializedName("login_url") + private String loginUrl; + + @Expose + @SerializedName("expiry_date") + private Integer expiryDate; +} diff --git a/src/es/cadox8/xenapi/api/auth/PostAuth.java b/src/es/cadox8/xenapi/api/auth/PostAuth.java new file mode 100644 index 0000000..acac898 --- /dev/null +++ b/src/es/cadox8/xenapi/api/auth/PostAuth.java @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.auth; + +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenNameValuePair; +import es.cadox8.xenapi.utils.XenforoPaths; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class PostAuth implements ApiRequest { + + private final String login; + private final String password; + private final String limit_ip; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.AUTH; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + return null; + } + + @Override + public List params() { + return List.of(); + } + + @Override + public List body() { + final List body = new ArrayList<>(); + + body.add(new XenNameValuePair("login", this.login)); + body.add(new XenNameValuePair("password", this.password)); + + if (this.limit_ip != null) + body.add(new XenNameValuePair("limit_ip", this.limit_ip)); + + return body; + } + + @Override + public Class response() { + return UserResponse.class; + } +} diff --git a/src/es/cadox8/xenapi/api/auth/PostAuthSession.java b/src/es/cadox8/xenapi/api/auth/PostAuthSession.java new file mode 100644 index 0000000..fad5bc3 --- /dev/null +++ b/src/es/cadox8/xenapi/api/auth/PostAuthSession.java @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.auth; + +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenNameValuePair; +import es.cadox8.xenapi.utils.XenforoPaths; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class PostAuthSession implements ApiRequest { + + private final String sessionId; + private final String rememberCookie; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.AUTH_SESSION; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + return null; + } + + @Override + public List params() { + return List.of(); + } + + @Override + public List body() { + final List list = new ArrayList<>(); + + if (this.sessionId == null || this.sessionId.isEmpty()) + throw new XenForoMissingArgsException("sessionId"); + + if (this.rememberCookie == null || this.rememberCookie.isEmpty()) + throw new XenForoMissingArgsException("rememberCookie"); + + list.add(new XenNameValuePair("session_id", this.sessionId)); + list.add(new XenNameValuePair("remember_cookie", this.rememberCookie)); + + return list; + } + + @Override + public Class response() { + return UserResponse.class; + } +} diff --git a/src/es/cadox8/xenapi/api/auth/PostAuthToken.java b/src/es/cadox8/xenapi/api/auth/PostAuthToken.java new file mode 100644 index 0000000..014cae4 --- /dev/null +++ b/src/es/cadox8/xenapi/api/auth/PostAuthToken.java @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.auth; + +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenNameValuePair; +import es.cadox8.xenapi.utils.XenforoPaths; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class PostAuthToken implements ApiRequest { + + private final Integer userId; + private final String limitIP; + private final String returnUrl; + private final Boolean force; + @Builder.Default private final Boolean remember = true; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.LOGIN_TOKEN; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + return null; + } + + @Override + public List params() { + return List.of(); + } + + @Override + public List body() { + final List list = new ArrayList<>(); + + if (this.userId == null) + throw new XenForoMissingArgsException("userId"); + + if (this.limitIP != null && !this.limitIP.isEmpty()) + list.add(new XenNameValuePair("limit_ip", this.limitIP)); + + if (this.returnUrl != null && !this.returnUrl.isEmpty()) + list.add(new XenNameValuePair("return_url", this.returnUrl)); + + if (this.force != null) + list.add(new XenNameValuePair("force", this.force)); + + list.add(new XenNameValuePair("remember", this.remember)); + + return list; + } + + @Override + public Class response() { + return AuthTokenResponse.class; + } +} diff --git a/src/es/cadox8/xenapi/api/auth/UserResponse.java b/src/es/cadox8/xenapi/api/auth/UserResponse.java new file mode 100644 index 0000000..2f29b30 --- /dev/null +++ b/src/es/cadox8/xenapi/api/auth/UserResponse.java @@ -0,0 +1,306 @@ +/* + * Copyright (c) 2021-2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.auth; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.commons.AvatarUrls; +import es.cadox8.xenapi.api.commons.ProfileBannerUrls; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.AllArgsConstructor; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * User class + */ +@Data +@AllArgsConstructor +public class UserResponse implements ApiResponse { + + @Expose + @SerializedName("success") + private boolean success; + + @Expose + @SerializedName("user") + private UserData user; + + @Data + @AllArgsConstructor + public static class UserData { + + @Expose + @SerializedName("about") + private String about; + + @Expose + @SerializedName("activity_visible") + private boolean activityVisible; + + @Expose + @SerializedName("age") + private int age; + + @Expose + @SerializedName("alert_optout") + private List alertOptout; + + @Expose + @SerializedName("allow_post_profile") + private String allowPostProfile; + + @Expose + @SerializedName("allow_receive_news_feed") + private String allowReceiveNewsFeed; + + @Expose + @SerializedName("allow_send_personal_conversation") + private String allowSendPersonalConversation; + + @Expose + @SerializedName("allow_view_identities") + private String allowViewIdentities; + + @Expose + @SerializedName("allow_view_profile") + private String allowViewProfile; + + @Expose + @SerializedName("avatar_urls") + private AvatarUrls avatarUrls; + + @Expose + @SerializedName("can_ban") + private boolean canBan; + + @Expose + @SerializedName("can_converse") + private boolean canConverse; + + @Expose + @SerializedName("can_edit") + private boolean canEdit; + + @Expose + @SerializedName("can_follow") + private boolean canFollow; + + @Expose + @SerializedName("can_ignore") + private boolean canIgnore; + + @Expose + @SerializedName("can_post_profile") + private boolean canPostProfile; + + @Expose + @SerializedName("can_view_profile") + private boolean canViewProfile; + + @Expose + @SerializedName("can_view_profile_posts") + private boolean canViewProfilePosts; + + @Expose + @SerializedName("can_warn") + private boolean canWarn; + + @Expose + @SerializedName("content_show_signature") + private boolean contentShowSignature; + + @Expose + @SerializedName("creation_watch_state") + private String creationWatchState; + + @Expose + @SerializedName("custom_fields") + private Map customFields; + + @Expose + @SerializedName("custom_title") + private String customTitle; + + @Expose + @SerializedName("email") + private String email; + + @Expose + @SerializedName("email_on_conversation") + private boolean emailOnConversation; + + @Expose + @SerializedName("gravatar") + private String gravatar; + + @Expose + @SerializedName("interaction_watch_state") + private String interactionWatchState; + + @Expose + @SerializedName("is_admin") + private boolean isAdmin; + + @Expose + @SerializedName("is_banned") + private boolean isBanned; + + @Expose + @SerializedName("is_discouraged") + private boolean isDiscouraged; + + @Expose + @SerializedName("is_followed") + private boolean isFollowed; + + @Expose + @SerializedName("is_ignored") + private boolean isIgnored; + + @Expose + @SerializedName("is_moderator") + private boolean isModerator; + + @Expose + @SerializedName("is_staff") + private boolean isStaff; + + @Expose + @SerializedName("is_super_admin") + private boolean isSuperAdmin; + + @Expose + @SerializedName("last_activity") + private long lastActivity; + + @Expose + @SerializedName("location") + private String location; + + @Expose + @SerializedName("message_count") + private int messageCount; + + @Expose + @SerializedName("profile_banner_urls") + private ProfileBannerUrls profileBannerUrls; + + @Expose + @SerializedName("push_on_conversation") + private boolean pushOnConversation; + + @Expose + @SerializedName("push_optout") + private List pushOptout; + + @Expose + @SerializedName("question_solution_count") + private int questionSolutionCount; + + @Expose + @SerializedName("reaction_score") + private int reactionScore; + + @Expose + @SerializedName("receive_admin_email") + private boolean receiveAdminEmail; + + @Expose + @SerializedName("register_date") + private long registerDate; + + @Expose + @SerializedName("secondary_group_ids") + private List secondaryGroupIds; + + @Expose + @SerializedName("show_dob_date") + private boolean showDobDate; + + @Expose + @SerializedName("show_dob_year") + private boolean showDobYear; + + @Expose + @SerializedName("signature") + private String signature; + + @Expose + @SerializedName("timezone") + private String timezone; + + @Expose + @SerializedName("trophy_points") + private int trophyPoints; + + @Expose + @SerializedName("usa_tfa") + private boolean usaTfa; + + @Expose + @SerializedName("use_tfa") + private boolean useTfa; + + @Expose + @SerializedName("user_group_id") + private int userGroupId; + + @Expose + @SerializedName("user_id") + private int userId; + + @Expose + @SerializedName("user_state") + private String userState; + + @Expose + @SerializedName("user_title") + private String userTitle; + + @Expose + @SerializedName("username") + private String username; + + @Expose + @SerializedName("view_url") + private String viewUrl; + + @Expose + @SerializedName("visible") + private boolean visible; + + @Expose + @SerializedName("vote_score") + private int voteScore; + + @Expose + @SerializedName("warning_points") + private int warningPoints; + + @Expose + @SerializedName("website") + private String website; + } +} diff --git a/src/es/cadox8/xenapi/api/user/AvatarUrls.java b/src/es/cadox8/xenapi/api/commons/AvatarUrls.java similarity index 93% rename from src/es/cadox8/xenapi/api/user/AvatarUrls.java rename to src/es/cadox8/xenapi/api/commons/AvatarUrls.java index df6c98a..e07f070 100644 --- a/src/es/cadox8/xenapi/api/user/AvatarUrls.java +++ b/src/es/cadox8/xenapi/api/commons/AvatarUrls.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021-2021. + * Copyright (c) 2021-2024 * * This file is part of XenAPI . * @@ -19,7 +19,7 @@ * If you have any question feel free to ask at or */ -package es.cadox8.xenapi.api.user; +package es.cadox8.xenapi.api.commons; import lombok.Data; diff --git a/src/es/cadox8/xenapi/api/commons/Conversation.java b/src/es/cadox8/xenapi/api/commons/Conversation.java new file mode 100644 index 0000000..d577b7d --- /dev/null +++ b/src/es/cadox8/xenapi/api/commons/Conversation.java @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.commons; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.auth.UserResponse; +import kotlin.Pair; +import lombok.Getter; +import lombok.ToString; + +import java.util.List; + +@Getter +@ToString +public class Conversation { + + @Expose + @SerializedName("username") + private String username; + + @Expose + @SerializedName("recipients") + private List> recipients; + + @Expose + @SerializedName("is_starred") + private boolean isStarred; + + @Expose + @SerializedName("is_unread") + private boolean isUnread; + + @Expose + @SerializedName("can_edit") + private boolean canEdit; + + @Expose + @SerializedName("can_reply") + private boolean canReply; + + @Expose + @SerializedName("can_invite") + private boolean canInvite; + + @Expose + @SerializedName("can_upload_attachment") + private boolean canUploadAttachment; + + @Expose + @SerializedName("view_url") + private String viewUrl; + + @Expose + @SerializedName("conversation_id") + private int conversationId; + + @Expose + @SerializedName("title") + private String title; + + @Expose + @SerializedName("user_id") + private int userId; + + @Expose + @SerializedName("start_date") + private int startDate; + + @Expose + @SerializedName("open_invite") + private boolean openInvite; + + @Expose + @SerializedName("conversation_open") + private boolean conversationOpen; + + @Expose + @SerializedName("reply_count") + private int replyCount; + + @Expose + @SerializedName("recipient_count") + private int recipientCount; + + @Expose + @SerializedName("first_message_id") + private int firstMessageId; + + @Expose + @SerializedName("last_message_date") + private int lastMessageDate; + + @Expose + @SerializedName("last_message_id") + private int lastMessageId; + + @Expose + @SerializedName("last_message_user_id") + private int lastMessageUserId; + + @Expose + @SerializedName("starter") + private UserResponse starter; +} diff --git a/src/es/cadox8/xenapi/api/commons/ConversationMessage.java b/src/es/cadox8/xenapi/api/commons/ConversationMessage.java new file mode 100644 index 0000000..9492ebd --- /dev/null +++ b/src/es/cadox8/xenapi/api/commons/ConversationMessage.java @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.commons; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.attachment.AttachmentResponse; +import es.cadox8.xenapi.api.auth.UserResponse; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Getter; +import lombok.ToString; + +import java.util.List; + +@ToString +@Getter +public class ConversationMessage implements ApiResponse { + + @Expose + @SerializedName("username") + private String username; + + @Expose + @SerializedName("is_unread") + private boolean isUnread; + + @Expose + @SerializedName("message_parsed") + private String messageParsed; + + @Expose + @SerializedName("can_edit") + private boolean canEdit; + + @Expose + @SerializedName("can_react") + private boolean canReact; + + @Expose + @SerializedName("view_url") + private String viewUrl; + + @Expose + @SerializedName("Conversation") + private Conversation conversation; + + @Expose + @SerializedName("Attachments") + private List attachments; + + @Expose + @SerializedName("is_reacted_to") + private boolean isReactedTo; + + @Expose + @SerializedName("visitor_reaction_id") + private int visitorReactionId; + + @Expose + @SerializedName("message_id") + private int messageId; + + @Expose + @SerializedName("conversation_id") + private int conversationId; + + @Expose + @SerializedName("message_date") + private int messageDate; + + @Expose + @SerializedName("user_id") + private int userId; + + @Expose + @SerializedName("message") + private String message; + + @Expose + @SerializedName("attach_count") + private int attachCount; + + @Expose + @SerializedName("reaction_score") + private int reactionScore; + + @Expose + @SerializedName("User") + private UserResponse user; +} diff --git a/src/es/cadox8/xenapi/api/XenForoEntity.java b/src/es/cadox8/xenapi/api/commons/Errors.java similarity index 59% rename from src/es/cadox8/xenapi/api/XenForoEntity.java rename to src/es/cadox8/xenapi/api/commons/Errors.java index 0b536f2..3e58020 100644 --- a/src/es/cadox8/xenapi/api/XenForoEntity.java +++ b/src/es/cadox8/xenapi/api/commons/Errors.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021. + * Copyright (c) 2024 * * This file is part of XenAPI . * @@ -19,24 +19,29 @@ * If you have any question feel free to ask at or */ -package es.cadox8.xenapi.api; +package es.cadox8.xenapi.api.commons; import com.google.gson.annotations.Expose; -import es.cadox8.xenapi.XenAPI; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Builder; +import lombok.Getter; +import lombok.ToString; -public class XenForoEntity { +import java.util.List; - @Expose(serialize = false, deserialize = false) - protected XenAPI xenAPIService; - @SuppressWarnings("unchecked") - public T setInternalXenAPI(XenAPI xenAPIService) { - this.xenAPIService = xenAPIService; - return (T) this; - } +@Getter +@ToString +public class Errors implements ApiResponse { + + @Expose private List errors; - protected XenAPI getXenAPIService() { - if (xenAPIService == null) throw new IllegalStateException("The xenAPI not initialized. Please call setInternalXenAPI before."); - return xenAPIService; + @Getter + @ToString + @Builder + public static class ErrorData { + @Expose private String code; + @Expose private String message; + @Expose private List params; } } diff --git a/src/es/cadox8/xenapi/api/commons/Forum.java b/src/es/cadox8/xenapi/api/commons/Forum.java new file mode 100644 index 0000000..00e6964 --- /dev/null +++ b/src/es/cadox8/xenapi/api/commons/Forum.java @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.commons; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import lombok.Getter; +import lombok.ToString; + +@ToString +@Getter +public class Forum { + + @Expose + @SerializedName("forum_type_id") + private String forumTypeId; + + @Expose + @SerializedName("allow_posting") + private boolean allowPosting; + + @Expose + @SerializedName("require_prefix") + private boolean requirePrefix; + + @Expose + @SerializedName("min_tags") + private int minTags; +} diff --git a/src/es/cadox8/xenapi/api/commons/Node.java b/src/es/cadox8/xenapi/api/commons/Node.java new file mode 100644 index 0000000..a168f4b --- /dev/null +++ b/src/es/cadox8/xenapi/api/commons/Node.java @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.commons; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Getter; +import lombok.ToString; + +import java.util.List; + +@ToString +@Getter +public class Node implements ApiResponse { + + @Expose + @SerializedName("breadcrumbs") + private List breadcrumbs; + + @Expose + @SerializedName("view_url") + private String viewUrl; + + @Expose + @SerializedName("node_id") + private int nodeId; + + @Expose + @SerializedName("title") + private String title; + + @Expose + @SerializedName("node_name") + private String nodeName; + + @Expose + @SerializedName("description") + private String description; + + @Expose + @SerializedName("node_type_id") + private TypeNodeId nodeTypeId; + + @Expose + @SerializedName("parent_node_id") + private int parentNodeId; + + @Expose + @SerializedName("display_order") + private int displayOrder; + + @Expose + @SerializedName("display_in_list") + private boolean displayInList; + + @ToString + @Getter + public static class Breadcrumbs { + @Expose + @SerializedName("node_id") + private int nodeId; + + @Expose + @SerializedName("title") + private String title; + + @Expose + @SerializedName("node_type_id") + private TypeNodeId nodeTypeId; + } +} diff --git a/src/es/cadox8/xenapi/exceptions/NotFoundException.java b/src/es/cadox8/xenapi/api/commons/Order.java similarity index 70% rename from src/es/cadox8/xenapi/exceptions/NotFoundException.java rename to src/es/cadox8/xenapi/api/commons/Order.java index 5d607c9..d951815 100644 --- a/src/es/cadox8/xenapi/exceptions/NotFoundException.java +++ b/src/es/cadox8/xenapi/api/commons/Order.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021. + * Copyright (c) 2025 * * This file is part of XenAPI . * @@ -19,16 +19,19 @@ * If you have any question feel free to ask at or */ -package es.cadox8.xenapi.exceptions; +package es.cadox8.xenapi.api.commons; -import es.cadox8.xenapi.api.XenForoEntity; +import lombok.Getter; +import lombok.RequiredArgsConstructor; -public class NotFoundException extends XenForoBadRequestException { - public NotFoundException(String message, Throwable cause) { - super(message, cause); - } +@Getter +@RequiredArgsConstructor +public enum Order { + TITLE("title"), + REPLIES("reply_count"), + VIEWS("view_count"), + VOTES("vote_score"), + SCORE("first_post_reaction_score"); - public NotFoundException(String message) { - super(message); - } + private final String order; } diff --git a/src/es/cadox8/xenapi/exceptions/NotAuthorizedException.java b/src/es/cadox8/xenapi/api/commons/Pagination.java similarity index 67% rename from src/es/cadox8/xenapi/exceptions/NotAuthorizedException.java rename to src/es/cadox8/xenapi/api/commons/Pagination.java index 700589a..ce4e26e 100644 --- a/src/es/cadox8/xenapi/exceptions/NotAuthorizedException.java +++ b/src/es/cadox8/xenapi/api/commons/Pagination.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021. + * Copyright (c) 2024 * * This file is part of XenAPI . * @@ -19,18 +19,19 @@ * If you have any question feel free to ask at or */ -package es.cadox8.xenapi.exceptions; +package es.cadox8.xenapi.api.commons; -public class NotAuthorizedException extends XenForoBadRequestException { - public NotAuthorizedException(String message) { - super(message); - } +import com.google.gson.annotations.Expose; +import lombok.Getter; +import lombok.ToString; - public NotAuthorizedException() { - this("Not authorized"); - } +@ToString +@Getter +public class Pagination { - public NotAuthorizedException(String response, Throwable cause) { - super(response, cause); - } + @Expose private int current_page; + @Expose private int last_page; + @Expose private int per_page; + @Expose private int shown; + @Expose private int total; } diff --git a/src/es/cadox8/xenapi/api/commons/Post.java b/src/es/cadox8/xenapi/api/commons/Post.java new file mode 100644 index 0000000..4f6c50f --- /dev/null +++ b/src/es/cadox8/xenapi/api/commons/Post.java @@ -0,0 +1,160 @@ +/* + * Copyright (c) 2-125 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.commons; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.attachment.AttachmentResponse; +import es.cadox8.xenapi.api.auth.UserResponse; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +@Data +public class Post implements ApiResponse { + + @Expose + @SerializedName("username") + private String username = ""; + + @Expose + @SerializedName("is_first_post") + private Boolean isFirstPost = false; + + @Expose + @SerializedName("is_last_post") + private Boolean isLastPost = false; + + @Expose + @SerializedName("is_unread") + private Boolean isUnread = false; + + @Expose + @SerializedName("message_parsed") + private String htmlMessage = ""; + + @Expose + @SerializedName("can_edit") + private Boolean canEdit = false; + + @Expose + @SerializedName("can_soft_delete") + private Boolean canSoftDelete = false; + + @Expose + @SerializedName("can_hard_delete") + private Boolean canHardDelete = false; + + @Expose + @SerializedName("can_react") + private Boolean canReact = false; + + @Expose + @SerializedName("can_view_attachments") + private Boolean canViewAttachments = false; + + @Expose + @SerializedName("view_url") + private String viewUrl = ""; + + @Expose + @SerializedName("Thread") + private Thread thread; + + @Expose + @SerializedName("Attachments") + private List attachments = new ArrayList<>(); + + @Expose + @SerializedName("is_reacted_to") + private Boolean hasReactedTo = false; + + @Expose + @SerializedName("visitor_reaction_id") + private Integer visitorReactionId = -1; + + @Expose + @SerializedName("vote_score") + private Integer voteScore = -1; + + @Expose + @SerializedName("can_content_vote") + private Boolean canVote = false; + + @Expose + @SerializedName("allowed_content_vote_types") + private List allowedContentVoteTypes = new ArrayList<>(); + + @Expose + @SerializedName("is_content_voted") + private Boolean isContentVoted = false; + + @Expose + @SerializedName("visitor_content_vote") + private String visitorContentVote = ""; + + @Expose + @SerializedName("post_id") + private Integer postId = -1; + + @Expose + @SerializedName("thread_id") + private Integer threadId = -1; + + @Expose + @SerializedName("user_id") + private Integer userId = -1; + + @Expose + @SerializedName("post_date") + private Integer postDate = -1; + + @Expose + @SerializedName("message") + private String message = ""; + + @Expose + @SerializedName("message_state") + private String messageState = ""; + + @Expose + @SerializedName("attach_count") + private Integer attachCount = -1; + + @Expose + @SerializedName("warning_message") + private String warningMessage = ""; + + @Expose + @SerializedName("position") + private Integer position = -1; + + @Expose + @SerializedName("reaction_score") + private Integer reactionScore = -1; + + @Expose + @SerializedName("User") + private UserResponse.UserData user = null; +} diff --git a/src/es/cadox8/xenapi/api/commons/ProfileBannerUrls.java b/src/es/cadox8/xenapi/api/commons/ProfileBannerUrls.java new file mode 100644 index 0000000..1e9b188 --- /dev/null +++ b/src/es/cadox8/xenapi/api/commons/ProfileBannerUrls.java @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.commons; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import lombok.Data; + +@Data +public class ProfileBannerUrls { + @Expose + @SerializedName("l") + private String l; + + @Expose + @SerializedName("m") + private String m; +} diff --git a/src/es/cadox8/xenapi/api/commons/ProfilePost.java b/src/es/cadox8/xenapi/api/commons/ProfilePost.java new file mode 100644 index 0000000..7dbc913 --- /dev/null +++ b/src/es/cadox8/xenapi/api/commons/ProfilePost.java @@ -0,0 +1,135 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.commons; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.attachment.AttachmentResponse; +import es.cadox8.xenapi.api.auth.UserResponse; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Data; + +import java.util.List; + +@Data +public class ProfilePost implements ApiResponse { + + @Expose + @SerializedName("username") + private String username; + + @Expose + @SerializedName("message_parsed") + private String messageParsed; + + @Expose + @SerializedName("can_edit") + private boolean canEdit; + + @Expose + @SerializedName("can_soft_delete") + private boolean canSoftDelete; + + @Expose + @SerializedName("can_hard_delete") + private boolean canHardDelete; + + @Expose + @SerializedName("can_react") + private boolean canReact; + + @Expose + @SerializedName("can_view_attachments") + private boolean canViewAttachments; + + @Expose + @SerializedName("view_url") + private String viewUrl; + + @Expose + @SerializedName("ProfileUser") + private UserResponse profileUser; + + @Expose + @SerializedName("Attachments") + private List attachments; + + @Expose + @SerializedName("LatestComments") + private List latestComments; + + @Expose + @SerializedName("is_reacted_to") + private boolean isReactedTo; + + @Expose + @SerializedName("visitor_reaction_id") + private int visitorReactionId; + + @Expose + @SerializedName("profile_post_id") + private int profilePostId; + + @Expose + @SerializedName("profile_user_id") + private int profileUserId; + + @Expose + @SerializedName("user_id") + private int userId; + + @Expose + @SerializedName("post_date") + private int postDate; + + @Expose + @SerializedName("message") + private String message; + + @Expose + @SerializedName("message_state") + private String messageState; + + @Expose + @SerializedName("warning_message") + private String warningMessage; + + @Expose + @SerializedName("comment_count") + private int commentCount; + + @Expose + @SerializedName("first_comment_date") + private int firstCommentDate; + + @Expose + @SerializedName("last_comment_date") + private int lastCommentDate; + + @Expose + @SerializedName("reaction_score") + private int reactionScore; + + @Expose + @SerializedName("User") + private UserResponse user; +} diff --git a/src/es/cadox8/xenapi/api/commons/ProfilePostComment.java b/src/es/cadox8/xenapi/api/commons/ProfilePostComment.java new file mode 100644 index 0000000..3ccc3ec --- /dev/null +++ b/src/es/cadox8/xenapi/api/commons/ProfilePostComment.java @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.commons; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.attachment.AttachmentResponse; +import es.cadox8.xenapi.api.auth.UserResponse; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Data; + +@Data +public class ProfilePostComment implements ApiResponse { + + @Expose + @SerializedName("username") + private String username; + + @Expose + @SerializedName("message_parsed") + private String messageParsed; + + @Expose + @SerializedName("can_edit") + private boolean canEdit; + + @Expose + @SerializedName("can_soft_delete") + private boolean canSoftDelete; + + @Expose + @SerializedName("can_hard_delete") + private boolean canHardDelete; + + @Expose + @SerializedName("can_react") + private boolean canReact; + + @Expose + @SerializedName("can_view_attachments") + private boolean canViewAttachments; + + @Expose + @SerializedName("Attachments") + private AttachmentResponse[] attachments; + + @Expose + @SerializedName("ProfilePost") + private ProfilePost profilePost; + + @Expose + @SerializedName("is_reacted_to") + private boolean isReactedTo; + + @Expose + @SerializedName("visitor_reaction_id") + private int visitorReactionId; + + @Expose + @SerializedName("profile_post_comment_id") + private int profilePostCommentId; + + @Expose + @SerializedName("profile_post_id") + private int profilePostId; + + @Expose + @SerializedName("user_id") + private int userId; + + @Expose + @SerializedName("comment_date") + private int commentDate; + + @Expose + @SerializedName("message") + private String message; + + @Expose + @SerializedName("message_state") + private String messageState; + + @Expose + @SerializedName("warning_message") + private String warningMessage; + + @Expose + @SerializedName("reaction_score") + private int reactionScore; + + @Expose + @SerializedName("User") + private UserResponse user; +} diff --git a/src/es/cadox8/xenapi/api/commons/ReactResponse.java b/src/es/cadox8/xenapi/api/commons/ReactResponse.java new file mode 100644 index 0000000..a87244f --- /dev/null +++ b/src/es/cadox8/xenapi/api/commons/ReactResponse.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.commons; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Data; + +@Data +public class ReactResponse implements ApiResponse { + + @Expose + @SerializedName("success") + private Boolean success; + + @Expose + @SerializedName("action") + private String action; +} diff --git a/src/es/cadox8/xenapi/api/commons/Sort.java b/src/es/cadox8/xenapi/api/commons/Sort.java new file mode 100644 index 0000000..c4b339e --- /dev/null +++ b/src/es/cadox8/xenapi/api/commons/Sort.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.commons; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@Getter +@RequiredArgsConstructor +public enum Sort { + // Oldest firsts + ASC("asc"), + // Newest firsts + DESC("desc"); + + private final String direction; +} diff --git a/src/es/cadox8/xenapi/api/commons/Success.java b/src/es/cadox8/xenapi/api/commons/Success.java new file mode 100644 index 0000000..26e5dd7 --- /dev/null +++ b/src/es/cadox8/xenapi/api/commons/Success.java @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.commons; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Data; + +@Data +public class Success implements ApiResponse { + + @Expose + @SerializedName("success") + private boolean success; +} diff --git a/src/es/cadox8/xenapi/api/commons/Thread.java b/src/es/cadox8/xenapi/api/commons/Thread.java new file mode 100644 index 0000000..5409684 --- /dev/null +++ b/src/es/cadox8/xenapi/api/commons/Thread.java @@ -0,0 +1,208 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.commons; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.auth.UserResponse; +import lombok.Getter; +import lombok.ToString; + +import java.util.List; +import java.util.Map; + +@ToString +@Getter +public class Thread { + + @Expose + @SerializedName("username") + private String username; + + @Expose + @SerializedName("is_watching") + private boolean isWatching = false; + + @Expose + @SerializedName("visitor_post_count") + private int visitorPostCount = 0; + + @Expose + @SerializedName("is_unread") + private boolean isUnread = false; + + @Expose + @SerializedName("custom_fields") + private Map customFields; + + @Expose + @SerializedName("tags") + private List tags; + + @Expose + @SerializedName("prefix") + private String prefix = ""; + + @Expose + @SerializedName("can_edit") + private boolean canEdit; + + @Expose + @SerializedName("can_edit_tags") + private boolean canEditTags; + + @Expose + @SerializedName("can_reply") + private boolean canReply; + + @Expose + @SerializedName("can_soft_delete") + private boolean canSoftDelete; + + @Expose + @SerializedName("can_hard_delete") + private boolean canHardDelete; + + @Expose + @SerializedName("can_view_attachments") + private boolean canViewAttachments; + + @Expose + @SerializedName("view_url") + private String viewUrl; + + @Expose + @SerializedName("is_first_post_pinned") + private boolean isFirstPostPinned; + + @Expose + @SerializedName("highlighted_post_ids") + private List highlightedPostIds; + + @Expose + @SerializedName("is_search_engine_indexable") + private boolean isSearchEngineIndexable; + + @Expose + @SerializedName("index_state") + private String indexState = ""; + + @Expose + @SerializedName("Forum") + private Node forum; + + @Expose + @SerializedName("vote_score") + private int voteScore = 0; + + @Expose + @SerializedName("can_content_vote") + private boolean canContentVote = false; + + @Expose + @SerializedName("allowed_content_vote_types") + private List allowedContentVoteTypes; + + @Expose + @SerializedName("is_content_voted") + private boolean isContentVoted = false; + + @Expose + @SerializedName("visitor_content_vote") + private String visitorContentVote = ""; + + @Expose + @SerializedName("thread_id") + private int threadId; + + @Expose + @SerializedName("node_id") + private int nodeId; + + @Expose + @SerializedName("title") + private String title; + + @Expose + @SerializedName("reply_count") + private int replyCount; + + @Expose + @SerializedName("view_count") + private int viewCount; + + @Expose + @SerializedName("user_id") + private int userId; + + @Expose + @SerializedName("post_date") + private int postDate; + + @Expose + @SerializedName("sticky") + private boolean sticky; + + @Expose + @SerializedName("discussion_state") + private String discussionState; + + @Expose + @SerializedName("discussion_open") + private boolean discussionOpen; + + @Expose + @SerializedName("discussion_type") + private String discussionType; + + @Expose + @SerializedName("first_post_id") + private int firstPostId; + + @Expose + @SerializedName("last_post_date") + private int lastPostDate; + + @Expose + @SerializedName("last_post_id") + private int lastPostId; + + @Expose + @SerializedName("last_post_user_id") + private int lastPostUserId; + + @Expose + @SerializedName("last_post_username") + private String lastPostUsername; + + @Expose + @SerializedName("first_post_reaction_score") + private int firstPostReactionScore; + + @Expose + @SerializedName("prefix_id") + private int prefixId; + + @Expose + @SerializedName("User") + private UserResponse user; +} diff --git a/src/es/cadox8/xenapi/api/commons/TypeNodeId.java b/src/es/cadox8/xenapi/api/commons/TypeNodeId.java new file mode 100644 index 0000000..6b76f93 --- /dev/null +++ b/src/es/cadox8/xenapi/api/commons/TypeNodeId.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.commons; + +import com.google.gson.annotations.SerializedName; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@Getter +@RequiredArgsConstructor +public enum TypeNodeId { + @SerializedName("Forum") FORUM("Forum"), + @SerializedName("Category") CATEGORY("Category"), + @SerializedName("LinkForum") LINK_FORUM("LinkForum"), + @SerializedName("SearchForum") SEARCH_FORUM("SearchForum"), + @SerializedName("Page") PAGE("Page"); + + private final String nodeType; +} \ No newline at end of file diff --git a/src/es/cadox8/xenapi/api/commons/UpdateEmail.java b/src/es/cadox8/xenapi/api/commons/UpdateEmail.java new file mode 100644 index 0000000..6238724 --- /dev/null +++ b/src/es/cadox8/xenapi/api/commons/UpdateEmail.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.commons; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import lombok.Getter; +import lombok.ToString; + +@Getter +@ToString +public class UpdateEmail extends Success { + + @Expose + @SerializedName("confirmation_required") + private boolean confirmationRequired; +} diff --git a/src/es/cadox8/xenapi/api/conversation/ConversationCreateResponse.java b/src/es/cadox8/xenapi/api/conversation/ConversationCreateResponse.java new file mode 100644 index 0000000..52c1d35 --- /dev/null +++ b/src/es/cadox8/xenapi/api/conversation/ConversationCreateResponse.java @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.conversation; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.commons.Conversation; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Getter; +import lombok.ToString; + +@ToString +@Getter +public class ConversationCreateResponse implements ApiResponse { + + @Expose + @SerializedName("success") + private boolean success; + + @Expose + @SerializedName("conversation") + private Conversation conversation; +} diff --git a/src/es/cadox8/xenapi/api/conversation/ConversationInfoResponse.java b/src/es/cadox8/xenapi/api/conversation/ConversationInfoResponse.java new file mode 100644 index 0000000..feba287 --- /dev/null +++ b/src/es/cadox8/xenapi/api/conversation/ConversationInfoResponse.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.conversation; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.commons.Conversation; +import es.cadox8.xenapi.api.commons.ConversationMessage; +import es.cadox8.xenapi.api.commons.Pagination; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Getter; +import lombok.ToString; + +import java.util.List; + +@ToString +@Getter +public class ConversationInfoResponse implements ApiResponse { + + @Expose + @SerializedName("conversation") + private Conversation conversation; + + @Expose + @SerializedName("messages") + private List messages; + + @Expose + @SerializedName("pagination") + private Pagination pagination; +} diff --git a/src/es/cadox8/xenapi/api/conversation/ConversationMessagesResponse.java b/src/es/cadox8/xenapi/api/conversation/ConversationMessagesResponse.java new file mode 100644 index 0000000..47e92ad --- /dev/null +++ b/src/es/cadox8/xenapi/api/conversation/ConversationMessagesResponse.java @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.conversation; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.commons.ConversationMessage; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Getter; +import lombok.ToString; + +@ToString +@Getter +public class ConversationMessagesResponse implements ApiResponse { + + @Expose + @SerializedName("success") + private boolean success; + + @Expose + @SerializedName("message") + private ConversationMessage message; +} diff --git a/src/es/cadox8/xenapi/api/conversation/ConversationReactResponse.java b/src/es/cadox8/xenapi/api/conversation/ConversationReactResponse.java new file mode 100644 index 0000000..cc5755d --- /dev/null +++ b/src/es/cadox8/xenapi/api/conversation/ConversationReactResponse.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.conversation; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Getter; +import lombok.ToString; + +@ToString +@Getter +public class ConversationReactResponse implements ApiResponse { + + @Expose + @SerializedName("success") + private boolean success; + + @Expose + @SerializedName("action") + private String action; +} diff --git a/src/es/cadox8/xenapi/api/conversation/ConversationReply.java b/src/es/cadox8/xenapi/api/conversation/ConversationReply.java new file mode 100644 index 0000000..e2b9aa0 --- /dev/null +++ b/src/es/cadox8/xenapi/api/conversation/ConversationReply.java @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.conversation; + +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class ConversationReply implements ApiRequest { + + private final int conversation_id; + private final String message; + /** + * API attachment key to upload files. Attachment key content type must be conversation_message with context[conversation_id] set to this conversation ID. + */ + private final String attachment_key; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.CONVERSATION_MSG; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + return null; + } + + @Override + public List params() { + return new ArrayList<>(); + } + + @Override + public List body() { + final List params = new ArrayList<>(); + + params.add(new XenNameValuePair("conversation_id", this.conversation_id)); + params.add(new XenNameValuePair("message", this.message)); + + if (!this.attachment_key.isEmpty()) + params.add(new XenNameValuePair("attachment_key", this.attachment_key)); + + return params; + } + + @Override + public Class response() { + return ConversationCreateResponse.class; + } +} + + diff --git a/src/es/cadox8/xenapi/api/conversation/ConversationsResponse.java b/src/es/cadox8/xenapi/api/conversation/ConversationsResponse.java new file mode 100644 index 0000000..b3bb7ea --- /dev/null +++ b/src/es/cadox8/xenapi/api/conversation/ConversationsResponse.java @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.conversation; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.commons.Conversation; +import es.cadox8.xenapi.api.commons.Pagination; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Getter; +import lombok.ToString; + +import java.util.List; + +@ToString +@Getter +public class ConversationsResponse implements ApiResponse { + + @Expose + @SerializedName("conversations") + private List conversations; + + @Expose + @SerializedName("pagination") + private Pagination pagination; +} diff --git a/src/es/cadox8/xenapi/api/conversation/CreateConversation.java b/src/es/cadox8/xenapi/api/conversation/CreateConversation.java new file mode 100644 index 0000000..2043dc5 --- /dev/null +++ b/src/es/cadox8/xenapi/api/conversation/CreateConversation.java @@ -0,0 +1,155 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.conversation; + +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class CreateConversation implements ApiRequest { + + private final List recipient_ids; + private final String title; + private final String message; + /** + * API attachment key to upload files. Attachment key content type must be conversation_message with context[conversation_id] set to this conversation ID. + */ + private final String attachment_key; + private final boolean conversation_open; + private final boolean open_invite; + + CreateConversation(List recipient_ids, String title, String message, String attachment_key, boolean conversation_open, boolean open_invite) { + this.recipient_ids = recipient_ids; + this.title = title; + this.message = message; + this.attachment_key = attachment_key; + this.conversation_open = conversation_open; + this.open_invite = open_invite; + } + + public static CreateConversationBuilder builder() { + return new CreateConversationBuilder(); + } + + @Override + public XenforoPaths getPath() { + return XenforoPaths.CONVERSATIONS; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + return null; + } + + @Override + public List params() { + return new ArrayList<>(); + } + + @Override + public List body() { + final List params = new ArrayList<>(); + + params.add(new XenNameValuePair("recipient_ids", this.recipient_ids)); + params.add(new XenNameValuePair("title", this.title)); + params.add(new XenNameValuePair("message", this.message)); + params.add(new XenNameValuePair("conversation_open", this.conversation_open)); + params.add(new XenNameValuePair("open_invite", this.open_invite)); + + if (this.attachment_key == null || !this.attachment_key.isEmpty()) + params.add(new XenNameValuePair("attachment_key", this.attachment_key)); + + return params; + } + + @Override + public Class response() { + return ConversationCreateResponse.class; + } + + public static class CreateConversationBuilder { + private List recipient_ids; + private String title; + private String message; + private String attachment_key; + private boolean conversation_open; + private boolean open_invite; + + CreateConversationBuilder() { + } + + public CreateConversationBuilder recipient_ids(List recipient_ids) { + this.recipient_ids = recipient_ids; + return this; + } + + public CreateConversationBuilder recipient_ids(Integer... recipient_ids) { + this.recipient_ids = Arrays.asList(recipient_ids); + return this; + } + + public CreateConversationBuilder title(String title) { + this.title = title; + return this; + } + + public CreateConversationBuilder message(String message) { + this.message = message; + return this; + } + + public CreateConversationBuilder attachment_key(String attachment_key) { + this.attachment_key = attachment_key; + return this; + } + + public CreateConversationBuilder conversation_open(boolean conversation_open) { + this.conversation_open = conversation_open; + return this; + } + + public CreateConversationBuilder open_invite(boolean open_invite) { + this.open_invite = open_invite; + return this; + } + + public CreateConversation build() { + return new CreateConversation(this.recipient_ids, this.title, this.message, this.attachment_key, this.conversation_open, this.open_invite); + } + + public String toString() { + return "CreateConversation.CreateConversationBuilder(recipient_ids=" + this.recipient_ids + ", title=" + this.title + ", message=" + this.message + ", attachment_key=" + this.attachment_key + ", conversation_open=" + this.conversation_open + ", open_invite=" + this.open_invite + ")"; + } + } +} + + diff --git a/src/es/cadox8/xenapi/api/conversation/GetConversation.java b/src/es/cadox8/xenapi/api/conversation/GetConversation.java new file mode 100644 index 0000000..dcd9c51 --- /dev/null +++ b/src/es/cadox8/xenapi/api/conversation/GetConversation.java @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.conversation; + +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class GetConversation implements ApiRequest { + + private final int conversation_id; + private final String message; + /** + * API attachment key to upload files. Attachment key content type must be conversation_message with context[conversation_id] set to this conversation ID. + */ + private final String attachment_key; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.CONVERSATION_MSG; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + return null; + } + + @Override + public List params() { + return new ArrayList<>(); + } + + @Override + public List body() { + final List params = new ArrayList<>(); + + params.add(new XenNameValuePair("conversation_id", this.conversation_id)); + params.add(new XenNameValuePair("message", this.message)); + + if (!this.attachment_key.isEmpty()) + params.add(new XenNameValuePair("attachment_key", this.attachment_key)); + + return params; + } + + @Override + public Class response() { + return ConversationCreateResponse.class; + } +} + + diff --git a/src/es/cadox8/xenapi/api/conversation/GetConversationMessagesResponse.java b/src/es/cadox8/xenapi/api/conversation/GetConversationMessagesResponse.java new file mode 100644 index 0000000..8c65fea --- /dev/null +++ b/src/es/cadox8/xenapi/api/conversation/GetConversationMessagesResponse.java @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.conversation; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.commons.ConversationMessage; +import es.cadox8.xenapi.api.commons.Pagination; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Getter; +import lombok.ToString; + +import java.util.List; + + +@ToString +@Getter +public class GetConversationMessagesResponse implements ApiResponse { + + @Expose + @SerializedName("messages") + private List messages; + + @Expose + @SerializedName("pagination") + private Pagination pagination; +} \ No newline at end of file diff --git a/src/es/cadox8/xenapi/api/conversation/GetConversations.java b/src/es/cadox8/xenapi/api/conversation/GetConversations.java new file mode 100644 index 0000000..29b15ec --- /dev/null +++ b/src/es/cadox8/xenapi/api/conversation/GetConversations.java @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.conversation; + +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class GetConversations implements ApiRequest { + + private final int page; + private final int starter_id; + private final int receiver_id; + private final boolean starred; + private final boolean unread; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.CONVERSATIONS; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.GET; + } + + @Override + public Object query() { + return null; + } + + @Override + public List params() { + return new ArrayList<>(); + } + + @Override + public List body() { + final List params = new ArrayList<>(); + + if (this.page != -1) + params.add(new XenNameValuePair("page", this.page)); + + if (this.starter_id != -1) + params.add(new XenNameValuePair("starter_id", this.starter_id)); + + if (this.receiver_id != -1) + params.add(new XenNameValuePair("receiver_id", this.receiver_id)); + + if (this.starred) + params.add(new XenNameValuePair("starred", true)); + + if (this.unread) + params.add(new XenNameValuePair("unread", true)); + + return params; + } + + @Override + public Class response() { + return ConversationsResponse.class; + } +} + + diff --git a/src/es/cadox8/xenapi/api/forums/Forums.java b/src/es/cadox8/xenapi/api/forums/Forums.java new file mode 100644 index 0000000..e8045e1 --- /dev/null +++ b/src/es/cadox8/xenapi/api/forums/Forums.java @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.forums; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.commons.Forum; +import es.cadox8.xenapi.api.commons.Pagination; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Getter; +import lombok.ToString; + +import java.util.List; + +@Getter +@ToString +public class Forums implements ApiResponse { + + @Expose + @SerializedName("forum") + private Forum forum; + + @Expose + @SerializedName("threads") + private List threads; + + @Expose + @SerializedName("pagination") + private Pagination pagination; + + @Expose + @SerializedName("sticky") + private List sticky; +} diff --git a/src/es/cadox8/xenapi/api/forums/GetForumById.java b/src/es/cadox8/xenapi/api/forums/GetForumById.java new file mode 100644 index 0000000..786bff6 --- /dev/null +++ b/src/es/cadox8/xenapi/api/forums/GetForumById.java @@ -0,0 +1,140 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.forums; + +import es.cadox8.xenapi.api.commons.Order; +import es.cadox8.xenapi.api.commons.Sort; +import es.cadox8.xenapi.api.commons.TypeNodeId; +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenNameValuePair; +import es.cadox8.xenapi.utils.XenforoPaths; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class GetForumById implements ApiRequest { + + // Query + private final Integer id; + + // Params (Should we send it in the body?) + + /** + * If true, gets a page of threads in this forum + */ + private final Boolean withThreads; + private final Integer page; + /** + * Filters to only threads with the specified prefix. + */ + private final Integer prefixId; + /** + * Filters to only threads started by the specified user ID. + */ + private final Integer starterId; + /** + * Filters to threads that have had a reply in the last X days. + */ + private final Integer lastDays; + /** + * Filters to unread threads only. Ignored for guests. + */ + private final Boolean unread; + /** + * Filters to threads of the specified thread type. + */ + private final TypeNodeId threadType; + /** + * Method of ordering: last_post_date, post_date. When in a specific forum context: title, reply_count, view_count, vote_score, first_post_reaction_score. + */ + private final Order order; + /** + * Either "asc" or "desc" for ascending or descending. Applies only if an order is provided. + */ + private final Sort direction; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.FORUMS; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.GET; + } + + @Override + public Object query() { + if (this.id == null) + throw new XenForoMissingArgsException("forumId"); + return this.id; + } + + @Override + public List params() { + final List list = new ArrayList<>(); + + if (this.withThreads != null) + list.add(new XenNameValuePair("with_threads", this.withThreads)); + + if (this.page != null) + list.add(new XenNameValuePair("page", this.page)); + + if (this.prefixId != null) + list.add(new XenNameValuePair("prefix_id", this.prefixId)); + + if (this.starterId != null) + list.add(new XenNameValuePair("starter_id", this.starterId)); + + if (this.lastDays != null && this.lastDays > 0) + list.add(new XenNameValuePair("last_days", this.lastDays)); + + if (this.unread != null) + list.add(new XenNameValuePair("unread", this.unread)); + + if (this.threadType != null) + list.add(new XenNameValuePair("thread_type", this.threadType.getNodeType())); + + if (this.order != null) { + list.add(new XenNameValuePair("order", this.order.getOrder())); + + if (this.direction != null) + list.add(new XenNameValuePair("direction", this.direction.getDirection())); + } + + return list; + } + + @Override + public List body() { + return List.of(); + } + + @Override + public Class response() { + return Forums.class; + } +} diff --git a/src/es/cadox8/xenapi/api/forums/GetThreadsByForum.java b/src/es/cadox8/xenapi/api/forums/GetThreadsByForum.java new file mode 100644 index 0000000..8f05449 --- /dev/null +++ b/src/es/cadox8/xenapi/api/forums/GetThreadsByForum.java @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.forums; + +import es.cadox8.xenapi.api.commons.Order; +import es.cadox8.xenapi.api.commons.Sort; +import es.cadox8.xenapi.api.commons.TypeNodeId; +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenNameValuePair; +import es.cadox8.xenapi.utils.XenforoPaths; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class GetThreadsByForum implements ApiRequest { + + // Query + private final Integer id; + + // Params + private final Integer page; + /** + * Filters to only threads with the specified prefix. + */ + private final Integer prefixId; + /** + * Filters to only threads started by the specified user ID. + */ + private final Integer starterId; + /** + * Filters to threads that have had a reply in the last X days. + */ + private final Integer lastDays; + /** + * Filters to unread threads only. Ignored for guests. + */ + private final Boolean unread; + /** + * Filters to threads of the specified thread type. + */ + private final TypeNodeId threadType; + /** + * Method of ordering: last_post_date, post_date. When in a specific forum context: title, reply_count, view_count, vote_score, first_post_reaction_score. + */ + private final Order order; + /** + * Either "asc" or "desc" for ascending or descending. Applies only if an order is provided. + */ + private final Sort direction; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.FORUMS_THREADS; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.GET; + } + + @Override + public Object query() { + if (this.id == null) + throw new XenForoMissingArgsException("forumId"); + return this.id; + } + + @Override + public List params() { + final List list = new ArrayList<>(); + + if (this.page != null) + list.add(new XenNameValuePair("page", this.page)); + + if (this.prefixId != null) + list.add(new XenNameValuePair("prefix_id", this.prefixId)); + + if (this.starterId != null) + list.add(new XenNameValuePair("starter_id", this.starterId)); + + if (this.lastDays != null && this.lastDays > 0) + list.add(new XenNameValuePair("last_days", this.lastDays)); + + if (this.unread != null) + list.add(new XenNameValuePair("unread", this.unread)); + + if (this.threadType != null) + list.add(new XenNameValuePair("thread_type", this.threadType.getNodeType())); + + if (this.order != null) { + list.add(new XenNameValuePair("order", this.order.getOrder())); + + if (this.direction != null) + list.add(new XenNameValuePair("direction", this.direction.getDirection())); + } + + return list; + } + + @Override + public List body() { + return List.of(); + } + + @Override + public Class response() { + return Threads.class; + } +} diff --git a/src/es/cadox8/xenapi/api/forums/PostMarkReadForum.java b/src/es/cadox8/xenapi/api/forums/PostMarkReadForum.java new file mode 100644 index 0000000..5c17b33 --- /dev/null +++ b/src/es/cadox8/xenapi/api/forums/PostMarkReadForum.java @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.forums; + +import es.cadox8.xenapi.api.commons.Success; +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenNameValuePair; +import es.cadox8.xenapi.utils.XenforoPaths; +import lombok.Builder; + +import java.sql.Timestamp; +import java.util.List; + +@Builder +public class PostMarkReadForum implements ApiRequest { + + private final Integer id; + + @Builder.Default private final Timestamp timestamp = new Timestamp(System.currentTimeMillis()); + + @Override + public XenforoPaths getPath() { + return XenforoPaths.FORUMS_MARK_READ; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + if (this.id == null) + throw new XenForoMissingArgsException("forumId"); + return this.id; + } + + @Override + public List params() { + return List.of(new XenNameValuePair("date", this.timestamp.getNanos())); + } + + @Override + public List body() { + return List.of(); + } + + @Override + public Class response() { + return Success.class; + } +} diff --git a/src/es/cadox8/xenapi/api/forums/Threads.java b/src/es/cadox8/xenapi/api/forums/Threads.java new file mode 100644 index 0000000..241b1c6 --- /dev/null +++ b/src/es/cadox8/xenapi/api/forums/Threads.java @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.forums; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.commons.Pagination; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Getter; +import lombok.ToString; + +import java.util.List; + +@Getter +@ToString +public class Threads implements ApiResponse { + + @Expose + @SerializedName("threads") + private List threads; + + @Expose + @SerializedName("pagination") + private Pagination pagination; + + @Expose + @SerializedName("sticky") + private List sticky; +} diff --git a/src/es/cadox8/xenapi/api/index/GetIndex.java b/src/es/cadox8/xenapi/api/index/GetIndex.java new file mode 100644 index 0000000..9063d08 --- /dev/null +++ b/src/es/cadox8/xenapi/api/index/GetIndex.java @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.index; + +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class GetIndex implements ApiRequest { + + @Override + public XenforoPaths getPath() { + return XenforoPaths.INDEX; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.GET; + } + + @Override + public Object query() { + return null; + } + + @Override + public List params() { + return new ArrayList<>(); + } + + @Override + public List body() { + return new ArrayList<>(); + } + + @Override + public Class response() { + return IndexResponse.class; + } +} + diff --git a/src/es/cadox8/xenapi/api/index/IndexResponse.java b/src/es/cadox8/xenapi/api/index/IndexResponse.java new file mode 100644 index 0000000..cbb33ab --- /dev/null +++ b/src/es/cadox8/xenapi/api/index/IndexResponse.java @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.index; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Getter; +import lombok.ToString; + +import java.util.List; + +@ToString +@Getter +public class IndexResponse implements ApiResponse { + + @Expose + @SerializedName("version_id") + private int versionId; + + @Expose + @SerializedName("site_title") + private String siteTitle; + + @Expose + @SerializedName("base_url") + private String baseUrl; + + @Expose + @SerializedName("api_url") + private String apiUrl; + + @Expose + @SerializedName("key") + private KeyData key; + + @ToString + @Getter + public static class KeyData { + @Expose + @SerializedName("type") + private String type; + + @Expose + @SerializedName("user_id") + private int userId; + + @Expose + @SerializedName("allow_all_scopes") + private boolean allowAllScopes; + + @Expose + @SerializedName("scopes") + private List scopes; + } +} diff --git a/src/es/cadox8/xenapi/api/me/DeleteMeAvatar.java b/src/es/cadox8/xenapi/api/me/DeleteMeAvatar.java new file mode 100644 index 0000000..71fb1fc --- /dev/null +++ b/src/es/cadox8/xenapi/api/me/DeleteMeAvatar.java @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.me; + +import es.cadox8.xenapi.api.commons.Success; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class DeleteMeAvatar implements ApiRequest { + + @Override + public XenforoPaths getPath() { + return XenforoPaths.ME_AVATAR; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.DELETE; + } + + @Override + public Object query() { + return null; + } + + @Override + public List params() { + return new ArrayList<>(); + } + + @Override + public List body() { + return new ArrayList<>(); + } + + @Override + public Class response() { + return Success.class; + } +} diff --git a/src/es/cadox8/xenapi/api/me/GetMe.java b/src/es/cadox8/xenapi/api/me/GetMe.java new file mode 100644 index 0000000..0121f24 --- /dev/null +++ b/src/es/cadox8/xenapi/api/me/GetMe.java @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.me; + +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class GetMe implements ApiRequest { + + @Override + public XenforoPaths getPath() { + return XenforoPaths.ME; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.GET; + } + + @Override + public Object query() { + return null; + } + + @Override + public List params() { + return new ArrayList<>(); + } + + @Override + public List body() { + return new ArrayList<>(); + } + + @Override + public Class response() { + return MeResponse.class; + } +} diff --git a/src/es/cadox8/xenapi/api/me/MeResponse.java b/src/es/cadox8/xenapi/api/me/MeResponse.java new file mode 100644 index 0000000..6f55dd9 --- /dev/null +++ b/src/es/cadox8/xenapi/api/me/MeResponse.java @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.me; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.auth.UserResponse; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Getter; +import lombok.ToString; + +@ToString +@Getter +public class MeResponse implements ApiResponse { + @Expose + @SerializedName("me") + private UserResponse.UserData user; +} diff --git a/src/es/cadox8/xenapi/api/me/UpdateMailResponse.java b/src/es/cadox8/xenapi/api/me/UpdateMailResponse.java new file mode 100644 index 0000000..0244259 --- /dev/null +++ b/src/es/cadox8/xenapi/api/me/UpdateMailResponse.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.me; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Data; + +@Data +public class UpdateMailResponse implements ApiResponse { + + @Expose + @SerializedName("success") + private final boolean success; + + @Expose + @SerializedName("confirmation_required") + private final boolean confirmationRequired; +} diff --git a/src/es/cadox8/xenapi/api/me/UpdateMe.java b/src/es/cadox8/xenapi/api/me/UpdateMe.java new file mode 100644 index 0000000..97b0d31 --- /dev/null +++ b/src/es/cadox8/xenapi/api/me/UpdateMe.java @@ -0,0 +1,200 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.me; + +import es.cadox8.xenapi.api.commons.Success; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class UpdateMe implements ApiRequest { + + // --- Options --- + private final Options options; + // --- Profile --- + private final Profile profile; + // --- Privacy --- + private final Privacy privacy; + // --- Normal --- + private final Boolean visible; + private final Boolean activityVisible; + private final String timezone; + private final String customTitle; + private final List customFields; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.ME; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + return null; + } + + @Override + public List params() { + return List.of(); + } + + @Override + public List body() { + final List list = new ArrayList<>(); + + if (this.options != null) + this.options.body().forEach(p -> list.add(new XenNameValuePair("option." + p.getName(), p.getValue()))); + + if (this.profile != null) + this.profile.body().forEach(p -> list.add(new XenNameValuePair("profile." + p.getName(), p.getValue()))); + + if (this.privacy != null) + this.privacy.body().forEach(p -> list.add(new XenNameValuePair("privacy." + p.getName(), p.getValue()))); + + if (this.visible != null) + list.add(new XenNameValuePair("visible", this.visible)); + if (this.activityVisible != null) + list.add(new XenNameValuePair("activity_visible", this.activityVisible)); + if (this.timezone != null && !this.timezone.isEmpty()) + list.add(new XenNameValuePair("timezone", this.timezone)); + if (this.customTitle != null && !this.customTitle.isEmpty()) + list.add(new XenNameValuePair("custom_title", this.customTitle)); + + if (this.customFields != null && !this.customFields.isEmpty()) + this.customFields.forEach(p -> list.add(new XenNameValuePair("custom_fields." + p.getName(), p.getValue()))); + + return list; + } + + @Override + public Class response() { + return Success.class; + } + + public enum PrivacyOptions { + EVERYONE, + MEMBERS, + FOLLOWED, + NONE + } + + @Builder + public static class Options { + private final String creationWatchState; + private final String interactionWatchState; + private final Boolean contentShowSignature; + private final Boolean emailOnConversation; + private final Boolean receiveAdminEmail; + private final Boolean showDobYear; + private final Boolean showDobDate; + + public List body() { + final List list = new ArrayList<>(); + + if (this.creationWatchState != null && !this.creationWatchState.isEmpty()) + list.add(new XenNameValuePair("creation_watch_state", this.creationWatchState)); + if (this.interactionWatchState != null && !this.interactionWatchState.isEmpty()) + list.add(new XenNameValuePair("interaction_watch_state", this.interactionWatchState)); + if (this.contentShowSignature != null) + list.add(new XenNameValuePair("content_show_signature", this.contentShowSignature)); + if (this.emailOnConversation != null) + list.add(new XenNameValuePair("email_on_conversation", this.emailOnConversation)); + if (this.receiveAdminEmail != null) + list.add(new XenNameValuePair("receive_admin_email", this.receiveAdminEmail)); + if (this.showDobYear != null) + list.add(new XenNameValuePair("show_dob_year", this.showDobYear)); + if (this.showDobDate != null) + list.add(new XenNameValuePair("show_dob_date", this.showDobDate)); + + return list; + } + } + + @Builder + public static class Profile { + private final String location; + private final String website; + private final String about; + /** + * This should allow the formating + */ + private final String signature; + + public List body() { + final List list = new ArrayList<>(); + + if (this.location != null && !this.location.isEmpty()) + list.add(new XenNameValuePair("location", this.location)); + + if (this.website != null && !this.website.isEmpty()) + list.add(new XenNameValuePair("website", this.website)); + + if (this.about != null && !this.about.isEmpty()) + list.add(new XenNameValuePair("about", this.website)); + + if (this.signature != null && !this.signature.isEmpty()) + list.add(new XenNameValuePair("signature", this.website)); + + return list; + } + } + + @Builder + public static class Privacy { + private final PrivacyOptions allowViewProfile; + private final PrivacyOptions allowPostProfile; + private final PrivacyOptions allowReceiveNewsFeed; + private final PrivacyOptions allowSendPersonalConversation; + private final PrivacyOptions allowViewIdentities; + + public List body() { + final List list = new ArrayList<>(); + + if (this.allowViewProfile != null) + list.add(new XenNameValuePair("allow_view_profile", this.allowViewProfile.name().toLowerCase())); + + if (this.allowPostProfile != null) + list.add(new XenNameValuePair("allow_post_profile", this.allowPostProfile.name().toLowerCase())); + + if (this.allowReceiveNewsFeed != null) + list.add(new XenNameValuePair("allow_receive_news_feed", this.allowReceiveNewsFeed.name().toLowerCase())); + + if (this.allowSendPersonalConversation != null) + list.add(new XenNameValuePair("allow_send_personal_conversation", this.allowSendPersonalConversation.name().toLowerCase())); + + if (this.allowViewIdentities != null) + list.add(new XenNameValuePair("allow_view_identities", this.allowViewIdentities.name().toLowerCase())); + + return list; + } + } +} diff --git a/src/es/cadox8/xenapi/api/me/UpdateMeAvatar.java b/src/es/cadox8/xenapi/api/me/UpdateMeAvatar.java new file mode 100644 index 0000000..884cb28 --- /dev/null +++ b/src/es/cadox8/xenapi/api/me/UpdateMeAvatar.java @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.me; + +import es.cadox8.xenapi.api.commons.Success; +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +@Builder +public class UpdateMeAvatar implements ApiRequest { + + /** + * Required + */ + private final File avatar; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.ME_AVATAR; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + return null; + } + + @Override + public List params() { + final List list = new ArrayList<>(); + + if (this.avatar == null) + throw new XenForoMissingArgsException("avatar"); + + list.add(new XenNameValuePair("avatar", this.avatar)); + + return list; + } + + @Override + public List body() { + return new ArrayList<>(); + } + + @Override + public Class response() { + return Success.class; + } + + @Override + public boolean containsFile() { + return true; + } +} diff --git a/src/es/cadox8/xenapi/api/me/UpdateMeEmail.java b/src/es/cadox8/xenapi/api/me/UpdateMeEmail.java new file mode 100644 index 0000000..48314cd --- /dev/null +++ b/src/es/cadox8/xenapi/api/me/UpdateMeEmail.java @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.me; + +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class UpdateMeEmail implements ApiRequest { + + /** + * Required + */ + private final String currentPassword; + /** + * Required + */ + private final String newEmail; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.ME_EMAIL; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + return null; + } + + @Override + public List params() { + return new ArrayList<>(); + } + + @Override + public List body() { + final List list = new ArrayList<>(); + + if (this.currentPassword == null || this.currentPassword.isEmpty()) + throw new XenForoMissingArgsException("currentPassword"); + + if (this.newEmail == null || this.newEmail.isEmpty()) + throw new XenForoMissingArgsException("newEmail"); + + list.add(new XenNameValuePair("current_password", this.currentPassword)); + list.add(new XenNameValuePair("email", this.newEmail)); + + return list; + } + + @Override + public Class response() { + return UpdateMailResponse.class; + } + +} diff --git a/src/es/cadox8/xenapi/api/me/UpdateMePassword.java b/src/es/cadox8/xenapi/api/me/UpdateMePassword.java new file mode 100644 index 0000000..fb30b61 --- /dev/null +++ b/src/es/cadox8/xenapi/api/me/UpdateMePassword.java @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.me; + +import es.cadox8.xenapi.api.commons.Success; +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class UpdateMePassword implements ApiRequest { + + /** + * Required + */ + private final String currentPassword; + /** + * Required + */ + private final String newPassword; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.ME_PASSWORD; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + return null; + } + + @Override + public List params() { + return new ArrayList<>(); + } + + @Override + public List body() { + final List list = new ArrayList<>(); + + if (this.currentPassword == null || this.currentPassword.isEmpty()) + throw new XenForoMissingArgsException("currentPassword"); + + if (this.newPassword == null || this.newPassword.isEmpty()) + throw new XenForoMissingArgsException("newEmail"); + + list.add(new XenNameValuePair("current_password", this.currentPassword)); + list.add(new XenNameValuePair("new_password", this.newPassword)); + + return list; + } + + @Override + public Class response() { + return Success.class; + } +} diff --git a/src/es/cadox8/xenapi/api/nodes/DeleteNode.java b/src/es/cadox8/xenapi/api/nodes/DeleteNode.java new file mode 100644 index 0000000..98c1030 --- /dev/null +++ b/src/es/cadox8/xenapi/api/nodes/DeleteNode.java @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.nodes; + +import es.cadox8.xenapi.api.commons.Success; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.List; + +@Builder +public class DeleteNode implements ApiRequest { + + private final Integer id; // Required + + @Builder.Default private final Boolean deleteChildren = false; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.NODES_ACTIONS; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.DELETE; + } + + @Override + public Object query() { + return this.id; + } + + @Override + public List params() { + return List.of(); + } + + @Override + public List body() { + return List.of(new XenNameValuePair("delete_children", this.deleteChildren)); + } + + @Override + public Class response() { + return Success.class; + } +} diff --git a/src/es/cadox8/xenapi/api/nodes/EditNode.java b/src/es/cadox8/xenapi/api/nodes/EditNode.java new file mode 100644 index 0000000..c91089c --- /dev/null +++ b/src/es/cadox8/xenapi/api/nodes/EditNode.java @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.nodes; + +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class EditNode implements ApiRequest { + + private final Integer id; // Required to edit + + private final String title; + private final String name; + private final String description; + private final Integer parentNodeId; + private final Integer displayOrder; + @Builder.Default private final Boolean displayInList = true; + private final List typeData; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.NODES_ACTIONS; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + return this.id; + } + + @Override + public List params() { + return List.of(); + } + + @Override + public List body() { + final List params = new ArrayList<>(); + + if (this.title != null && !this.title.isEmpty()) + params.add(new XenNameValuePair("node[title]", this.title)); + + if (this.name != null && !this.name.isEmpty()) + params.add(new XenNameValuePair("node[node_name]", this.name)); + + if (this.description != null && !this.description.isEmpty()) + params.add(new XenNameValuePair("node[description]", this.description)); + + if (this.parentNodeId != null && this.parentNodeId >= 0) + params.add(new XenNameValuePair("node[parent_node_id]", this.parentNodeId)); + + if (this.displayOrder != null && this.displayOrder >= 0) + params.add(new XenNameValuePair("node[display_order]", this.displayOrder)); + + if (this.displayInList != null) + params.add(new XenNameValuePair("node[display_in_list]", this.displayInList)); + + if (this.typeData != null && !this.typeData.isEmpty()) + params.add(new XenNameValuePair("type_data", this.typeData)); + + return params; + } + + @Override + public Class response() { + return NodesPost.class; + } +} diff --git a/src/es/cadox8/xenapi/api/nodes/FlattenedNodes.java b/src/es/cadox8/xenapi/api/nodes/FlattenedNodes.java new file mode 100644 index 0000000..54d48b5 --- /dev/null +++ b/src/es/cadox8/xenapi/api/nodes/FlattenedNodes.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.nodes; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.commons.Node; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Getter; +import lombok.ToString; + +import java.util.List; + +@ToString +@Getter + +public class FlattenedNodes implements ApiResponse { + + @Expose + @SerializedName("nodes_flat") + private List nodes; +} diff --git a/src/es/cadox8/xenapi/api/nodes/GetFlattenedNodes.java b/src/es/cadox8/xenapi/api/nodes/GetFlattenedNodes.java new file mode 100644 index 0000000..1dc7a7e --- /dev/null +++ b/src/es/cadox8/xenapi/api/nodes/GetFlattenedNodes.java @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.nodes; + +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.List; + +@Builder +public class GetFlattenedNodes implements ApiRequest { + + @Override + public XenforoPaths getPath() { + return XenforoPaths.NODES_FLAT; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.GET; + } + + @Override + public Object query() { + return null; + } + + @Override + public List params() { + return List.of(); + } + + @Override + public List body() { + return List.of(); + } + + @Override + public Class response() { + return FlattenedNodes.class; + } +} diff --git a/src/es/cadox8/xenapi/api/nodes/GetNodes.java b/src/es/cadox8/xenapi/api/nodes/GetNodes.java new file mode 100644 index 0000000..6934f22 --- /dev/null +++ b/src/es/cadox8/xenapi/api/nodes/GetNodes.java @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.nodes; + +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.List; + +@Builder +public class GetNodes implements ApiRequest { + + @Override + public XenforoPaths getPath() { + return XenforoPaths.NODES; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.GET; + } + + @Override + public Object query() { + return null; + } + + @Override + public List params() { + return List.of(); + } + + @Override + public List body() { + return List.of(); + } + + @Override + public Class response() { + return Nodes.class; + } +} diff --git a/src/es/cadox8/xenapi/api/nodes/Nodes.java b/src/es/cadox8/xenapi/api/nodes/Nodes.java new file mode 100644 index 0000000..47cbe6f --- /dev/null +++ b/src/es/cadox8/xenapi/api/nodes/Nodes.java @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.nodes; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.commons.Node; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Getter; +import lombok.ToString; + +import java.util.HashMap; +import java.util.List; + +@ToString +@Getter + +public class Nodes implements ApiResponse { + + @Expose + @SerializedName("tree_map") + private HashMap> treeMap; + + @Expose + @SerializedName("nodes") + private List nodes; +} diff --git a/src/es/cadox8/xenapi/api/nodes/NodesFlat.java b/src/es/cadox8/xenapi/api/nodes/NodesFlat.java new file mode 100644 index 0000000..7ce21a9 --- /dev/null +++ b/src/es/cadox8/xenapi/api/nodes/NodesFlat.java @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.nodes; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.commons.Node; +import es.cadox8.xenapi.api.commons.TypeNodeId; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.ToString; + +import java.util.List; + +@ToString +@Getter + +public class NodesFlat implements ApiResponse { + + @Expose + @SerializedName("nodes_flat") + private List nodes; + + @ToString + @Getter + @EqualsAndHashCode(callSuper = false) + public static class FlatNode { + + @Expose + @SerializedName("breadcrumbs") + private List breadcrumbs; + + @Expose + @SerializedName("view_url") + private String viewUrl; + + @Expose + @SerializedName("node_id") + private int nodeId; + + @Expose + @SerializedName("title") + private String title; + + @Expose + @SerializedName("node_name") + private String nodeName; + + @Expose + @SerializedName("description") + private String description; + + @Expose + @SerializedName("node_type_id") + private TypeNodeId nodeTypeId; + + @Expose + @SerializedName("display_order") + private int displayOrder; + + @Expose + @SerializedName("display_in_list") + private boolean displayInList; + + @Expose + @SerializedName("type_data") + private TypeData typeData; + } + + @ToString + @Getter + @EqualsAndHashCode(callSuper = false) + public static class TypeData { + @Expose + @SerializedName("allow_posting") + private boolean allowPosting; + + @Expose + @SerializedName("can_create_thread") + private boolean canCreateThread; + + @Expose + @SerializedName("can_upload_attachment") + private boolean canUploadAttachment; + + + } +} + + diff --git a/src/es/cadox8/xenapi/api/nodes/NodesPost.java b/src/es/cadox8/xenapi/api/nodes/NodesPost.java new file mode 100644 index 0000000..e3149e7 --- /dev/null +++ b/src/es/cadox8/xenapi/api/nodes/NodesPost.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.nodes; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.commons.Node; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Getter; +import lombok.ToString; + +@ToString +@Getter +public class NodesPost implements ApiResponse { + + @Expose + @SerializedName("node") + private Node node; +} diff --git a/src/es/cadox8/xenapi/api/nodes/PostNode.java b/src/es/cadox8/xenapi/api/nodes/PostNode.java new file mode 100644 index 0000000..e3d00a7 --- /dev/null +++ b/src/es/cadox8/xenapi/api/nodes/PostNode.java @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.nodes; + +import es.cadox8.xenapi.api.commons.TypeNodeId; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class PostNode implements ApiRequest { + + private final String title; // Required + private final String name; + private final String description; + private final Integer parentNodeId; // Required + private final Integer displayOrder; + @Builder.Default private final Boolean displayInList = true; + private final List typeData; + private final TypeNodeId nodeTypeId; // Required + + @Override + public XenforoPaths getPath() { + return XenforoPaths.NODES; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + return null; + } + + @Override + public List params() { + return List.of(); + } + + @Override + public List body() { + final List params = new ArrayList<>(); + + if (this.title != null && !this.title.isEmpty()) + params.add(new XenNameValuePair("node[title]", this.title)); + + if (this.name != null && !this.name.isEmpty()) + params.add(new XenNameValuePair("node[node_name]", this.name)); + + if (this.description != null && !this.description.isEmpty()) + params.add(new XenNameValuePair("node[description]", this.description)); + + if (this.parentNodeId != null && this.parentNodeId >= 0) + params.add(new XenNameValuePair("node[parent_node_id]", this.parentNodeId)); + + if (this.displayOrder != null && this.displayOrder >= 0) + params.add(new XenNameValuePair("node[display_order]", this.displayOrder)); + + if (this.displayInList != null) + params.add(new XenNameValuePair("node[display_in_list]", this.displayInList)); + + if (this.typeData != null && !this.typeData.isEmpty()) + params.add(new XenNameValuePair("type_data", this.typeData)); + + if (this.nodeTypeId != null) + params.add(new XenNameValuePair("node_type_id", this.nodeTypeId.getNodeType())); + + return params; + } + + @Override + public Class response() { + return NodesPost.class; + } +} diff --git a/src/es/cadox8/xenapi/api/posts/DeletePost.java b/src/es/cadox8/xenapi/api/posts/DeletePost.java new file mode 100644 index 0000000..2119f33 --- /dev/null +++ b/src/es/cadox8/xenapi/api/posts/DeletePost.java @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.posts; + +import es.cadox8.xenapi.api.commons.Success; +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +/** + * Adds a new reply to a thread. + */ +@Builder +public class DeletePost implements ApiRequest { + + /** + * Required + */ + private final Integer postId; + + // ----- + + private final String reason; + @Builder.Default private final Boolean hardDelete = false; + @Builder.Default private final Boolean authorAlert = true; + @Builder.Default private final String authorAlertReason = ""; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.POSTS_GET; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.DELETE; + } + + @Override + public Object query() { + if (this.postId == null || this.postId <= 0) + throw new XenForoMissingArgsException("postId!"); + + return this.postId; + } + + @Override + public List params() { + return List.of(); + } + + @Override + public List body() { + final List list = new ArrayList<>(); + + if (this.reason == null || this.reason.isEmpty()) + throw new XenForoMissingArgsException("reason!"); + + list.add(new XenNameValuePair("reason", this.reason)); + list.add(new XenNameValuePair("hard_delete", this.hardDelete)); + list.add(new XenNameValuePair("author_alert", this.authorAlert)); + list.add(new XenNameValuePair("author_alert_reason", this.authorAlertReason)); + + return list; + } + + @Override + public Class response() { + return Success.class; + } +} diff --git a/src/es/cadox8/xenapi/api/posts/GetPost.java b/src/es/cadox8/xenapi/api/posts/GetPost.java new file mode 100644 index 0000000..6636882 --- /dev/null +++ b/src/es/cadox8/xenapi/api/posts/GetPost.java @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.posts; + +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.List; + +@Builder +public class GetPost implements ApiRequest { + + private final int id; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.POSTS_GET; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.GET; + } + + @Override + public Object query() { + return this.id; + } + + @Override + public List params() { + return List.of(); + } + + @Override + public List body() { + return List.of(); + } + + @Override + public Class response() { + return PostResponse.class; + } +} diff --git a/src/es/cadox8/xenapi/api/posts/MarkSolutionPost.java b/src/es/cadox8/xenapi/api/posts/MarkSolutionPost.java new file mode 100644 index 0000000..5aa265a --- /dev/null +++ b/src/es/cadox8/xenapi/api/posts/MarkSolutionPost.java @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.posts; + +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.List; + +@Builder +public class MarkSolutionPost implements ApiRequest { + + private final int id; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.POST_MARK_SOLUTION; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + return this.id; + } + + @Override + public List params() { + return List.of(); + } + + @Override + public List body() { + return List.of(); + } + + @Override + public Class response() { + return PostMarkSolutionResponse.class; + } +} diff --git a/src/es/cadox8/xenapi/api/posts/PostMarkSolutionResponse.java b/src/es/cadox8/xenapi/api/posts/PostMarkSolutionResponse.java new file mode 100644 index 0000000..68976f4 --- /dev/null +++ b/src/es/cadox8/xenapi/api/posts/PostMarkSolutionResponse.java @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.posts; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.commons.Post; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Data; + +/** + * The response is different from the official documentation + *

      + * --- The official documentation says the following as response + * true mixed Success + * new_solution_post Post|null A post that was marked as the solution + * old_solution_post Post|null A post that was un-marked as the solution + *

      + * --- In my tests, the result you get is + * success boolean + * post Post + *

      + * https://xenforo.com/community/pages/api-endpoints/#route_post_posts_id_mark_solution + */ +@Data +public class PostMarkSolutionResponse implements ApiResponse { + + @Expose + @SerializedName("success") + private Boolean success; + + @Expose + @SerializedName("post") + private Post post; + +} diff --git a/src/es/cadox8/xenapi/api/posts/PostReply.java b/src/es/cadox8/xenapi/api/posts/PostReply.java new file mode 100644 index 0000000..d8767ad --- /dev/null +++ b/src/es/cadox8/xenapi/api/posts/PostReply.java @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.posts; + +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +/** + * Adds a new reply to a thread. + */ +@Builder +public class PostReply implements ApiRequest { + + /** + * Required + */ + private final Integer threadId; + /** + * Required + */ + private final String message; + + private final String attachmentKey; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.POSTS; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + return null; + } + + @Override + public List params() { + return List.of(); + } + + @Override + public List body() { + final List list = new ArrayList<>(); + + if (this.threadId == null || this.threadId <= 0) + throw new XenForoMissingArgsException("threadId!"); + + if (this.message == null || this.message.isEmpty()) + throw new XenForoMissingArgsException("message!"); + + list.add(new XenNameValuePair("thread_id", this.threadId)); + list.add(new XenNameValuePair("message", this.message)); + + if (this.attachmentKey != null && !this.attachmentKey.isEmpty()) + params().add(new XenNameValuePair("attachmentKey", this.attachmentKey)); + + return list; + } + + @Override + public Class response() { + return PostReplyResponse.class; + } +} diff --git a/src/es/cadox8/xenapi/api/posts/PostReplyResponse.java b/src/es/cadox8/xenapi/api/posts/PostReplyResponse.java new file mode 100644 index 0000000..1880d03 --- /dev/null +++ b/src/es/cadox8/xenapi/api/posts/PostReplyResponse.java @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.posts; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.commons.Post; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Data; + +@Data +public class PostReplyResponse implements ApiResponse { + + @Expose + @SerializedName("success") + private Boolean success; + + @Expose + @SerializedName("post") + private Post post = null; +} diff --git a/src/es/cadox8/xenapi/api/posts/PostResponse.java b/src/es/cadox8/xenapi/api/posts/PostResponse.java new file mode 100644 index 0000000..a115d49 --- /dev/null +++ b/src/es/cadox8/xenapi/api/posts/PostResponse.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.posts; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.commons.Post; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Data; + +@Data +public class PostResponse implements ApiResponse { + + @Expose + @SerializedName("post") + private Post post = null; +} diff --git a/src/es/cadox8/xenapi/api/posts/ReactPost.java b/src/es/cadox8/xenapi/api/posts/ReactPost.java new file mode 100644 index 0000000..323172b --- /dev/null +++ b/src/es/cadox8/xenapi/api/posts/ReactPost.java @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.posts; + +import es.cadox8.xenapi.api.commons.ReactResponse; +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.List; + +@Builder +public class ReactPost implements ApiRequest { + + /** + * Required + */ + private final int id; + + /** + * Required + *

      + * ID of the reaction to use. Use the current reaction ID to undo. + */ + private final Integer reactionId; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.POST_REACT; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + return this.id; + } + + @Override + public List params() { + return List.of(); + + } + + @Override + public List body() { + if (this.reactionId == null || this.reactionId <= 0) + throw new XenForoMissingArgsException("reactionId"); + + return List.of(new XenNameValuePair("reaction_id", this.reactionId)); + } + + @Override + public Class response() { + return ReactResponse.class; + } +} diff --git a/src/es/cadox8/xenapi/api/posts/UpdatePost.java b/src/es/cadox8/xenapi/api/posts/UpdatePost.java new file mode 100644 index 0000000..bf0869a --- /dev/null +++ b/src/es/cadox8/xenapi/api/posts/UpdatePost.java @@ -0,0 +1,104 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.posts; + +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +/** + * Adds a new reply to a thread. + */ +@Builder +public class UpdatePost implements ApiRequest { + + /** + * Required + */ + private final Integer postId; + + // ----- + + private final String message; + @Builder.Default private final String authorAlertReason = ""; + private final String attachmentKey; + @Builder.Default private final Boolean authorAlert = true; + @Builder.Default private Boolean clearEdit = false; + @Builder.Default private Boolean silent = false; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.POSTS_GET; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + if (this.postId == null || this.postId <= 0) + throw new XenForoMissingArgsException("postId!"); + + return this.postId; + } + + @Override + public List params() { + return List.of(); + } + + @Override + public List body() { + final List list = new ArrayList<>(); + + if (this.message == null || this.message.isEmpty()) + throw new XenForoMissingArgsException("message!"); + + list.add(new XenNameValuePair("message", this.message)); + list.add(new XenNameValuePair("silent", this.silent)); + + if (this.clearEdit && !this.silent) + throw new XenForoMissingArgsException("For clearEdit you need silent"); + + list.add(new XenNameValuePair("clear_edit", this.clearEdit)); + list.add(new XenNameValuePair("author_alert", this.authorAlert)); + list.add(new XenNameValuePair("author_alert_reason", this.authorAlertReason)); + + if (this.attachmentKey != null && !this.attachmentKey.isEmpty()) + params().add(new XenNameValuePair("attachmentKey", this.attachmentKey)); + + return list; + } + + @Override + public Class response() { + return PostReplyResponse.class; + } +} diff --git a/src/es/cadox8/xenapi/api/posts/VotePost.java b/src/es/cadox8/xenapi/api/posts/VotePost.java new file mode 100644 index 0000000..9fe1e02 --- /dev/null +++ b/src/es/cadox8/xenapi/api/posts/VotePost.java @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.posts; + +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +import java.util.List; + +@Builder +public class VotePost implements ApiRequest { + + /** + * Required + */ + private final int id; + /** + * Required + *

      + * Type of vote, "up" or "down". Use the current type to undo. + */ + private final VoteAction vote; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.POST_VOTE; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + return this.id; + } + + @Override + public List params() { + return List.of(); + } + + @Override + public List body() { + if (this.vote == null) + throw new XenForoMissingArgsException("vote"); + + return List.of(new XenNameValuePair("type", this.vote.getVote())); + } + + @Override + public Class response() { + return VotePostResponse.class; + } + + @RequiredArgsConstructor + @Getter + public enum VoteAction { + UP("up"), + DOWN("down"); + + private final String vote; + } +} diff --git a/src/es/cadox8/xenapi/api/posts/VotePostResponse.java b/src/es/cadox8/xenapi/api/posts/VotePostResponse.java new file mode 100644 index 0000000..85651cb --- /dev/null +++ b/src/es/cadox8/xenapi/api/posts/VotePostResponse.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.posts; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Data; + +@Data +public class VotePostResponse implements ApiResponse { + + @Expose + @SerializedName("success") + private Boolean success; + + @Expose + @SerializedName("action") + private String action; +} diff --git a/src/es/cadox8/xenapi/api/profile/DeleteProfilePost.java b/src/es/cadox8/xenapi/api/profile/DeleteProfilePost.java new file mode 100644 index 0000000..7070103 --- /dev/null +++ b/src/es/cadox8/xenapi/api/profile/DeleteProfilePost.java @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.profile; + +import es.cadox8.xenapi.api.commons.Success; +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class DeleteProfilePost implements ApiRequest { + + /** + * Required + */ + private final Integer profileId; + + // ----- + + private final String reason; + @Builder.Default private final Boolean hardDelete = false; + @Builder.Default private final Boolean authorAlert = true; + @Builder.Default private final String authorAlertReason = ""; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.PROFILE_POST_ID; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.DELETE; + } + + @Override + public Object query() { + if (this.profileId == null || this.profileId <= 0) + throw new XenForoMissingArgsException("profileId!"); + + return this.profileId; + } + + @Override + public List params() { + return List.of(); + } + + @Override + public List body() { + final List list = new ArrayList<>(); + + if (this.reason == null || this.reason.isEmpty()) + throw new XenForoMissingArgsException("reason!"); + + list.add(new XenNameValuePair("reason", this.reason)); + list.add(new XenNameValuePair("hard_delete", this.hardDelete)); + list.add(new XenNameValuePair("author_alert", this.authorAlert)); + list.add(new XenNameValuePair("author_alert_reason", this.authorAlertReason)); + + return list; + } + + @Override + public Class response() { + return Success.class; + } +} diff --git a/src/es/cadox8/xenapi/api/profile/GetProfilePost.java b/src/es/cadox8/xenapi/api/profile/GetProfilePost.java new file mode 100644 index 0000000..4411c72 --- /dev/null +++ b/src/es/cadox8/xenapi/api/profile/GetProfilePost.java @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.profile; + +import es.cadox8.xenapi.api.commons.Sort; +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class GetProfilePost implements ApiRequest { + + /** + * Required + */ + private final Integer profileId; + + @Builder.Default private final Boolean withComments = true; + @Builder.Default private final Sort sort = Sort.DESC; + private final Integer page; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.PROFILE_POST_ID; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.GET; + } + + @Override + public Object query() { + if (this.profileId == null || this.profileId <= 0) + throw new XenForoMissingArgsException("profileId!"); + + return this.profileId; + } + + @Override + public List params() { + final List params = new ArrayList<>(); + + if (this.page > 0) + params.add(new XenNameValuePair("page", this.page)); + + params.add(new XenNameValuePair("with_comments", this.withComments)); + params.add(new XenNameValuePair("direction", this.sort.getDirection())); + return params; + } + + @Override + public List body() { + return List.of(); + } + + @Override + public Class response() { + return GetProfilePostsResponse.class; + } +} diff --git a/src/es/cadox8/xenapi/api/profile/GetProfilePostIdComments.java b/src/es/cadox8/xenapi/api/profile/GetProfilePostIdComments.java new file mode 100644 index 0000000..93f035a --- /dev/null +++ b/src/es/cadox8/xenapi/api/profile/GetProfilePostIdComments.java @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.profile; + +import es.cadox8.xenapi.api.commons.Sort; +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class GetProfilePostIdComments implements ApiRequest { + + /** + * Required + */ + private final Integer profileId; + + @Builder.Default private final Sort sort = Sort.DESC; + private final Integer page; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.PROFILE_POST_ID_COMMENTS; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.GET; + } + + @Override + public Object query() { + if (this.profileId == null || this.profileId <= 0) + throw new XenForoMissingArgsException("profileId!"); + + return this.profileId; + } + + @Override + public List params() { + final List params = new ArrayList<>(); + + if (this.page > 0) + params.add(new XenNameValuePair("page", this.page)); + + params.add(new XenNameValuePair("direction", this.sort.getDirection())); + return params; + } + + @Override + public List body() { + return List.of(); + } + + @Override + public Class response() { + return GetProfilePostsByIdCommentsResponse.class; + } +} diff --git a/src/es/cadox8/xenapi/api/profile/GetProfilePostsByIdCommentsResponse.java b/src/es/cadox8/xenapi/api/profile/GetProfilePostsByIdCommentsResponse.java new file mode 100644 index 0000000..b8e1d40 --- /dev/null +++ b/src/es/cadox8/xenapi/api/profile/GetProfilePostsByIdCommentsResponse.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.profile; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.commons.Pagination; +import es.cadox8.xenapi.api.commons.ProfilePostComment; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Data; + +import java.util.List; + +@Data +public class GetProfilePostsByIdCommentsResponse implements ApiResponse { + + @Expose + @SerializedName("comments") + private List profilePostComments; + + @Expose + @SerializedName("pagination") + private Pagination pagination; +} diff --git a/src/es/cadox8/xenapi/api/profile/GetProfilePostsResponse.java b/src/es/cadox8/xenapi/api/profile/GetProfilePostsResponse.java new file mode 100644 index 0000000..2c4c3f3 --- /dev/null +++ b/src/es/cadox8/xenapi/api/profile/GetProfilePostsResponse.java @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.profile; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.commons.Pagination; +import es.cadox8.xenapi.api.commons.ProfilePost; +import es.cadox8.xenapi.api.commons.ProfilePostComment; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Data; + +import java.util.List; + +@Data +public class GetProfilePostsResponse implements ApiResponse { + + @Expose + @SerializedName("profile_post") + private ProfilePost profilePost; + + @Expose + @SerializedName("comments") + private List profilePostComments; + + @Expose + @SerializedName("pagination") + private Pagination pagination; +} diff --git a/src/es/cadox8/xenapi/api/profile/PostProfilePost.java b/src/es/cadox8/xenapi/api/profile/PostProfilePost.java new file mode 100644 index 0000000..155c8bc --- /dev/null +++ b/src/es/cadox8/xenapi/api/profile/PostProfilePost.java @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.profile; + +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class PostProfilePost implements ApiRequest { + + /** + * Required + */ + private final Integer userId; + /** + * Required + */ + private final String message; + + private final String attachmentKey; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.PROFILE_POST; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + return null; + } + + @Override + public List params() { + return List.of(); + } + + @Override + public List body() { + final List list = new ArrayList<>(); + + if (this.userId == null || this.userId <= 0) + throw new XenForoMissingArgsException("userId!"); + + if (this.message == null || this.message.isEmpty()) + throw new XenForoMissingArgsException("message!"); + + list.add(new XenNameValuePair("user_id", this.userId)); + list.add(new XenNameValuePair("message", this.message)); + + if (this.attachmentKey != null && !this.attachmentKey.isEmpty()) + params().add(new XenNameValuePair("attachmentKey", this.attachmentKey)); + + return list; + } + + @Override + public Class response() { + return ProfilePostResponse.class; + } +} diff --git a/src/es/cadox8/xenapi/api/profile/ProfilePostResponse.java b/src/es/cadox8/xenapi/api/profile/ProfilePostResponse.java new file mode 100644 index 0000000..b621313 --- /dev/null +++ b/src/es/cadox8/xenapi/api/profile/ProfilePostResponse.java @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.profile; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.commons.ProfilePost; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Data; + +@Data +public class ProfilePostResponse implements ApiResponse { + + @Expose + @SerializedName("success") + private Boolean success; + + @Expose + @SerializedName("profile_post") + private ProfilePost profilePost; +} diff --git a/src/es/cadox8/xenapi/api/profile/ReactProfilePost.java b/src/es/cadox8/xenapi/api/profile/ReactProfilePost.java new file mode 100644 index 0000000..293f879 --- /dev/null +++ b/src/es/cadox8/xenapi/api/profile/ReactProfilePost.java @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.profile; + +import es.cadox8.xenapi.api.commons.ReactResponse; +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.List; + +@Builder +public class ReactProfilePost implements ApiRequest { + + /** + * Required + */ + private final int id; + + /** + * Required + *

      + * ID of the reaction to use. Use the current reaction ID to undo. + */ + private final Integer reactionId; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.PROFILE_POST_COMMENTS_REACT; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + return this.id; + } + + @Override + public List params() { + return List.of(); + + } + + @Override + public List body() { + if (this.reactionId == null || this.reactionId <= 0) + throw new XenForoMissingArgsException("reactionId"); + + return List.of(new XenNameValuePair("reaction_id", this.reactionId)); + } + + @Override + public Class response() { + return ReactResponse.class; + } +} diff --git a/src/es/cadox8/xenapi/api/profile/UpdateProfilePost.java b/src/es/cadox8/xenapi/api/profile/UpdateProfilePost.java new file mode 100644 index 0000000..5a50178 --- /dev/null +++ b/src/es/cadox8/xenapi/api/profile/UpdateProfilePost.java @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.profile; + +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class UpdateProfilePost implements ApiRequest { + + /** + * Required + */ + private final Integer profileId; + + /** + * Required + */ + private final String message; + @Builder.Default private final String authorAlertReason = ""; + @Builder.Default private final Boolean authorAlert = true; + + private final String attachmentKey; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.PROFILE_POST_COMMENTS_ID; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + if (this.profileId == null || this.profileId <= 0) + throw new XenForoMissingArgsException("profileId!"); + + return this.profileId; + } + + @Override + public List params() { + return List.of(); + } + + @Override + public List body() { + final List list = new ArrayList<>(); + + if (this.message == null || this.message.isEmpty()) + throw new XenForoMissingArgsException("message!"); + + list.add(new XenNameValuePair("message", this.message)); + + list.add(new XenNameValuePair("author_alert", this.authorAlert)); + list.add(new XenNameValuePair("author_alert_reason", this.authorAlertReason)); + + if (this.attachmentKey != null && !this.attachmentKey.isEmpty()) + params().add(new XenNameValuePair("attachmentKey", this.attachmentKey)); + + return list; + } + + @Override + public Class response() { + return ProfilePostResponse.class; + } +} diff --git a/src/es/cadox8/xenapi/api/profile/comments/DeleteProfilePostComments.java b/src/es/cadox8/xenapi/api/profile/comments/DeleteProfilePostComments.java new file mode 100644 index 0000000..3bfd45b --- /dev/null +++ b/src/es/cadox8/xenapi/api/profile/comments/DeleteProfilePostComments.java @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.profile.comments; + +import es.cadox8.xenapi.api.commons.Success; +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class DeleteProfilePostComments implements ApiRequest { + + /** + * Required + */ + private final Integer profilePostId; + + // ----- + + private final String reason; + @Builder.Default private final Boolean hardDelete = false; + @Builder.Default private final Boolean authorAlert = true; + @Builder.Default private final String authorAlertReason = ""; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.PROFILE_POST_COMMENTS_ID; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.DELETE; + } + + @Override + public Object query() { + if (this.profilePostId == null || this.profilePostId <= 0) + throw new XenForoMissingArgsException("profilePostId!"); + + return this.profilePostId; + } + + @Override + public List params() { + return List.of(); + } + + @Override + public List body() { + final List list = new ArrayList<>(); + + if (this.reason == null || this.reason.isEmpty()) + throw new XenForoMissingArgsException("reason!"); + + list.add(new XenNameValuePair("reason", this.reason)); + list.add(new XenNameValuePair("hard_delete", this.hardDelete)); + list.add(new XenNameValuePair("author_alert", this.authorAlert)); + list.add(new XenNameValuePair("author_alert_reason", this.authorAlertReason)); + + return list; + } + + @Override + public Class response() { + return Success.class; + } +} diff --git a/src/es/cadox8/xenapi/api/profile/comments/GetProfilePostComments.java b/src/es/cadox8/xenapi/api/profile/comments/GetProfilePostComments.java new file mode 100644 index 0000000..c1da8fd --- /dev/null +++ b/src/es/cadox8/xenapi/api/profile/comments/GetProfilePostComments.java @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.profile.comments; + +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.List; + +@Builder +public class GetProfilePostComments implements ApiRequest { + + /** + * Required + */ + private final Integer profilePostId; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.PROFILE_POST_COMMENTS_ID; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.GET; + } + + @Override + public Object query() { + if (this.profilePostId == null || this.profilePostId <= 0) + throw new XenForoMissingArgsException("profilePostId!"); + + return this.profilePostId; + } + + @Override + public List params() { + return List.of(); + } + + @Override + public List body() { + return List.of(); + } + + @Override + public Class response() { + return GetProfilePostCommentsResponse.class; + } +} diff --git a/src/es/cadox8/xenapi/api/profile/comments/GetProfilePostCommentsResponse.java b/src/es/cadox8/xenapi/api/profile/comments/GetProfilePostCommentsResponse.java new file mode 100644 index 0000000..c1ed37e --- /dev/null +++ b/src/es/cadox8/xenapi/api/profile/comments/GetProfilePostCommentsResponse.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.profile.comments; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.commons.ProfilePostComment; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Data; + +@Data +public class GetProfilePostCommentsResponse implements ApiResponse { + + @Expose + @SerializedName("comment") + private ProfilePostComment comment; +} diff --git a/src/es/cadox8/xenapi/api/profile/comments/PostProfilePostComments.java b/src/es/cadox8/xenapi/api/profile/comments/PostProfilePostComments.java new file mode 100644 index 0000000..dc69244 --- /dev/null +++ b/src/es/cadox8/xenapi/api/profile/comments/PostProfilePostComments.java @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.profile.comments; + +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class PostProfilePostComments implements ApiRequest { + + /** + * Required + */ + private final Integer profilePostId; + /** + * Required + */ + private final String message; + + private final String attachmentKey; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.PROFILE_POST_COMMENTS; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + return null; + } + + @Override + public List params() { + return List.of(); + } + + @Override + public List body() { + final List list = new ArrayList<>(); + + if (this.profilePostId == null || this.profilePostId <= 0) + throw new XenForoMissingArgsException("profilePostId!"); + + if (this.message == null || this.message.isEmpty()) + throw new XenForoMissingArgsException("message!"); + + list.add(new XenNameValuePair("profile_post_id", this.profilePostId)); + list.add(new XenNameValuePair("message", this.message)); + + if (this.attachmentKey != null && !this.attachmentKey.isEmpty()) + params().add(new XenNameValuePair("attachmentKey", this.attachmentKey)); + + return list; + } + + @Override + public Class response() { + return ProfilePostCommentsResponse.class; + } +} diff --git a/src/es/cadox8/xenapi/api/profile/comments/ProfilePostCommentsResponse.java b/src/es/cadox8/xenapi/api/profile/comments/ProfilePostCommentsResponse.java new file mode 100644 index 0000000..2e32c34 --- /dev/null +++ b/src/es/cadox8/xenapi/api/profile/comments/ProfilePostCommentsResponse.java @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.profile.comments; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.commons.ProfilePostComment; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Data; + +@Data +public class ProfilePostCommentsResponse implements ApiResponse { + + @Expose + @SerializedName("success") + private Boolean success; + + @Expose + @SerializedName("comment") + private ProfilePostComment comment; +} diff --git a/src/es/cadox8/xenapi/api/profile/comments/ReactProfilePostComments.java b/src/es/cadox8/xenapi/api/profile/comments/ReactProfilePostComments.java new file mode 100644 index 0000000..f0d15b6 --- /dev/null +++ b/src/es/cadox8/xenapi/api/profile/comments/ReactProfilePostComments.java @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.profile.comments; + +import es.cadox8.xenapi.api.commons.ReactResponse; +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.List; + +@Builder +public class ReactProfilePostComments implements ApiRequest { + + /** + * Required + */ + private final int id; + + /** + * Required + *

      + * ID of the reaction to use. Use the current reaction ID to undo. + */ + private final Integer reactionId; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.PROFILE_POST_COMMENTS_REACT; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + return this.id; + } + + @Override + public List params() { + return List.of(); + + } + + @Override + public List body() { + if (this.reactionId == null || this.reactionId <= 0) + throw new XenForoMissingArgsException("reactionId"); + + return List.of(new XenNameValuePair("reaction_id", this.reactionId)); + } + + @Override + public Class response() { + return ReactResponse.class; + } +} diff --git a/src/es/cadox8/xenapi/api/profile/comments/UpdateProfilePostComments.java b/src/es/cadox8/xenapi/api/profile/comments/UpdateProfilePostComments.java new file mode 100644 index 0000000..b452bc1 --- /dev/null +++ b/src/es/cadox8/xenapi/api/profile/comments/UpdateProfilePostComments.java @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.profile.comments; + +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class UpdateProfilePostComments implements ApiRequest { + + /** + * Required + */ + private final Integer profilePostId; + + /** + * Required + */ + private final String message; + @Builder.Default private final String authorAlertReason = ""; + @Builder.Default private final Boolean authorAlert = true; + + private final String attachmentKey; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.PROFILE_POST_COMMENTS_ID; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + if (this.profilePostId == null || this.profilePostId <= 0) + throw new XenForoMissingArgsException("profilePostId!"); + + return this.profilePostId; + } + + @Override + public List params() { + return List.of(); + } + + @Override + public List body() { + final List list = new ArrayList<>(); + + if (this.message == null || this.message.isEmpty()) + throw new XenForoMissingArgsException("message!"); + + list.add(new XenNameValuePair("message", this.message)); + + list.add(new XenNameValuePair("author_alert", this.authorAlert)); + list.add(new XenNameValuePair("author_alert_reason", this.authorAlertReason)); + + if (this.attachmentKey != null && !this.attachmentKey.isEmpty()) + params().add(new XenNameValuePair("attachmentKey", this.attachmentKey)); + + return list; + } + + @Override + public Class response() { + return ProfilePostCommentsResponse.class; + } +} diff --git a/src/es/cadox8/xenapi/api/search/BasicSearch.java b/src/es/cadox8/xenapi/api/search/BasicSearch.java new file mode 100644 index 0000000..f403ba2 --- /dev/null +++ b/src/es/cadox8/xenapi/api/search/BasicSearch.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.search; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Data; + +@Data +public class BasicSearch implements ApiResponse { + + @Expose + @SerializedName("success") + private Boolean success; + + @Expose + @SerializedName("search") + private Search search; +} diff --git a/src/es/cadox8/xenapi/api/search/IdSearch.java b/src/es/cadox8/xenapi/api/search/IdSearch.java new file mode 100644 index 0000000..4c94cbe --- /dev/null +++ b/src/es/cadox8/xenapi/api/search/IdSearch.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.search; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.commons.Pagination; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Data; + +import java.util.List; + +@Data +public class IdSearch implements ApiResponse { + + @Expose + @SerializedName("search") + private Search search; + + @Expose + @SerializedName("results") + private List results; + + @Expose + @SerializedName("pagination") + private Pagination pagination; + + @Expose + @SerializedName("get_older_results_date") + private Integer olderResultsDate; +} diff --git a/src/es/cadox8/xenapi/api/search/PostSearch.java b/src/es/cadox8/xenapi/api/search/PostSearch.java new file mode 100644 index 0000000..2336a00 --- /dev/null +++ b/src/es/cadox8/xenapi/api/search/PostSearch.java @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.search; + +import es.cadox8.xenapi.api.commons.Order; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenAPIExperimental; +import es.cadox8.xenapi.utils.XenNameValuePair; +import es.cadox8.xenapi.utils.XenforoPaths; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +@XenAPIExperimental(XenAPIExperimental.Status.UNTESTED) +public class PostSearch implements ApiRequest { + + private final String searchType; + private final String keywords; + /** + * ????? + */ + private final List c; + + private final Order order; + @Builder.Default private final Boolean grouped = false; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.SEARCH; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + return null; + } + + @Override + public List params() { + return List.of(); + } + + @Override + public List body() { + final List list = new ArrayList<>(); + + if (this.searchType != null && !this.searchType.isEmpty()) + list.add(new XenNameValuePair("search_type", this.searchType)); + + if (this.keywords != null && !this.keywords.isEmpty()) + list.add(new XenNameValuePair("keywords", this.keywords)); + + if (this.c != null && !this.c.isEmpty()) + list.add(new XenNameValuePair("c", this.c)); + + if (this.order != null) + list.add(new XenNameValuePair("order", this.order.getOrder())); + + if (this.grouped != null) + list.add(new XenNameValuePair("grouped", this.grouped)); + + return list; + } + + @Override + public Class response() { + return BasicSearch.class; + } +} diff --git a/src/es/cadox8/xenapi/api/search/PostSearchMember.java b/src/es/cadox8/xenapi/api/search/PostSearchMember.java new file mode 100644 index 0000000..35f28fb --- /dev/null +++ b/src/es/cadox8/xenapi/api/search/PostSearchMember.java @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.search; + +import es.cadox8.xenapi.api.commons.TypeNodeId; +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenAPIExperimental; +import es.cadox8.xenapi.utils.XenNameValuePair; +import es.cadox8.xenapi.utils.XenforoPaths; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +@XenAPIExperimental(XenAPIExperimental.Status.UNTESTED) +public class PostSearchMember implements ApiRequest { + + private final Integer userId; + private final String content; + private final String type; + private final Integer before; + private final TypeNodeId threadType; + @Builder.Default private final Boolean grouped = false; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.SEARCH_MEMBER; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + return null; + } + + @Override + public List params() { + return List.of(); + } + + @Override + public List body() { + final List list = new ArrayList<>(); + + if (this.userId == null) + throw new XenForoMissingArgsException("userId"); + + list.add(new XenNameValuePair("user_id", this.userId)); + + if (this.content != null && !this.content.isEmpty()) + list.add(new XenNameValuePair("content", this.content)); + + if (this.type != null && !this.type.isEmpty()) + list.add(new XenNameValuePair("type", this.type)); + + if (this.before != null) + list.add(new XenNameValuePair("before", this.before)); + + if (this.threadType != null) + list.add(new XenNameValuePair("thread_type", this.threadType.getNodeType())); + + if (this.grouped != null) + list.add(new XenNameValuePair("grouped", this.grouped)); + + return list; + } + + @Override + public Class response() { + return BasicSearch.class; + } +} diff --git a/src/es/cadox8/xenapi/api/search/Search.java b/src/es/cadox8/xenapi/api/search/Search.java new file mode 100644 index 0000000..29e9682 --- /dev/null +++ b/src/es/cadox8/xenapi/api/search/Search.java @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.search; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Data; + +import java.util.List; + +@Data +public class Search implements ApiResponse { + + @Expose + @SerializedName("search_id") + private Integer searchId; + + @Expose + @SerializedName("result_count") + private Integer resultCount; + + @Expose + @SerializedName("search_type") + private String searchType; + + @Expose + @SerializedName("search_query") + private String searchQuery; + + @Expose + @SerializedName("search_constraints") + private List searchConstraints; + + @Expose + @SerializedName("search_order") + private List searchOrder; + + @Expose + @SerializedName("search_grouping") + private Boolean searchGrouping; + + @Expose + @SerializedName("warnings") + private List warnings; + + @Expose + @SerializedName("user_id") + private Integer userId; + + @Expose + @SerializedName("search_date") + private Integer searchDate; + + @Expose + @SerializedName("query_hash") + private String queryHash; +} diff --git a/src/es/cadox8/xenapi/api/search/SearchById.java b/src/es/cadox8/xenapi/api/search/SearchById.java new file mode 100644 index 0000000..bd60731 --- /dev/null +++ b/src/es/cadox8/xenapi/api/search/SearchById.java @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.search; + +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenAPIExperimental; +import es.cadox8.xenapi.utils.XenNameValuePair; +import es.cadox8.xenapi.utils.XenforoPaths; +import lombok.Builder; + +import java.util.List; + +@Builder +@XenAPIExperimental(XenAPIExperimental.Status.UNTESTED) +public class SearchById implements ApiRequest { + + /** + * Not very sure the Id of what + */ + private final Integer id; + + private final Integer page; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.SEARCH_ID; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.GET; + } + + @Override + public Object query() { + if (this.id == null) + throw new XenForoMissingArgsException("id"); + return this.id; + } + + @Override + public List params() { + if (this.page == null) + return List.of(); + return List.of(new XenNameValuePair("page", String.valueOf(this.page))); + } + + @Override + public List body() { + return List.of(); + } + + @Override + public Class response() { + return IdSearch.class; + } +} diff --git a/src/es/cadox8/xenapi/api/search/SearchByIdOlder.java b/src/es/cadox8/xenapi/api/search/SearchByIdOlder.java new file mode 100644 index 0000000..0b4dbeb --- /dev/null +++ b/src/es/cadox8/xenapi/api/search/SearchByIdOlder.java @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.search; + +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenAPIExperimental; +import es.cadox8.xenapi.utils.XenNameValuePair; +import es.cadox8.xenapi.utils.XenforoPaths; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +@XenAPIExperimental(XenAPIExperimental.Status.UNTESTED) +public class SearchByIdOlder implements ApiRequest { + + /** + * Not very sure the Id of what + */ + private final Integer id; + + private final Integer before; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.SEARCH_ID_OLDER; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.POST; + } + + @Override + public Object query() { + if (this.id == null) + throw new XenForoMissingArgsException("id"); + return this.id; + } + + @Override + public List params() { + if (this.id == null) + return List.of(); + + final List list = new ArrayList<>(); + list.add(new XenNameValuePair("search_id", this.id)); + + if (this.before != null) + list.add(new XenNameValuePair("before", this.before)); + + return list; + } + + @Override + public List body() { + return List.of(); + } + + @Override + public Class response() { + return BasicSearch.class; + } +} diff --git a/src/es/cadox8/xenapi/api/search/SearchForumById.java b/src/es/cadox8/xenapi/api/search/SearchForumById.java new file mode 100644 index 0000000..42dfcb6 --- /dev/null +++ b/src/es/cadox8/xenapi/api/search/SearchForumById.java @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.search; + +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenAPIExperimental; +import es.cadox8.xenapi.utils.XenNameValuePair; +import es.cadox8.xenapi.utils.XenforoPaths; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +@XenAPIExperimental(XenAPIExperimental.Status.UNTESTED) +public class SearchForumById implements ApiRequest { + + private final Integer id; + + @Builder.Default private final Boolean withThreads = false; + private final Integer page; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.SEARCH_FORUMS; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.GET; + } + + @Override + public Object query() { + if (this.id == null) + throw new XenForoMissingArgsException("id"); + return this.id; + } + + @Override + public List params() { + final List list = new ArrayList<>(); + + if (this.withThreads != null) + list.add(new XenNameValuePair("with_threads", this.withThreads)); + + if (this.page != null) + list.add(new XenNameValuePair("page", this.page)); + + return list; + } + + @Override + public List body() { + return List.of(); + } + + @Override + public Class response() { + return SearchForumResponse.class; + } +} diff --git a/src/es/cadox8/xenapi/api/search/SearchForumResponse.java b/src/es/cadox8/xenapi/api/search/SearchForumResponse.java new file mode 100644 index 0000000..14e9484 --- /dev/null +++ b/src/es/cadox8/xenapi/api/search/SearchForumResponse.java @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.search; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.commons.Pagination; +import es.cadox8.xenapi.api.forums.Threads; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Data; + +import java.util.List; + +@Data +public class SearchForumResponse implements ApiResponse { + + @Expose + @SerializedName("search_forum") + private Search search; + + @Expose + @SerializedName("threads") + private List threads; + + @Expose + @SerializedName("pagination") + private Pagination pagination; + + @Expose + @SerializedName("sticky") + private List sticky; +} diff --git a/src/es/cadox8/xenapi/api/search/SearchForumThreadsById.java b/src/es/cadox8/xenapi/api/search/SearchForumThreadsById.java new file mode 100644 index 0000000..5199b4e --- /dev/null +++ b/src/es/cadox8/xenapi/api/search/SearchForumThreadsById.java @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.search; + +import es.cadox8.xenapi.exceptions.XenForoMissingArgsException; +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenAPIExperimental; +import es.cadox8.xenapi.utils.XenNameValuePair; +import es.cadox8.xenapi.utils.XenforoPaths; +import lombok.Builder; + +import java.util.List; + +@Builder +@XenAPIExperimental(XenAPIExperimental.Status.UNTESTED) +public class SearchForumThreadsById implements ApiRequest { + + private final Integer id; + + @Override + public XenforoPaths getPath() { + return XenforoPaths.SEARCH_FORUMS_THREADS; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.GET; + } + + @Override + public Object query() { + if (this.id == null) + throw new XenForoMissingArgsException("id"); + return this.id; + } + + @Override + public List params() { + return List.of(); + } + + @Override + public List body() { + return List.of(); + } + + @Override + public Class response() { + return SearchForumThreadsResponse.class; + } +} diff --git a/src/es/cadox8/xenapi/api/search/SearchForumThreadsResponse.java b/src/es/cadox8/xenapi/api/search/SearchForumThreadsResponse.java new file mode 100644 index 0000000..b02eb28 --- /dev/null +++ b/src/es/cadox8/xenapi/api/search/SearchForumThreadsResponse.java @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.search; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.commons.Pagination; +import es.cadox8.xenapi.api.forums.Threads; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Data; + +import java.util.List; + +@Data +public class SearchForumThreadsResponse implements ApiResponse { + + @Expose + @SerializedName("threads") + private List threads; + + @Expose + @SerializedName("pagination") + private Pagination pagination; + + @Expose + @SerializedName("sticky") + private List sticky; +} diff --git a/src/es/cadox8/xenapi/api/stats/GetStats.java b/src/es/cadox8/xenapi/api/stats/GetStats.java new file mode 100644 index 0000000..3b73efd --- /dev/null +++ b/src/es/cadox8/xenapi/api/stats/GetStats.java @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.stats; + +import es.cadox8.xenapi.net.ApiRequest; +import es.cadox8.xenapi.net.HttpMethod; +import es.cadox8.xenapi.utils.XenforoPaths; +import es.cadox8.xenapi.utils.XenNameValuePair; +import lombok.Builder; + +import java.util.ArrayList; +import java.util.List; + +@Builder +public class GetStats implements ApiRequest { + + @Override + public XenforoPaths getPath() { + return XenforoPaths.STATS; + } + + @Override + public HttpMethod getMethod() { + return HttpMethod.GET; + } + + @Override + public Object query() { + return null; + } + + @Override + public List params() { + return new ArrayList<>(); + } + + @Override + public List body() { + return new ArrayList<>(); + } + + @Override + public Class response() { + return StatsResponse.class; + } +} diff --git a/src/es/cadox8/xenapi/api/stats/StatsResponse.java b/src/es/cadox8/xenapi/api/stats/StatsResponse.java new file mode 100644 index 0000000..656e243 --- /dev/null +++ b/src/es/cadox8/xenapi/api/stats/StatsResponse.java @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.stats; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Data; + +@Data +public class StatsResponse implements ApiResponse { + + @Expose + @SerializedName("totals") + private final Totals totals; + @Expose + @SerializedName("latest_user") + private final LatestUser latestUser; + @Expose + @SerializedName("online") + private final Online online; + + @Data + public static class Totals { + + @Expose + @SerializedName("threads") + private final int threads; + + @Expose + @SerializedName("messages") + private final int messages; + + @Expose + @SerializedName("users") + private final int users; + } + + @Data + public static class LatestUser { + @Expose + @SerializedName("user_id") + private final int userId; + + @Expose + @SerializedName("username") + private final String username; + + @Expose + @SerializedName("register_date") + private final int registerDate; + } + + @Data + public static class Online { + @Expose + @SerializedName("total") + private final int total; + @Expose + @SerializedName("members") + private final int members; + @Expose + @SerializedName("guests") + private final int guests; + } +} diff --git a/src/es/cadox8/xenapi/api/user/FindEmail.java b/src/es/cadox8/xenapi/api/user/FindEmail.java new file mode 100644 index 0000000..552b34c --- /dev/null +++ b/src/es/cadox8/xenapi/api/user/FindEmail.java @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.user; + +import com.google.gson.annotations.Expose; +import es.cadox8.xenapi.api.auth.UserResponse; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Getter; +import lombok.ToString; + +@ToString +@Getter + +public class FindEmail implements ApiResponse { + @Expose private UserResponse user; +} diff --git a/src/es/cadox8/xenapi/api/user/FindName.java b/src/es/cadox8/xenapi/api/user/FindName.java new file mode 100644 index 0000000..40ae347 --- /dev/null +++ b/src/es/cadox8/xenapi/api/user/FindName.java @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.user; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.auth.UserResponse; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Getter; +import lombok.ToString; + +import java.util.List; + +@ToString +@Getter + +public class FindName implements ApiResponse { + + @SerializedName("exact") + @Expose + private UserResponse user; + + @Expose + @SerializedName("recommendations") + private List recommendations; +} diff --git a/src/es/cadox8/xenapi/api/user/GetProfilePosts.java b/src/es/cadox8/xenapi/api/user/GetProfilePosts.java new file mode 100644 index 0000000..1ca616c --- /dev/null +++ b/src/es/cadox8/xenapi/api/user/GetProfilePosts.java @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.user; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.commons.Pagination; +import es.cadox8.xenapi.api.commons.ProfilePost; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Getter; +import lombok.ToString; + +import java.util.List; + +@Getter +@ToString + +public class GetProfilePosts implements ApiResponse { + @SerializedName("profile_posts") + @Expose + private List posts; + + @SerializedName("pagination") + @Expose + private Pagination pagination; +} diff --git a/src/es/cadox8/xenapi/api/user/UserId.java b/src/es/cadox8/xenapi/api/user/UserId.java new file mode 100644 index 0000000..2c2a67d --- /dev/null +++ b/src/es/cadox8/xenapi/api/user/UserId.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.user; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.auth.UserResponse; +import es.cadox8.xenapi.api.commons.Pagination; +import es.cadox8.xenapi.api.commons.ProfilePost; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Getter; +import lombok.ToString; + +import java.util.List; + +@Getter +@ToString + +public class UserId implements ApiResponse { + @SerializedName("user") + @Expose + private UserResponse user; + + @SerializedName("profile_posts") + @Expose + private List profilePosts; + + @SerializedName("pagination") + @Expose + private Pagination pagination; +} diff --git a/src/es/cadox8/xenapi/api/user/Users.java b/src/es/cadox8/xenapi/api/user/Users.java new file mode 100644 index 0000000..d05a1de --- /dev/null +++ b/src/es/cadox8/xenapi/api/user/Users.java @@ -0,0 +1,210 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.api.user; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import es.cadox8.xenapi.api.commons.AvatarUrls; +import es.cadox8.xenapi.api.commons.Pagination; +import es.cadox8.xenapi.api.commons.ProfileBannerUrls; +import es.cadox8.xenapi.net.ApiResponse; +import lombok.Getter; +import lombok.ToString; + +import java.util.List; +import java.util.Map; + + +@Getter +@ToString +public class Users implements ApiResponse { + @Expose private List users; + @Expose private Pagination pagination; + + @Getter + @ToString + public static class UsersData { + @Expose + @SerializedName("activity_visible") + private boolean activityVisible; + + @Expose + @SerializedName("avatar_urls") + private AvatarUrls avatarUrls; + + @Expose + @SerializedName("can_ban") + private boolean canBan; + + @Expose + @SerializedName("can_converse") + private boolean canConverse; + + @Expose + @SerializedName("can_edit") + private boolean canEdit; + + @Expose + @SerializedName("can_follow") + private boolean canFollow; + + @Expose + @SerializedName("can_ignore") + private boolean canIgnore; + + @Expose + @SerializedName("can_post_profile") + private boolean canPostProfile; + + @Expose + @SerializedName("can_view_profile") + private boolean canViewProfile; + + @Expose + @SerializedName("can_view_profile_posts") + private boolean canViewProfilePosts; + + @Expose + @SerializedName("can_warn") + private boolean canWarn; + + @Expose + @SerializedName("custom_fields") + private Map customFields; + + @Expose + @SerializedName("custom_title") + private String customTitle; + + @Expose + @SerializedName("is_admin") + private boolean isAdmin; + + @Expose + @SerializedName("is_banned") + private boolean isBanned; + + @Expose + @SerializedName("is_discouraged") + private boolean isDiscouraged; + + @Expose + @SerializedName("is_followed") + private boolean isFollowed; + + @Expose + @SerializedName("is_ignored") + private boolean isIgnored; + + @Expose + @SerializedName("is_moderator") + private boolean isModerator; + + @Expose + @SerializedName("is_staff") + private boolean isStaff; + + @Expose + @SerializedName("is_super_admin") + private boolean isSuperAdmin; + + @Expose + @SerializedName("last_activity") + private long lastActivity; + + @Expose + @SerializedName("location") + private String location; + + @Expose + @SerializedName("message_count") + private int messageCount; + + @Expose + @SerializedName("profile_banner_urls") + private ProfileBannerUrls profileBannerUrls; + + @Expose + @SerializedName("question_solution_count") + private int questionSolutionCount; + + @Expose + @SerializedName("reaction_score") + private int reactionScore; + + @Expose + @SerializedName("register_date") + private long registerDate; + + @Expose + @SerializedName("secondary_group_ids") + private List secondaryGroupIds; + + @Expose + @SerializedName("signature") + private String signature; + + @Expose + @SerializedName("trophy_points") + private int trophyPoints; + + @Expose + @SerializedName("user_group_id") + private int userGroupId; + + @Expose + @SerializedName("user_id") + private int userId; + + @Expose + @SerializedName("user_state") + private String userState; + + @Expose + @SerializedName("user_title") + private String userTitle; + + @Expose + @SerializedName("username") + private String username; + + @Expose + @SerializedName("view_url") + private String viewUrl; + + @Expose + @SerializedName("visible") + private boolean visible; + + @Expose + @SerializedName("vote_score") + private int voteScore; + + @Expose + @SerializedName("warning_points") + private int warningPoints; + + @Expose + @SerializedName("website") + private String website; + } +} diff --git a/src/es/cadox8/xenapi/exceptions/XenForoBadRequestException.java b/src/es/cadox8/xenapi/exceptions/XenForoBadRequestException.java index 66d848a..0277c51 100644 --- a/src/es/cadox8/xenapi/exceptions/XenForoBadRequestException.java +++ b/src/es/cadox8/xenapi/exceptions/XenForoBadRequestException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021. + * Copyright (c) 2021-2024 * * This file is part of XenAPI . * @@ -21,7 +21,7 @@ package es.cadox8.xenapi.exceptions; -public class XenForoBadRequestException extends RuntimeException { +public class XenForoBadRequestException extends XenForoBaseException { public XenForoBadRequestException(String message, Throwable cause) { super(message, cause); } diff --git a/src/es/cadox8/xenapi/exceptions/XenForoBaseException.java b/src/es/cadox8/xenapi/exceptions/XenForoBaseException.java new file mode 100644 index 0000000..1dac257 --- /dev/null +++ b/src/es/cadox8/xenapi/exceptions/XenForoBaseException.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.exceptions; + +public class XenForoBaseException extends RuntimeException { + + public XenForoBaseException() { + } + + public XenForoBaseException(String message) { + super(message); + } + + public XenForoBaseException(String message, Throwable cause) { + super(message, cause); + } + + public XenForoBaseException(Throwable cause) { + super(cause); + } + + public XenForoBaseException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } +} diff --git a/src/es/cadox8/xenapi/exceptions/XenForoForbiddenException.java b/src/es/cadox8/xenapi/exceptions/XenForoForbiddenException.java new file mode 100644 index 0000000..aa0bb57 --- /dev/null +++ b/src/es/cadox8/xenapi/exceptions/XenForoForbiddenException.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.exceptions; + +public class XenForoForbiddenException extends XenForoBaseException { + + public XenForoForbiddenException() { + } + + public XenForoForbiddenException(String message) { + super(message); + } + + public XenForoForbiddenException(String message, Throwable cause) { + super(message, cause); + } + + public XenForoForbiddenException(Throwable cause) { + super(cause); + } + + public XenForoForbiddenException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } +} diff --git a/src/es/cadox8/xenapi/exceptions/XenForoHttpException.java b/src/es/cadox8/xenapi/exceptions/XenForoHttpException.java index 1a6dd46..468421b 100644 --- a/src/es/cadox8/xenapi/exceptions/XenForoHttpException.java +++ b/src/es/cadox8/xenapi/exceptions/XenForoHttpException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021. + * Copyright (c) 2021-2024 * * This file is part of XenAPI . * @@ -21,9 +21,10 @@ package es.cadox8.xenapi.exceptions; -public class XenForoHttpException extends RuntimeException { +public class XenForoHttpException extends XenForoBaseException { - public XenForoHttpException() {} + public XenForoHttpException() { + } public XenForoHttpException(String message) { super(message); diff --git a/src/es/cadox8/xenapi/exceptions/XenForoMissingArgsException.java b/src/es/cadox8/xenapi/exceptions/XenForoMissingArgsException.java new file mode 100644 index 0000000..fa5a978 --- /dev/null +++ b/src/es/cadox8/xenapi/exceptions/XenForoMissingArgsException.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.exceptions; + +public class XenForoMissingArgsException extends XenForoBaseException { + + public XenForoMissingArgsException() { + } + + public XenForoMissingArgsException(String message) { + super(message); + } + + public XenForoMissingArgsException(String message, Throwable cause) { + super(message, cause); + } + + public XenForoMissingArgsException(Throwable cause) { + super(cause); + } + + public XenForoMissingArgsException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message + " is missing or empty", cause, enableSuppression, writableStackTrace); + } +} diff --git a/src/es/cadox8/xenapi/exceptions/XenforoNotAuthorizedException.java b/src/es/cadox8/xenapi/exceptions/XenforoNotAuthorizedException.java new file mode 100644 index 0000000..6c873fc --- /dev/null +++ b/src/es/cadox8/xenapi/exceptions/XenforoNotAuthorizedException.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2021-2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.exceptions; + +public class XenforoNotAuthorizedException extends XenForoBaseException { + + public XenforoNotAuthorizedException() { + } + + public XenforoNotAuthorizedException(String message) { + super(message); + } + + public XenforoNotAuthorizedException(String message, Throwable cause) { + super(message, cause); + } + + public XenforoNotAuthorizedException(Throwable cause) { + super(cause); + } + + public XenforoNotAuthorizedException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } +} diff --git a/src/es/cadox8/xenapi/exceptions/XenforoNotFoundException.java b/src/es/cadox8/xenapi/exceptions/XenforoNotFoundException.java new file mode 100644 index 0000000..06a50d3 --- /dev/null +++ b/src/es/cadox8/xenapi/exceptions/XenforoNotFoundException.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2021-2024 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.exceptions; + +public class XenforoNotFoundException extends XenForoBaseException { + + public XenforoNotFoundException() { + } + + public XenforoNotFoundException(String message) { + super(message); + } + + public XenforoNotFoundException(String message, Throwable cause) { + super(message, cause); + } + + public XenforoNotFoundException(Throwable cause) { + super(cause); + } + + public XenforoNotFoundException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } +} diff --git a/src/es/cadox8/xenapi/net/ApiRequest.java b/src/es/cadox8/xenapi/net/ApiRequest.java new file mode 100644 index 0000000..434d6e0 --- /dev/null +++ b/src/es/cadox8/xenapi/net/ApiRequest.java @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.net; + +import es.cadox8.xenapi.utils.XenNameValuePair; +import es.cadox8.xenapi.utils.XenforoPaths; + +import java.util.List; + +public interface ApiRequest { + XenforoPaths getPath(); + + HttpMethod getMethod(); + + Object query(); + + List params(); + + List body(); + + Class response(); + + default boolean containsFile() { + return false; + } +} \ No newline at end of file diff --git a/src/es/cadox8/xenapi/utils/Argument.java b/src/es/cadox8/xenapi/net/ApiResponse.java similarity index 81% rename from src/es/cadox8/xenapi/utils/Argument.java rename to src/es/cadox8/xenapi/net/ApiResponse.java index bae3f5a..705e797 100644 --- a/src/es/cadox8/xenapi/utils/Argument.java +++ b/src/es/cadox8/xenapi/net/ApiResponse.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021. + * Copyright (c) 2025 * * This file is part of XenAPI . * @@ -19,13 +19,8 @@ * If you have any question feel free to ask at or */ -package es.cadox8.xenapi.utils; +package es.cadox8.xenapi.net; -import lombok.AllArgsConstructor; -import lombok.Data; +public interface ApiResponse { -@Data -@AllArgsConstructor -public class Argument { - private String argValue; } diff --git a/src/es/cadox8/xenapi/net/HttpMethod.java b/src/es/cadox8/xenapi/net/HttpMethod.java new file mode 100644 index 0000000..83b36d6 --- /dev/null +++ b/src/es/cadox8/xenapi/net/HttpMethod.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.net; + +public enum HttpMethod { + GET, + POST, + PUT, + DELETE, + OPTIONS +} diff --git a/src/es/cadox8/xenapi/net/Response.java b/src/es/cadox8/xenapi/net/Response.java new file mode 100644 index 0000000..ad28b67 --- /dev/null +++ b/src/es/cadox8/xenapi/net/Response.java @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.net; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@Getter +@RequiredArgsConstructor +public final class Response { + private final S success; + private final E error; + + public static Response success(final S s) { + return new Response<>(s, null); + } + + public static Response error(final E e) { + return new Response<>(null, e); + } + + public boolean success() { + return this.success != null; + } + + public boolean error() { + return this.error != null; + } +} diff --git a/src/es/cadox8/xenapi/net/StatusCode.java b/src/es/cadox8/xenapi/net/StatusCode.java new file mode 100644 index 0000000..0725a21 --- /dev/null +++ b/src/es/cadox8/xenapi/net/StatusCode.java @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2024-2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.net; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor +@Getter +public enum StatusCode { + + Unknown(-1), + OK(200), + BadRequest(400), + NotAuthorized(401), + Forbidden(403), + ResourceNotFound(404); + + private final int status; + + public static StatusCode fromStatus(int status) { + for (final StatusCode statusCode : StatusCode.values()) { + if (statusCode.status == status) { + return statusCode; + } + } + return Unknown; + } +} diff --git a/src/es/cadox8/xenapi/net/XenForoClient.java b/src/es/cadox8/xenapi/net/XenForoClient.java index 6946ee8..e4a607a 100644 --- a/src/es/cadox8/xenapi/net/XenForoClient.java +++ b/src/es/cadox8/xenapi/net/XenForoClient.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021. + * Copyright (c) 2021-2024 * * This file is part of XenAPI . * @@ -21,33 +21,39 @@ package es.cadox8.xenapi.net; -import com.google.gson.*; -import com.google.gson.reflect.TypeToken; -import com.google.gson.stream.JsonReader; -import es.cadox8.xenapi.api.Me; -import es.cadox8.xenapi.exceptions.NotAuthorizedException; -import es.cadox8.xenapi.exceptions.NotFoundException; -import es.cadox8.xenapi.exceptions.XenForoBadRequestException; -import es.cadox8.xenapi.exceptions.XenForoHttpException; -import es.cadox8.xenapi.utils.UrlExpander; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonSyntaxException; +import de.jupf.staticlog.Log; +import de.jupf.staticlog.format.LogFormat; +import es.cadox8.xenapi.api.commons.Errors; +import es.cadox8.xenapi.exceptions.*; import es.cadox8.xenapi.utils.Utils; -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.client.HttpClient; -import org.apache.http.client.methods.*; -import org.apache.http.entity.ContentType; -import org.apache.http.entity.StringEntity; -import org.apache.http.entity.mime.MultipartEntityBuilder; -import org.apache.http.entity.mime.content.FileBody; -import org.apache.http.entity.mime.content.StringBody; -import org.apache.http.impl.client.HttpClientBuilder; +import es.cadox8.xenapi.utils.XenAPIExperimental; +import lombok.Getter; +import lombok.Setter; +import org.apache.hc.client5.http.classic.HttpClient; +import org.apache.hc.client5.http.classic.methods.*; +import org.apache.hc.client5.http.entity.UrlEncodedFormEntity; +import org.apache.hc.client5.http.entity.mime.MultipartEntityBuilder; +import org.apache.hc.client5.http.impl.classic.HttpClients; +import org.apache.hc.client5.http.protocol.HttpClientContext; +import org.apache.hc.core5.http.ClassicHttpResponse; +import org.apache.hc.core5.http.ContentType; +import org.apache.hc.core5.http.HttpEntity; +import org.apache.hc.core5.http.NameValuePair; +import org.apache.hc.core5.http.io.entity.StringEntity; +import org.apache.hc.core5.http.message.BasicNameValuePair; +import org.apache.hc.core5.http.message.StatusLine; +import org.apache.hc.core5.net.URIBuilder; import java.io.File; import java.io.IOException; -import java.io.InputStreamReader; -import java.io.StringReader; -import java.lang.reflect.Type; -import java.util.Objects; +import java.net.URISyntaxException; +import java.util.ArrayList; +import java.util.List; + +import static de.jupf.staticlog.Log.FormatOperations.*; public class XenForoClient { @@ -55,101 +61,181 @@ public class XenForoClient { private final Gson gson; private final String token; - private final String user; + private final int user; + + @Setter + @Getter + @XenAPIExperimental(XenAPIExperimental.Status.TO_BE_DONE) + private boolean enableEnhancementAPI; public XenForoClient(String token) { - this(token, ""); - } - public XenForoClient(String token, String user) { - this(token, user, HttpClientBuilder.create().build()); + this(token, -1); } - public XenForoClient(String token, String user, HttpClient httpClient) { + public XenForoClient(String token, int user) { this.token = token; this.user = user; - this.httpClient = Objects.requireNonNull(httpClient); + this.httpClient = HttpClients.createDefault(); this.gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().setPrettyPrinting().create(); + this.enableEnhancementAPI = false; + + final LogFormat format = Log.newFormat(); + format.line(date("yyyy-MM-dd HH:mm:ss.SSS"), text(" | "), tag(), space(1), text("["), level(), text("]"), space(2), message()); } - public T get(String url, Class responseType, String... params) { - final HttpGet httpGet = new HttpGet(UrlExpander.expandUrl(url, params)); - return getEntityAndReleaseConnection(responseType, httpGet); + /** + * Send a GET request to the server + * + * @param url The URL of the forum + * @param responseType The ResponseType + * @param params Params required for get (defined in the Query class) + * @param The ResponseType + * @return The ResponseType + */ + public Response get(String url, Class responseType, final List params) { + return this.get(url, responseType, "", params); } - public T postForObject(String url, Object body, Class responseType, String... params) { - final HttpPost httpPost = new HttpPost(UrlExpander.expandUrl(url, params)); + /** + * Send a GET request to the server + * + * @param url The URL of the forum + * @param responseType The ResponseType + * @param query The query for the get (id) + * @param The ResponseType + * @return The ResponseType + */ + public Response get(String url, Class responseType, Object query) { + return this.get(url, responseType, query, new ArrayList<>()); + } + /** + * Send a GET request to the server + * + * @param url The URL of the forum + * @param responseType The ResponseType + * @param query The query for the get (id) + * @param params Params required for get (defined in the Query class) + * @param The ResponseType + * @return The ResponseType + */ + public Response get(String url, Class responseType, Object query, final List params) { + final String finalURL = Utils.replaceQuery(url, query); + Log.debug("--> GET Sending to " + finalURL, "XenForoClient"); + final HttpGet httpGet; try { - final HttpEntity entity = new StringEntity(this.gson.toJson(body), ContentType.APPLICATION_FORM_URLENCODED); - httpPost.setEntity(entity); + httpGet = new HttpGet(new URIBuilder(finalURL).addParameters(params).build()); + } catch (URISyntaxException e) { + throw new RuntimeException(e); + } + return this.send(responseType, httpGet); + } - return getEntityAndReleaseConnection(responseType, httpPost); - } catch (JsonSyntaxException e) { - // TODO : custom exception + public Response post(String url, Class responseType, Object query, final List params) { + final String finalURL = Utils.replaceQuery(url, query); + Log.debug("--> POST Sending to " + finalURL + " with params: " + params, "XenForoClient"); + final HttpPost httpPost; + + try { + httpPost = new HttpPost(new URIBuilder(finalURL).build()); + httpPost.setEntity(new UrlEncodedFormEntity(params)); + httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded"); + return this.send(responseType, httpPost); + } catch (JsonSyntaxException | URISyntaxException e) { throw new RuntimeException(e); } } - public T postFileForObject(String url, File file, Class objectClass, String... params) { - final HttpPost httpPost = new HttpPost(UrlExpander.expandUrl(url, params)); - final HttpEntity entity = MultipartEntityBuilder.create().addPart("file", new FileBody(file)).addPart("filename", new StringBody(file.getName(), ContentType.TEXT_PLAIN)).build(); - httpPost.setEntity(entity); - return getEntityAndReleaseConnection(objectClass, httpPost); + public Response postFile(String url, Class responseType, Object query, final List params, File file) { + final String finalURL = Utils.replaceQuery(url, query); + Log.debug("--> POST Sending to " + url + " with params: " + params, "XenForoClient"); + final HttpPost httpPost; + + try { + final MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + builder.addBinaryBody("avatar", file); + params.forEach(p -> builder.addParameter(new BasicNameValuePair(p.getName(), p.getValue()))); + + httpPost = new HttpPost(new URIBuilder(finalURL).build()); + httpPost.setEntity(builder.build()); + return this.send(responseType, httpPost); + } catch (JsonSyntaxException | URISyntaxException e) { + throw new RuntimeException(e); + } } - public T putForObject(String url, Object body, Class responseType, String... params) { - final HttpPut put = new HttpPut(UrlExpander.expandUrl(url, params)); + public Response put(String url, Object body, Class responseType, Object query) { + final HttpPut put = new HttpPut(Utils.replaceQuery(url, query)); try { final HttpEntity entity = new StringEntity(this.gson.toJson(body), ContentType.MULTIPART_FORM_DATA); put.setEntity(entity); - return getEntityAndReleaseConnection(responseType, put); + put.setHeader("Content-Type", "application/x-www-form-urlencoded"); + return send(responseType, put); } catch (JsonSyntaxException e) { throw new RuntimeException(e); } } - public T delete(String url, Class responseType, String... params) { - final HttpDelete delete = new HttpDelete(UrlExpander.expandUrl(url, params)); - return getEntityAndReleaseConnection(responseType, delete); + public Response delete(String url, Class responseType, Object query, final List params) { + final HttpDelete delete; + try { + delete = new HttpDelete(new URIBuilder(Utils.replaceQuery(url, query)).build()); + delete.setEntity(new UrlEncodedFormEntity(params)); + delete.setHeader("Content-Type", "application/x-www-form-urlencoded"); + } catch (URISyntaxException e) { + throw new RuntimeException(e); + } + return this.send(responseType, delete); } - private T getEntityAndReleaseConnection(Class objectClass, HttpRequestBase httpRequest) { + private Response send(Class objectClass, HttpUriRequestBase httpRequest) { try { - httpRequest.setHeader("Content-Type", "application/x-www-form-urlencoded"); - httpRequest.setHeader("XF-Api-User", this.user); httpRequest.setHeader("XF-Api-Key", this.token); - final HttpResponse httpResponse = this.httpClient.execute(httpRequest); - - final HttpEntity httpEntity = httpResponse.getEntity(); - if (httpEntity != null) { - String body = Utils.toString(httpEntity.getContent()); - if (httpResponse.getStatusLine().getStatusCode() == 400) { - throw new XenForoBadRequestException(body); - } - if (httpResponse.getStatusLine().getStatusCode() == 401) { - throw new NotAuthorizedException(body); - } - if (httpResponse.getStatusLine().getStatusCode() == 404) { - throw new NotFoundException("Resource not found: " + httpRequest.getURI()); + if (this.user != -1) + httpRequest.setHeader("XF-Api-User", String.valueOf(this.user)); + + final HttpClientContext context = HttpClientContext.create(); + try (ClassicHttpResponse httpResponse = this.httpClient.executeOpen(null, httpRequest, context)) { + final var httpEntity = httpResponse.getEntity(); + + if (httpEntity == null) + throw new XenForoHttpException("Http entity returned by XenForo is null"); + + final String body = Utils.toString(httpEntity.getContent()); + final StatusLine status = new StatusLine(httpResponse); + + switch (StatusCode.fromStatus(status.getStatusCode())) { + case BadRequest: + throw new XenForoBadRequestException(body); + case NotAuthorized: + throw new XenforoNotAuthorizedException(body); + case Forbidden: + throw new XenForoForbiddenException(body); + case ResourceNotFound: + throw new XenforoNotFoundException("Resource not found: " + httpRequest.getRequestUri()); + case Unknown: + throw new XenForoBaseException(body); } + try { - final StringBuilder sb = new StringBuilder(body.substring(body.indexOf(":") + 1)); - sb.deleteCharAt(sb.length() - 1); - body = sb.toString(); - System.out.println(body); - return this.gson.fromJson(body, objectClass); - } catch (JsonSyntaxException e) { - throw new XenForoHttpException("Cannot parse XenForo response. Expected to get a json string, but got: " + body); + Log.debug("<-- Received body: " + body, "XenForoClient"); + T parsed = this.gson.fromJson(body, objectClass); + return Response.success(parsed); + } catch (JsonSyntaxException je) { + Log.error("", "XenForoClient", je); + Errors err = this.gson.fromJson(body, Errors.class); + Log.error("Retrieved the following errors: ", "XenForoClient"); + err.getErrors().forEach(er -> Log.error(er.getCode() + " - " + er.getMessage(), "XenForoClient")); + return Response.error(err); } - } else { - throw new XenForoHttpException("Http entity returned by XenForo is null"); } - } catch (XenForoHttpException e) { - throw e; + } catch (XenForoBaseException e) { + Log.error(e.getMessage(), "XenForoClient"); + httpRequest.abort(); + Errors err = this.gson.fromJson(e.getMessage(), Errors.class); + return Response.error(err); } catch (IOException e) { throw new XenForoHttpException(e); - } finally { - httpRequest.releaseConnection(); } } } diff --git a/src/es/cadox8/xenapi/net/XenForoUrl.java b/src/es/cadox8/xenapi/net/XenForoUrl.java deleted file mode 100644 index 855b15d..0000000 --- a/src/es/cadox8/xenapi/net/XenForoUrl.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 2021. - * - * This file is part of XenAPI . - * - * XenAPI is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * XenAPI is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - * - * If you have any question feel free to ask at or - */ - -package es.cadox8.xenapi.net; - -import es.cadox8.xenapi.utils.Argument; - -public class XenForoUrl { - - // - public static final String GET_ME = "/me"; - - public static final String GET_USERS = "/users"; - public static final String GET_USERS_ID = "/users/{id}"; - // - - private final String baseUrl; - private final String api_url; - - private Argument[] args = {}; - - private XenForoUrl(String api_url, String baseUrl) { - this.api_url = api_url; - this.baseUrl = baseUrl; - } - - public static XenForoUrl createUrlWithArgs(String api_url, String baseUrl) { - return new XenForoUrl(api_url, baseUrl); - } - - public static String createUrl(String api_url, String baseUrl) { - return api_url + baseUrl; - } - - public XenForoUrl params(Argument... args) { - this.args = args; - return this; - } - - public String asString() { - final StringBuilder builder = new StringBuilder(this.api_url); - builder.append(baseUrl); - for (Argument arg : args) { - builder.append("/"); - builder.append(arg.getArgValue()); - } - return builder.toString(); - } -} diff --git a/src/es/cadox8/xenapi/updater/UpdateChecker.java b/src/es/cadox8/xenapi/updater/UpdateChecker.java new file mode 100644 index 0000000..e908100 --- /dev/null +++ b/src/es/cadox8/xenapi/updater/UpdateChecker.java @@ -0,0 +1,115 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.updater; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import de.jupf.staticlog.Log; +import es.cadox8.xenapi.utils.Version; +import lombok.NonNull; + +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +public class UpdateChecker { + + private final Version currentVersion; + private final URL url; + private final boolean checkPreReleases; + + private String latestVersionUrl; + + private transient CompletableFuture latestVersionFuture = null; + + public UpdateChecker(@NonNull Version currentVersion, boolean checkPreReleases) { + this.currentVersion = currentVersion; + this.checkPreReleases = checkPreReleases; + try { + this.url = new URL("https://api.github.com/repos/cadox8/XenAPI/releases"); + } catch (MalformedURLException e) { + throw new RuntimeException(e); + } + } + + private void check() { + latestVersionFuture = CompletableFuture.supplyAsync(this::fetchLatestVersion); + } + + private synchronized Version getLatestVersion() { + if (latestVersionFuture == null) + this.check(); + return latestVersionFuture.join(); + } + + private Version fetchLatestVersion() { + try { + final JsonArray jsonArray = JsonParser.parseReader(new InputStreamReader(url.openStream())).getAsJsonArray(); + + if (jsonArray.isEmpty()) + return this.currentVersion; + + for (final JsonElement v : jsonArray) { + final JsonObject o = v.getAsJsonObject(); + final Version repoVersion = Version.parse(o.get("tag_name").getAsString()); + final boolean isPreRelease = o.get("prerelease").getAsBoolean(); + this.latestVersionUrl = o.get("html_url").getAsString(); + + if (this.checkPreReleases) { + if (isPreRelease) + return repoVersion; + } else { + if (!isPreRelease) + return repoVersion; + } + } + } catch (IOException ex) { + Log.error("Exception trying to fetch the latest version. Falling back to the current version", "XenAPI", ex); + } + return this.currentVersion; + } + + public void scheduleCheckVersion() { + final Runnable task = this::sendVersionUpdate; + Executors.newScheduledThreadPool(1).scheduleAtFixedRate(task, 0, 5, TimeUnit.HOURS); + } + + public void sendVersionUpdate() { + if (!this.isUpdateAvailable()) + return; + + Log.warn("-------------------", "XenAPI"); + Log.warn("New version available: v" + this.getLatestVersion() + " (current: v" + this.currentVersion + ")", "XenAPI"); + Log.warn("Download it at " + this.latestVersionUrl, "XenAPI"); + Log.warn("-------------------", "XenAPI"); + } + + private boolean isUpdateAvailable() { + return this.getLatestVersion().compareTo(this.currentVersion) > 0; + } +} \ No newline at end of file diff --git a/src/es/cadox8/xenapi/utils/Log.java b/src/es/cadox8/xenapi/utils/Log.java deleted file mode 100644 index d7e24cf..0000000 --- a/src/es/cadox8/xenapi/utils/Log.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (c) 2021-2021. - * - * This file is part of XenAPI . - * - * XenAPI is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * XenAPI is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - * - * If you have any question feel free to ask at or - */ - -package es.cadox8.xenapi.utils; - -import com.diogonunes.jcdp.color.ColoredPrinter; -import com.diogonunes.jcdp.color.api.Ansi; -import lombok.Getter; -import lombok.RequiredArgsConstructor; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.Locale; - -public class Log { - - @RequiredArgsConstructor - public enum LogType { - SYSTEM("[System]"), - SUCCESS("[Success]"), - NORMAL(""), - DANGER("[Danger]"), - DEBUG("[Debug]"); - - @Getter private final String prefix; - } - - private static final ColoredPrinter debug = new ColoredPrinter.Builder(1, true).foreground(Ansi.FColor.MAGENTA).build(); - private static final ColoredPrinter danger = new ColoredPrinter.Builder(1, true).foreground(Ansi.FColor.RED).build(); - private static final ColoredPrinter normal = new ColoredPrinter.Builder(1, true).foreground(Ansi.FColor.WHITE).build(); - private static final ColoredPrinter success = new ColoredPrinter.Builder(1, true).foreground(Ansi.FColor.GREEN).build(); - private static final ColoredPrinter system = new ColoredPrinter.Builder(1, true).foreground(Ansi.FColor.CYAN).build(); - - /** - * Logs the info as Debug System - * - * @param info The object to be logged - */ - public static void system(Object info){ - log(system, LogType.SYSTEM, info); - } - - /** - * Logs the info as Debug - * - * @param info The object to be logged - */ - public static void debug(Object info){ - log(debug, LogType.DEBUG, info); - } - - /** - * Logs the info as Danger - * - * @param info The object to be logged - */ - public static void danger(Object info) { - log(danger, LogType.DANGER, info); - } - - /** - * Logs the info as Normal - * - * @param info The object to be logged - */ - public static void normal(Object info) { - log(normal, LogType.NORMAL, info); - } - - /** - * Logs the info as Success - * - * @param info The object to be logged - */ - public static void success(Object info) { - log(success, LogType.SUCCESS, info); - } - - /** - * Logs the info as the type you select - * @see LogType - * - * @param type The log type - * @param text The object to be logged - */ - private static void log(ColoredPrinter printer, LogType type, Object text){ - final String time = "[" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("HH:mm:ss", Locale.ENGLISH)) + "]"; - final String log = time + type.getPrefix() + " " + text; - printer.setTimestamping(false); - printer.println(log); - } -} diff --git a/src/es/cadox8/xenapi/utils/UrlExpander.java b/src/es/cadox8/xenapi/utils/UrlExpander.java deleted file mode 100644 index cc1d7ae..0000000 --- a/src/es/cadox8/xenapi/utils/UrlExpander.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2021. - * - * This file is part of XenAPI . - * - * XenAPI is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * XenAPI is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - * - * If you have any question feel free to ask at or - */ - -package es.cadox8.xenapi.utils; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public final class UrlExpander { - private static final Pattern NAMES_PATTERN = Pattern.compile("\\{([^/]+?)\\}"); - - public static String expandUrl(String url, String... params) { - if (url == null) return null; - if (url.indexOf('{') == -1) return url; - final Matcher matcher = NAMES_PATTERN.matcher(url); - final StringBuilder sb = new StringBuilder(); - - int variable = 0; - while (matcher.find()) { - final String variableValue = params[variable]; - final String replacement = Matcher.quoteReplacement(variableValue); - matcher.appendReplacement(sb, replacement); - variable++; - } - - matcher.appendTail(sb); - return sb.toString(); - } -} \ No newline at end of file diff --git a/src/es/cadox8/xenapi/utils/Utils.java b/src/es/cadox8/xenapi/utils/Utils.java index 61a51f4..26b46e5 100644 --- a/src/es/cadox8/xenapi/utils/Utils.java +++ b/src/es/cadox8/xenapi/utils/Utils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021. + * Copyright (c) 2021-2024 * * This file is part of XenAPI . * @@ -25,14 +25,36 @@ import java.io.InputStream; import java.nio.charset.StandardCharsets; -import java.util.Objects; import java.util.Scanner; +import java.util.regex.Matcher; +import java.util.regex.Pattern; -public class Utils { +public final class Utils { public static String toString(@NonNull InputStream in) { - try (Scanner scanner = new Scanner(in, StandardCharsets.UTF_8.name())) { + try (final Scanner scanner = new Scanner(in, StandardCharsets.UTF_8)) { return scanner.useDelimiter("\\A").next(); } } + + public static String createUrl(String api_url, final XenforoPaths baseUrl) { + return api_url + baseUrl.getPath(); + } + + public static String replaceQuery(String url, Object param) { + if (url == null) + return null; + if (url.indexOf('{') == -1) + return url; + final Matcher matcher = Pattern.compile("\\{([^/]+?)}").matcher(url); + final StringBuilder sb = new StringBuilder(); + + if (matcher.find()) { // Must find only one + final String replacement = Matcher.quoteReplacement(String.valueOf(param)); + matcher.appendReplacement(sb, replacement); + } + + matcher.appendTail(sb); + return sb.toString(); + } } diff --git a/src/es/cadox8/xenapi/utils/Version.java b/src/es/cadox8/xenapi/utils/Version.java new file mode 100644 index 0000000..a03c07a --- /dev/null +++ b/src/es/cadox8/xenapi/utils/Version.java @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.utils; + +public class Version implements Comparable { + + private final int major; + private final int minor; + private final int patch; + private final String build; + + public Version(int major, int minor, int patch) { + this(major, minor, patch, ""); + } + + public Version(int major, int minor, int patch, String build) { + this.major = major; + this.minor = minor; + this.patch = patch; + this.build = build; + } + + public static Version parse(String versionStr) { + try { + String build = ""; + if (versionStr.contains("-")) { + String[] versionAndBuild = versionStr.split("-", 2); + versionStr = versionAndBuild[0]; + build = versionAndBuild[1]; + } + + final String[] parts = versionStr.split("\\."); + int major = parts.length > 0 ? Integer.parseInt(parts[0]) : 0; + int minor = parts.length > 1 ? Integer.parseInt(parts[1]) : 0; + int patch = parts.length > 2 ? Integer.parseInt(parts[2]) : 0; + + return new Version(major, minor, patch, build); + } catch (NumberFormatException e) { + return new Version(0, 0, 0); + } + } + + public boolean isPreRelease() { + return !this.build.isEmpty() && this.build.contains("-SNAPSHOT"); + } + + @Override + public int compareTo(Version other) { + if (this.major != other.major) + return this.major - other.major; + if (this.minor != other.minor) + return this.minor - other.minor; + if (this.patch != other.patch) + return this.patch - other.patch; + + if (this.build == null && other.build != null) + return 1; + if (this.build != null && other.build == null) + return -1; + if (this.build == null) + return 0; + + String[] thisParts = this.build.split("-", 2); + String[] otherParts = other.build.split("-", 2); + + try { + int thisNum = Integer.parseInt(thisParts[0]); + int otherNum = Integer.parseInt(otherParts[0]); + if (thisNum != otherNum) + return thisNum - otherNum; + } catch (NumberFormatException ignored) { + } + + return this.build.compareToIgnoreCase(other.build); + } + + + @Override + public String toString() { + return major + "." + minor + "." + patch + (this.build.isEmpty() ? "" : "-" + build); + } +} diff --git a/src/es/cadox8/xenapi/utils/XenAPIExperimental.java b/src/es/cadox8/xenapi/utils/XenAPIExperimental.java new file mode 100644 index 0000000..6562ad2 --- /dev/null +++ b/src/es/cadox8/xenapi/utils/XenAPIExperimental.java @@ -0,0 +1,26 @@ +package es.cadox8.xenapi.utils; + +import org.apache.hc.core5.annotation.Internal; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import static java.lang.annotation.ElementType.*; + +@Documented +@Retention(RetentionPolicy.RUNTIME) +@Target({CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, MODULE, PARAMETER, TYPE}) +@Internal +public @interface XenAPIExperimental { + Status value() default Status.UNTESTED; + + @Internal + enum Status { + UNTESTED, + PROVISIONAL, + NEEDS_REFACTOR, + TO_BE_DONE + } +} diff --git a/src/es/cadox8/xenapi/utils/XenNameValuePair.java b/src/es/cadox8/xenapi/utils/XenNameValuePair.java new file mode 100644 index 0000000..a3b94aa --- /dev/null +++ b/src/es/cadox8/xenapi/utils/XenNameValuePair.java @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.utils; + +import lombok.Data; +import org.apache.hc.core5.annotation.Contract; +import org.apache.hc.core5.annotation.ThreadingBehavior; +import org.apache.hc.core5.http.message.BasicNameValuePair; + +import java.io.Serializable; + +@Contract(threading = ThreadingBehavior.IMMUTABLE) +@Data +public class XenNameValuePair implements Serializable { + private static final long serialVersionUID = -6437804749411518984L; + + private final String name; + private final Object value; + + public BasicNameValuePair generate() { + return new BasicNameValuePair(name, String.valueOf(value)); + } +} diff --git a/src/es/cadox8/xenapi/utils/XenforoPaths.java b/src/es/cadox8/xenapi/utils/XenforoPaths.java new file mode 100644 index 0000000..12f2ca6 --- /dev/null +++ b/src/es/cadox8/xenapi/utils/XenforoPaths.java @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2024-2025 + * + * This file is part of XenAPI . + * + * XenAPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * XenAPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * If you have any question feel free to ask at or + */ + +package es.cadox8.xenapi.utils; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor +@Getter +public enum XenforoPaths { + ALERTS("/alerts"), + ALERT("/alerts/{id}"), + ALERTS_MARK("/alerts/mark-all"), + ALERT_MARK("/alerts/{id}/mark"), + ATTACHMENTS("/attachments"), + ATTACHMENTS_NEW_KEY("/attachments/new-key"), + AUTH("/auth"), + AUTH_SESSION("/auth/from-session"), + LOGIN_TOKEN("/auth/login-token"), + CONVERSATION_MSG("/conversation-messages"), + CONVERSATION_MSG_GET("/conversation-messages/{id}"), + CONVERSATION_MSG_REACT("/conversation-messages/{id}/react"), + CONVERSATIONS("/conversations"), + CONVERSATIONS_ID("/conversations/{id}"), + CONVERSATIONS_INVITE("/conversations/{id}/invite"), + CONVERSATIONS_MARK_READ("/conversations/{id}/mark-read"), + CONVERSATIONS_MARK_UNREAD("/conversations/{id}/mark-unread"), + CONVERSATIONS_MESSAGES("/conversations/{id}/messages"), + CONVERSATIONS_STAR("/conversations/{id}/star"), + FORUMS("/forums/{id}"), + FORUMS_MARK_READ("/forums/{id}/mark-read"), + FORUMS_THREADS("/forums/{id}/threads"), + INDEX("/index"), + ME("/me"), + ME_AVATAR("/me/avatar"), + ME_EMAIL("/me/email"), + ME_PASSWORD("/me/password"), + NODES("/nodes"), + NODES_FLAT("/nodes/flattened"), + NODES_ACTIONS("/nodes/{id}"), + GET_USERS("/users"), + GET_USERS_EMAIL("/users/find-email"), + GET_USERS_NAME("/users/find-name"), + USERS_ID("/users/{id}"), + USER_AVATAR("/users/{id}/avatar"), + PROFILE_POSTS("/users/{id}/profile-posts"), + + POSTS("/posts"), + POSTS_GET("/posts/{id}"), + POST_MARK_SOLUTION("/posts/{id}/mark-solution"), + POST_REACT("/posts/{id}/react"), + POST_VOTE("/posts/{id}/vote"), + + PROFILE_POST("/profile-posts"), + PROFILE_POST_ID("/profile-posts/{id}"), + PROFILE_POST_ID_COMMENTS("/profile-posts/{id}"), + PROFILE_POST_COMMENTS("/profile-post-comments"), + PROFILE_POST_COMMENTS_ID("/profile-post-comments/{id}"), + PROFILE_POST_COMMENTS_REACT("/profile-post-comments/{id}/react"), + + STATS("/stats"), + + SEARCH("/search"), + SEARCH_MEMBER("/search/member"), + SEARCH_ID("/search/{id}"), + SEARCH_ID_OLDER("/search/{id}/older"), + SEARCH_FORUMS("/search-forums/{id}"), + SEARCH_FORUMS_THREADS("/search-forums/{id}/threads"); + + private final String path; +} diff --git a/target/XenAPI-0.1.0-SNAPSHOT--.jar b/target/XenAPI-0.1.0-SNAPSHOT--.jar deleted file mode 100644 index 4bf6556..0000000 Binary files a/target/XenAPI-0.1.0-SNAPSHOT--.jar and /dev/null differ diff --git a/target/XenAPI-0.1.0-SNAPSHOT--.jar.md5 b/target/XenAPI-0.1.0-SNAPSHOT--.jar.md5 deleted file mode 100644 index addac38..0000000 --- a/target/XenAPI-0.1.0-SNAPSHOT--.jar.md5 +++ /dev/null @@ -1 +0,0 @@ -6838594a2219d54288f3bcab7c241fe6 \ No newline at end of file diff --git a/target/XenAPI-0.1.0-SNAPSHOT--.jar.sha1 b/target/XenAPI-0.1.0-SNAPSHOT--.jar.sha1 deleted file mode 100644 index 40399bf..0000000 --- a/target/XenAPI-0.1.0-SNAPSHOT--.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -90284defcec122eec05bbaec5fe16837fc18b866 \ No newline at end of file diff --git a/target/XenAPI-0.1.0-SNAPSHOT-javadoc.jar b/target/XenAPI-0.1.0-SNAPSHOT-javadoc.jar deleted file mode 100644 index d723321..0000000 Binary files a/target/XenAPI-0.1.0-SNAPSHOT-javadoc.jar and /dev/null differ diff --git a/target/XenAPI-0.1.0-SNAPSHOT-javadoc.jar.md5 b/target/XenAPI-0.1.0-SNAPSHOT-javadoc.jar.md5 deleted file mode 100644 index 61b9178..0000000 --- a/target/XenAPI-0.1.0-SNAPSHOT-javadoc.jar.md5 +++ /dev/null @@ -1 +0,0 @@ -2fba1a95b43f6e1f1877833e253a10b7 \ No newline at end of file diff --git a/target/XenAPI-0.1.0-SNAPSHOT-javadoc.jar.sha1 b/target/XenAPI-0.1.0-SNAPSHOT-javadoc.jar.sha1 deleted file mode 100644 index 74ce167..0000000 --- a/target/XenAPI-0.1.0-SNAPSHOT-javadoc.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -4e8bf56fcc69f964c5e7787e1df333c66934d24e \ No newline at end of file diff --git a/target/XenAPI-0.1.0-SNAPSHOT-sources.jar b/target/XenAPI-0.1.0-SNAPSHOT-sources.jar deleted file mode 100644 index aa1ef8f..0000000 Binary files a/target/XenAPI-0.1.0-SNAPSHOT-sources.jar and /dev/null differ diff --git a/target/XenAPI-0.1.0-SNAPSHOT-sources.jar.md5 b/target/XenAPI-0.1.0-SNAPSHOT-sources.jar.md5 deleted file mode 100644 index 1fc339d..0000000 --- a/target/XenAPI-0.1.0-SNAPSHOT-sources.jar.md5 +++ /dev/null @@ -1 +0,0 @@ -2eb3be303b2500d541bdba3c7901e442 \ No newline at end of file diff --git a/target/XenAPI-0.1.0-SNAPSHOT-sources.jar.sha1 b/target/XenAPI-0.1.0-SNAPSHOT-sources.jar.sha1 deleted file mode 100644 index fa3bd78..0000000 --- a/target/XenAPI-0.1.0-SNAPSHOT-sources.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -67691e7208d290252b2054c49482357776a4f9e2 \ No newline at end of file diff --git a/target/XenAPI-0.1.0-SNAPSHOT.jar b/target/XenAPI-0.1.0-SNAPSHOT.jar deleted file mode 100644 index 51d5f36..0000000 Binary files a/target/XenAPI-0.1.0-SNAPSHOT.jar and /dev/null differ diff --git a/target/XenAPI-0.1.0-SNAPSHOT.jar.md5 b/target/XenAPI-0.1.0-SNAPSHOT.jar.md5 deleted file mode 100644 index 35d0b4b..0000000 --- a/target/XenAPI-0.1.0-SNAPSHOT.jar.md5 +++ /dev/null @@ -1 +0,0 @@ -55fda875ed91a1c2cb22b0fc9a8eaf61 \ No newline at end of file diff --git a/target/XenAPI-0.1.0-SNAPSHOT.jar.sha1 b/target/XenAPI-0.1.0-SNAPSHOT.jar.sha1 deleted file mode 100644 index 9cc24a9..0000000 --- a/target/XenAPI-0.1.0-SNAPSHOT.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -c69ba4b5b3215070adc5fc3c5225a27d8198a995 \ No newline at end of file diff --git a/target/apidocs/allclasses-index.html b/target/apidocs/allclasses-index.html deleted file mode 100644 index 0951994..0000000 --- a/target/apidocs/allclasses-index.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - -All Classes (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - -

      JavaScript is disabled on your browser.
      - -
      - -
      -
      -
      -

      All Classes

      -
      -
      -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      ClassDescription
      Argument 
      Launcher 
      Log 
      Log.LogType 
      NotAuthorizedException 
      NotFoundException 
      UrlExpander 
      User -
      User class
      -
      Utils 
      XenAPI 
      XenAPIBuilder 
      XenForoBadRequestException 
      XenForoClient 
      XenForoEntity 
      XenForoHttpException 
      XenForoUrl 
      -
      -
      -
      - -
      -
      - - diff --git a/target/apidocs/allpackages-index.html b/target/apidocs/allpackages-index.html deleted file mode 100644 index 895316e..0000000 --- a/target/apidocs/allpackages-index.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - -All Packages (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      All Packages

      -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Package Summary
      PackageDescription
      es.cadox8.xenapi 
      es.cadox8.xenapi.api 
      es.cadox8.xenapi.exceptions 
      es.cadox8.xenapi.net 
      es.cadox8.xenapi.utils 
      -
      -
      - -
      -
      - - diff --git a/target/apidocs/constant-values.html b/target/apidocs/constant-values.html deleted file mode 100644 index 9c904f2..0000000 --- a/target/apidocs/constant-values.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Constant Field Values (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Constant Field Values

      -
      -

      Contents

      - -
      -
      -
      -

      es.cadox8.*

      -
        -
      • -
        - - - - - - - - - - - - - - - - -
        es.cadox8.xenapi.net.XenForoUrl
        Modifier and TypeConstant FieldValue
        public static final StringGET_ME"/me"
        -
        -
      • -
      -
      -
      - -
      -
      - - diff --git a/target/apidocs/deprecated-list.html b/target/apidocs/deprecated-list.html deleted file mode 100644 index 16bbd60..0000000 --- a/target/apidocs/deprecated-list.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - -Deprecated List (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Deprecated API

      -

      Contents

      -
      -
      - -
      -
      - - diff --git a/target/apidocs/element-list b/target/apidocs/element-list deleted file mode 100644 index 29439b7..0000000 --- a/target/apidocs/element-list +++ /dev/null @@ -1,5 +0,0 @@ -es.cadox8.xenapi -es.cadox8.xenapi.api -es.cadox8.xenapi.exceptions -es.cadox8.xenapi.net -es.cadox8.xenapi.utils diff --git a/target/apidocs/es/cadox8/xenapi/Launcher.html b/target/apidocs/es/cadox8/xenapi/Launcher.html deleted file mode 100644 index 6cd62f5..0000000 --- a/target/apidocs/es/cadox8/xenapi/Launcher.html +++ /dev/null @@ -1,221 +0,0 @@ - - - - - -Launcher (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      - -
      - -

      Class Launcher

      -
      -
      java.lang.Object -
      es.cadox8.xenapi.Launcher
      -
      -
      -
      -
      public class Launcher
      -extends Object
      -
      -
      - -
      -
      -
        - -
      • -
        -

        Constructor Details

        -
          -
        • -
          -

          Launcher

          -
          public Launcher()
          -
          -
        • -
        -
        -
      • - -
      • -
        -

        Method Details

        -
          -
        • -
          -

          main

          -
          public static void main​(String[] args)
          -
          -
        • -
        -
        -
      • -
      -
      - -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/XenAPI.html b/target/apidocs/es/cadox8/xenapi/XenAPI.html deleted file mode 100644 index 0f9da69..0000000 --- a/target/apidocs/es/cadox8/xenapi/XenAPI.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - -XenAPI (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      - -
      - -

      Interface XenAPI

      -
      -
      -
      -
      All Known Implementing Classes:
      -
      XenAPIBuilder
      -
      -
      -
      public interface XenAPI
      -
      -
      -
        - -
      • -
        -

        Method Summary

        -
        -
        -
        - - - - - - - - - - - - - - - -
        Modifier and TypeMethodDescription
        Userme() -
        Gets the info about the current user (token user)
        -
        -
        -
        -
        -
      • -
      -
      -
      -
        - -
      • -
        -

        Method Details

        -
          -
        • -
          -

          me

          -
          User me()
          -
          Gets the info about the current user (token user)
          -
          -
          Returns:
          -
          The user information
          -
          See Also:
          -
          User
          -
          -
          -
        • -
        -
        -
      • -
      -
      - -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/XenAPIBuilder.html b/target/apidocs/es/cadox8/xenapi/XenAPIBuilder.html deleted file mode 100644 index 4775d6d..0000000 --- a/target/apidocs/es/cadox8/xenapi/XenAPIBuilder.html +++ /dev/null @@ -1,273 +0,0 @@ - - - - - -XenAPIBuilder (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      - -
      - -

      Class XenAPIBuilder

      -
      -
      java.lang.Object -
      es.cadox8.xenapi.XenAPIBuilder
      -
      -
      -
      -
      All Implemented Interfaces:
      -
      XenAPI
      -
      -
      -
      public class XenAPIBuilder
      -extends Object
      -implements XenAPI
      -
      -
      - -
      -
      -
        - -
      • -
        -

        Constructor Details

        -
          -
        • -
          -

          XenAPIBuilder

          -
          public XenAPIBuilder​(String url, -String token)
          -
          Constructor for the XenAPI Builder
          -
          -
          Parameters:
          -
          url - the url where XenForo is installed at
          -
          token - The token you have to access
          -
          -
          -
        • -
        • -
          -

          XenAPIBuilder

          -
          public XenAPIBuilder​(String url, -String token, -String user)
          -
          Constructor for the XenAPI Builder
          -
          -
          Parameters:
          -
          url - the url where XenForo is installed at
          -
          token - The token you have to access
          -
          user - The user of the generated token - - You need to pass the user param if the token is for superuser
          -
          -
          -
        • -
        -
        -
      • - -
      • -
        -

        Method Details

        -
          -
        • -
          -

          me

          -
          public User me()
          -
          Description copied from interface: XenAPI
          -
          Gets the info about the current user (token user)
          -
          -
          Specified by:
          -
          me in interface XenAPI
          -
          Returns:
          -
          The user information
          -
          See Also:
          -
          User
          -
          -
          -
        • -
        -
        -
      • -
      -
      - -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/api/User.html b/target/apidocs/es/cadox8/xenapi/api/User.html deleted file mode 100644 index 281fa2e..0000000 --- a/target/apidocs/es/cadox8/xenapi/api/User.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - -User (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      - -
      - -

      Class User

      -
      - -
      -
      -
      public class User
      -extends XenForoEntity
      -
      User class
      -
      -
      - -
      -
      -
        - -
      • -
        -

        Constructor Details

        -
          -
        • -
          -

          User

          -
          public User()
          -
          -
        • -
        -
        -
      • -
      -
      - -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/api/XenForoEntity.html b/target/apidocs/es/cadox8/xenapi/api/XenForoEntity.html deleted file mode 100644 index 4e3a606..0000000 --- a/target/apidocs/es/cadox8/xenapi/api/XenForoEntity.html +++ /dev/null @@ -1,275 +0,0 @@ - - - - - -XenForoEntity (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      - -
      - -

      Class XenForoEntity

      -
      -
      java.lang.Object -
      es.cadox8.xenapi.api.XenForoEntity
      -
      -
      -
      -
      Direct Known Subclasses:
      -
      User
      -
      -
      -
      public class XenForoEntity
      -extends Object
      -
      -
      - -
      -
      -
        - -
      • -
        -

        Field Details

        -
          -
        • -
          -

          xenAPIService

          -
          protected XenAPI xenAPIService
          -
          -
        • -
        -
        -
      • - -
      • -
        -

        Constructor Details

        -
          -
        • -
          -

          XenForoEntity

          -
          public XenForoEntity()
          -
          -
        • -
        -
        -
      • - -
      • -
        -

        Method Details

        -
          -
        • -
          -

          setInternalXenAPI

          -
          public <T extends XenForoEntity> T setInternalXenAPI​(XenAPI xenAPIService)
          -
          -
        • -
        • -
          -

          getXenAPIService

          -
          protected XenAPI getXenAPIService()
          -
          -
        • -
        -
        -
      • -
      -
      - -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/api/class-use/User.html b/target/apidocs/es/cadox8/xenapi/api/class-use/User.html deleted file mode 100644 index f2a0324..0000000 --- a/target/apidocs/es/cadox8/xenapi/api/class-use/User.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - -Uses of Class es.cadox8.xenapi.api.User (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Uses of Class
      es.cadox8.xenapi.api.User

      -
      -
      - - - - - - - - - - - - - - -
      Packages that use User
      PackageDescription
      es.cadox8.xenapi 
      -
      -
      -
        -
      • -
        -

        Uses of User in es.cadox8.xenapi

        -
        - - - - - - - - - - - - - - - - - - - - - -
        Methods in es.cadox8.xenapi that return User
        Modifier and TypeMethodDescription
        UserXenAPI.me() -
        Gets the info about the current user (token user)
        -
        UserXenAPIBuilder.me() 
        -
        -
        -
      • -
      -
      -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/api/class-use/XenForoEntity.html b/target/apidocs/es/cadox8/xenapi/api/class-use/XenForoEntity.html deleted file mode 100644 index 84e9652..0000000 --- a/target/apidocs/es/cadox8/xenapi/api/class-use/XenForoEntity.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - -Uses of Class es.cadox8.xenapi.api.XenForoEntity (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Uses of Class
      es.cadox8.xenapi.api.XenForoEntity

      -
      -
      - - - - - - - - - - - - - - -
      Packages that use XenForoEntity
      PackageDescription
      es.cadox8.xenapi.api 
      -
      -
      - -
      -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/api/package-summary.html b/target/apidocs/es/cadox8/xenapi/api/package-summary.html deleted file mode 100644 index 5e7b9ff..0000000 --- a/target/apidocs/es/cadox8/xenapi/api/package-summary.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - -es.cadox8.xenapi.api (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Package es.cadox8.xenapi.api

      -
      -
      -
        -
      • -
        - - - - - - - - - - - - - - - - - - -
        Class Summary
        ClassDescription
        User -
        User class
        -
        XenForoEntity 
        -
        -
      • -
      -
      -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/api/package-tree.html b/target/apidocs/es/cadox8/xenapi/api/package-tree.html deleted file mode 100644 index a080019..0000000 --- a/target/apidocs/es/cadox8/xenapi/api/package-tree.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - -es.cadox8.xenapi.api Class Hierarchy (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Hierarchy For Package es.cadox8.xenapi.api

      -Package Hierarchies: - -
      -
      -

      Class Hierarchy

      - -
      -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/api/package-use.html b/target/apidocs/es/cadox8/xenapi/api/package-use.html deleted file mode 100644 index 24923b4..0000000 --- a/target/apidocs/es/cadox8/xenapi/api/package-use.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - -Uses of Package es.cadox8.xenapi.api (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Uses of Package
      es.cadox8.xenapi.api

      -
      -
      - - - - - - - - - - - - - - - - - - -
      Packages that use es.cadox8.xenapi.api
      PackageDescription
      es.cadox8.xenapi 
      es.cadox8.xenapi.api 
      -
      -
      - -
      -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/class-use/Launcher.html b/target/apidocs/es/cadox8/xenapi/class-use/Launcher.html deleted file mode 100644 index 6d0bd8a..0000000 --- a/target/apidocs/es/cadox8/xenapi/class-use/Launcher.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Uses of Class es.cadox8.xenapi.Launcher (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Uses of Class
      es.cadox8.xenapi.Launcher

      -
      -No usage of es.cadox8.xenapi.Launcher
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/class-use/XenAPI.html b/target/apidocs/es/cadox8/xenapi/class-use/XenAPI.html deleted file mode 100644 index 89f1080..0000000 --- a/target/apidocs/es/cadox8/xenapi/class-use/XenAPI.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - -Uses of Interface es.cadox8.xenapi.XenAPI (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Uses of Interface
      es.cadox8.xenapi.XenAPI

      -
      -
      - - - - - - - - - - - - - - - - - - -
      Packages that use XenAPI
      PackageDescription
      es.cadox8.xenapi 
      es.cadox8.xenapi.api 
      -
      -
      - -
      -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/class-use/XenAPIBuilder.html b/target/apidocs/es/cadox8/xenapi/class-use/XenAPIBuilder.html deleted file mode 100644 index 50beafe..0000000 --- a/target/apidocs/es/cadox8/xenapi/class-use/XenAPIBuilder.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Uses of Class es.cadox8.xenapi.XenAPIBuilder (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Uses of Class
      es.cadox8.xenapi.XenAPIBuilder

      -
      -No usage of es.cadox8.xenapi.XenAPIBuilder
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/exceptions/NotAuthorizedException.html b/target/apidocs/es/cadox8/xenapi/exceptions/NotAuthorizedException.html deleted file mode 100644 index 5f21ffa..0000000 --- a/target/apidocs/es/cadox8/xenapi/exceptions/NotAuthorizedException.html +++ /dev/null @@ -1,221 +0,0 @@ - - - - - -NotAuthorizedException (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      - -
      - -

      Class NotAuthorizedException

      -
      - -
      -
      -
      All Implemented Interfaces:
      -
      Serializable
      -
      -
      -
      public class NotAuthorizedException
      -extends XenForoBadRequestException
      -
      -
      See Also:
      -
      Serialized Form
      -
      -
      -
      - -
      -
      -
        - -
      • -
        -

        Constructor Details

        -
          -
        • -
          -

          NotAuthorizedException

          -
          public NotAuthorizedException​(String message)
          -
          -
        • -
        • -
          -

          NotAuthorizedException

          -
          public NotAuthorizedException()
          -
          -
        • -
        • -
          -

          NotAuthorizedException

          -
          public NotAuthorizedException​(String response, -Throwable cause)
          -
          -
        • -
        -
        -
      • -
      -
      - -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/exceptions/NotFoundException.html b/target/apidocs/es/cadox8/xenapi/exceptions/NotFoundException.html deleted file mode 100644 index 3f5869b..0000000 --- a/target/apidocs/es/cadox8/xenapi/exceptions/NotFoundException.html +++ /dev/null @@ -1,211 +0,0 @@ - - - - - -NotFoundException (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      - -
      - -

      Class NotFoundException

      -
      - -
      -
      -
      All Implemented Interfaces:
      -
      Serializable
      -
      -
      -
      public class NotFoundException
      -extends XenForoBadRequestException
      -
      -
      See Also:
      -
      Serialized Form
      -
      -
      -
      - -
      -
      -
        - -
      • -
        -

        Constructor Details

        -
          -
        • -
          -

          NotFoundException

          -
          public NotFoundException​(String message, -Throwable cause)
          -
          -
        • -
        • -
          -

          NotFoundException

          -
          public NotFoundException​(String message)
          -
          -
        • -
        -
        -
      • -
      -
      - -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/exceptions/XenForoBadRequestException.html b/target/apidocs/es/cadox8/xenapi/exceptions/XenForoBadRequestException.html deleted file mode 100644 index e8eb51c..0000000 --- a/target/apidocs/es/cadox8/xenapi/exceptions/XenForoBadRequestException.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - -XenForoBadRequestException (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      - -
      - -

      Class XenForoBadRequestException

      -
      -
      java.lang.Object -
      java.lang.Throwable -
      java.lang.Exception -
      java.lang.RuntimeException -
      es.cadox8.xenapi.exceptions.XenForoBadRequestException
      -
      -
      -
      -
      -
      -
      -
      All Implemented Interfaces:
      -
      Serializable
      -
      -
      -
      Direct Known Subclasses:
      -
      NotAuthorizedException, NotFoundException
      -
      -
      -
      public class XenForoBadRequestException
      -extends RuntimeException
      -
      -
      See Also:
      -
      Serialized Form
      -
      -
      -
      - -
      -
      -
        - -
      • -
        -

        Constructor Details

        -
          -
        • -
          -

          XenForoBadRequestException

          -
          public XenForoBadRequestException​(String message, -Throwable cause)
          -
          -
        • -
        • -
          -

          XenForoBadRequestException

          -
          public XenForoBadRequestException​(String message)
          -
          -
        • -
        • -
          -

          XenForoBadRequestException

          -
          public XenForoBadRequestException​(Throwable cause)
          -
          -
        • -
        -
        -
      • -
      -
      - -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/exceptions/XenForoHttpException.html b/target/apidocs/es/cadox8/xenapi/exceptions/XenForoHttpException.html deleted file mode 100644 index 12d1fe7..0000000 --- a/target/apidocs/es/cadox8/xenapi/exceptions/XenForoHttpException.html +++ /dev/null @@ -1,245 +0,0 @@ - - - - - -XenForoHttpException (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      - -
      - -

      Class XenForoHttpException

      -
      -
      java.lang.Object -
      java.lang.Throwable -
      java.lang.Exception -
      java.lang.RuntimeException -
      es.cadox8.xenapi.exceptions.XenForoHttpException
      -
      -
      -
      -
      -
      -
      -
      All Implemented Interfaces:
      -
      Serializable
      -
      -
      -
      public class XenForoHttpException
      -extends RuntimeException
      -
      -
      See Also:
      -
      Serialized Form
      -
      -
      -
      - -
      -
      -
        - -
      • -
        -

        Constructor Details

        -
          -
        • -
          -

          XenForoHttpException

          -
          public XenForoHttpException()
          -
          -
        • -
        • -
          -

          XenForoHttpException

          -
          public XenForoHttpException​(String message)
          -
          -
        • -
        • -
          -

          XenForoHttpException

          -
          public XenForoHttpException​(String message, -Throwable cause)
          -
          -
        • -
        • -
          -

          XenForoHttpException

          -
          public XenForoHttpException​(Throwable cause)
          -
          -
        • -
        • -
          -

          XenForoHttpException

          -
          public XenForoHttpException​(String message, -Throwable cause, -boolean enableSuppression, -boolean writableStackTrace)
          -
          -
        • -
        -
        -
      • -
      -
      - -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/exceptions/class-use/NotAuthorizedException.html b/target/apidocs/es/cadox8/xenapi/exceptions/class-use/NotAuthorizedException.html deleted file mode 100644 index 1615b5f..0000000 --- a/target/apidocs/es/cadox8/xenapi/exceptions/class-use/NotAuthorizedException.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Uses of Class es.cadox8.xenapi.exceptions.NotAuthorizedException (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Uses of Class
      es.cadox8.xenapi.exceptions.NotAuthorizedException

      -
      -No usage of es.cadox8.xenapi.exceptions.NotAuthorizedException
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/exceptions/class-use/NotFoundException.html b/target/apidocs/es/cadox8/xenapi/exceptions/class-use/NotFoundException.html deleted file mode 100644 index 0b122a3..0000000 --- a/target/apidocs/es/cadox8/xenapi/exceptions/class-use/NotFoundException.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Uses of Class es.cadox8.xenapi.exceptions.NotFoundException (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Uses of Class
      es.cadox8.xenapi.exceptions.NotFoundException

      -
      -No usage of es.cadox8.xenapi.exceptions.NotFoundException
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/exceptions/class-use/XenForoBadRequestException.html b/target/apidocs/es/cadox8/xenapi/exceptions/class-use/XenForoBadRequestException.html deleted file mode 100644 index a7b06ee..0000000 --- a/target/apidocs/es/cadox8/xenapi/exceptions/class-use/XenForoBadRequestException.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - -Uses of Class es.cadox8.xenapi.exceptions.XenForoBadRequestException (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Uses of Class
      es.cadox8.xenapi.exceptions.XenForoBadRequestException

      -
      -
      - - - - - - - - - - - - - - -
      Packages that use XenForoBadRequestException
      PackageDescription
      es.cadox8.xenapi.exceptions 
      -
      -
      - -
      -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/exceptions/class-use/XenForoHttpException.html b/target/apidocs/es/cadox8/xenapi/exceptions/class-use/XenForoHttpException.html deleted file mode 100644 index 1aaf25d..0000000 --- a/target/apidocs/es/cadox8/xenapi/exceptions/class-use/XenForoHttpException.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Uses of Class es.cadox8.xenapi.exceptions.XenForoHttpException (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Uses of Class
      es.cadox8.xenapi.exceptions.XenForoHttpException

      -
      -No usage of es.cadox8.xenapi.exceptions.XenForoHttpException
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/exceptions/package-summary.html b/target/apidocs/es/cadox8/xenapi/exceptions/package-summary.html deleted file mode 100644 index 1d34535..0000000 --- a/target/apidocs/es/cadox8/xenapi/exceptions/package-summary.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - -es.cadox8.xenapi.exceptions (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Package es.cadox8.xenapi.exceptions

      -
      -
      - -
      -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/exceptions/package-tree.html b/target/apidocs/es/cadox8/xenapi/exceptions/package-tree.html deleted file mode 100644 index 8808bb5..0000000 --- a/target/apidocs/es/cadox8/xenapi/exceptions/package-tree.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -es.cadox8.xenapi.exceptions Class Hierarchy (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Hierarchy For Package es.cadox8.xenapi.exceptions

      -Package Hierarchies: - -
      -
      -

      Class Hierarchy

      - -
      -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/exceptions/package-use.html b/target/apidocs/es/cadox8/xenapi/exceptions/package-use.html deleted file mode 100644 index 552cb63..0000000 --- a/target/apidocs/es/cadox8/xenapi/exceptions/package-use.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - -Uses of Package es.cadox8.xenapi.exceptions (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Uses of Package
      es.cadox8.xenapi.exceptions

      -
      -
      - - - - - - - - - - - - - - -
      Packages that use es.cadox8.xenapi.exceptions
      PackageDescription
      es.cadox8.xenapi.exceptions 
      -
      -
      - -
      -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/net/UrlExpander.html b/target/apidocs/es/cadox8/xenapi/net/UrlExpander.html deleted file mode 100644 index c39a36c..0000000 --- a/target/apidocs/es/cadox8/xenapi/net/UrlExpander.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - -UrlExpander (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      - -
      - -

      Class UrlExpander

      -
      -
      java.lang.Object -
      es.cadox8.xenapi.net.UrlExpander
      -
      -
      -
      -
      public final class UrlExpander
      -extends Object
      -
      -
      - -
      -
      -
        - -
      • -
        -

        Constructor Details

        -
          -
        • -
          -

          UrlExpander

          -
          public UrlExpander()
          -
          -
        • -
        -
        -
      • - -
      • -
        -

        Method Details

        -
          -
        • -
          -

          expandUrl

          -
          public static String expandUrl​(String url, -String... params)
          -
          -
        • -
        -
        -
      • -
      -
      - -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/net/XenForoClient.html b/target/apidocs/es/cadox8/xenapi/net/XenForoClient.html deleted file mode 100644 index ad36190..0000000 --- a/target/apidocs/es/cadox8/xenapi/net/XenForoClient.html +++ /dev/null @@ -1,317 +0,0 @@ - - - - - -XenForoClient (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      - -
      - -

      Class XenForoClient

      -
      -
      java.lang.Object -
      es.cadox8.xenapi.net.XenForoClient
      -
      -
      -
      -
      public class XenForoClient
      -extends Object
      -
      -
      - -
      -
      -
        - -
      • -
        -

        Constructor Details

        -
          -
        • -
          -

          XenForoClient

          -
          public XenForoClient​(String token)
          -
          -
        • -
        • -
          -

          XenForoClient

          -
          public XenForoClient​(String token, -String user)
          -
          -
        • -
        • -
          -

          XenForoClient

          -
          public XenForoClient​(String token, -String user, -org.apache.http.client.HttpClient httpClient)
          -
          -
        • -
        -
        -
      • - -
      • -
        -

        Method Details

        -
          -
        • -
          -

          get

          -
          public <T> T get​(String url, -Class<T> responseType, -String... params)
          -
          -
        • -
        • -
          -

          postForObject

          -
          public <T> T postForObject​(String url, -Object body, -Class<T> responseType, -String... params)
          -
          -
        • -
        • -
          -

          postFileForObject

          -
          public <T> T postFileForObject​(String url, -File file, -Class<T> objectClass, -String... params)
          -
          -
        • -
        • -
          -

          putForObject

          -
          public <T> T putForObject​(String url, -Object body, -Class<T> responseType, -String... params)
          -
          -
        • -
        • -
          -

          delete

          -
          public <T> T delete​(String url, -Class<T> responseType, -String... params)
          -
          -
        • -
        -
        -
      • -
      -
      - -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/net/XenForoUrl.html b/target/apidocs/es/cadox8/xenapi/net/XenForoUrl.html deleted file mode 100644 index 19b0ab9..0000000 --- a/target/apidocs/es/cadox8/xenapi/net/XenForoUrl.html +++ /dev/null @@ -1,264 +0,0 @@ - - - - - -XenForoUrl (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      - -
      - -

      Class XenForoUrl

      -
      -
      java.lang.Object -
      es.cadox8.xenapi.net.XenForoUrl
      -
      -
      -
      -
      public class XenForoUrl
      -extends Object
      -
      -
      - -
      -
      -
        - -
      • -
        -

        Field Details

        - -
        -
      • - -
      • -
        -

        Method Details

        -
          -
        • -
          -

          createUrl

          -
          public static XenForoUrl createUrl​(String api_url, -String baseUrl)
          -
          -
        • -
        • -
          -

          createUrlWithNoArgs

          -
          public static String createUrlWithNoArgs​(String api_url, -String baseUrl)
          -
          -
        • -
        • -
          -

          params

          -
          public XenForoUrl params​(Argument... args)
          -
          -
        • -
        • -
          -

          asString

          -
          public String asString()
          -
          -
        • -
        -
        -
      • -
      -
      - -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/net/class-use/UrlExpander.html b/target/apidocs/es/cadox8/xenapi/net/class-use/UrlExpander.html deleted file mode 100644 index 4b70e8f..0000000 --- a/target/apidocs/es/cadox8/xenapi/net/class-use/UrlExpander.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Uses of Class es.cadox8.xenapi.net.UrlExpander (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Uses of Class
      es.cadox8.xenapi.net.UrlExpander

      -
      -No usage of es.cadox8.xenapi.net.UrlExpander
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/net/class-use/XenForoClient.html b/target/apidocs/es/cadox8/xenapi/net/class-use/XenForoClient.html deleted file mode 100644 index 43c4b5f..0000000 --- a/target/apidocs/es/cadox8/xenapi/net/class-use/XenForoClient.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Uses of Class es.cadox8.xenapi.net.XenForoClient (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Uses of Class
      es.cadox8.xenapi.net.XenForoClient

      -
      -No usage of es.cadox8.xenapi.net.XenForoClient
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/net/class-use/XenForoUrl.html b/target/apidocs/es/cadox8/xenapi/net/class-use/XenForoUrl.html deleted file mode 100644 index 287e6db..0000000 --- a/target/apidocs/es/cadox8/xenapi/net/class-use/XenForoUrl.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - -Uses of Class es.cadox8.xenapi.net.XenForoUrl (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Uses of Class
      es.cadox8.xenapi.net.XenForoUrl

      -
      -
      - - - - - - - - - - - - - - -
      Packages that use XenForoUrl
      PackageDescription
      es.cadox8.xenapi.net 
      -
      -
      - -
      -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/net/package-summary.html b/target/apidocs/es/cadox8/xenapi/net/package-summary.html deleted file mode 100644 index 4e20d6d..0000000 --- a/target/apidocs/es/cadox8/xenapi/net/package-summary.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - -es.cadox8.xenapi.net (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Package es.cadox8.xenapi.net

      -
      -
      - -
      -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/net/package-tree.html b/target/apidocs/es/cadox8/xenapi/net/package-tree.html deleted file mode 100644 index 558d7b8..0000000 --- a/target/apidocs/es/cadox8/xenapi/net/package-tree.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - -es.cadox8.xenapi.net Class Hierarchy (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Hierarchy For Package es.cadox8.xenapi.net

      -Package Hierarchies: - -
      -
      -

      Class Hierarchy

      - -
      -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/net/package-use.html b/target/apidocs/es/cadox8/xenapi/net/package-use.html deleted file mode 100644 index 55d5986..0000000 --- a/target/apidocs/es/cadox8/xenapi/net/package-use.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - -Uses of Package es.cadox8.xenapi.net (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Uses of Package
      es.cadox8.xenapi.net

      -
      -
      - - - - - - - - - - - - - - -
      Packages that use es.cadox8.xenapi.net
      PackageDescription
      es.cadox8.xenapi.net 
      -
      -
      - -
      -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/package-summary.html b/target/apidocs/es/cadox8/xenapi/package-summary.html deleted file mode 100644 index a4ce3b2..0000000 --- a/target/apidocs/es/cadox8/xenapi/package-summary.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - -es.cadox8.xenapi (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Package es.cadox8.xenapi

      -
      -
      -
        -
      • -
        - - - - - - - - - - - - - - -
        Interface Summary
        InterfaceDescription
        XenAPI 
        -
        -
      • -
      • -
        - - - - - - - - - - - - - - - - - - -
        Class Summary
        ClassDescription
        Launcher 
        XenAPIBuilder 
        -
        -
      • -
      -
      -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/package-tree.html b/target/apidocs/es/cadox8/xenapi/package-tree.html deleted file mode 100644 index 35395f2..0000000 --- a/target/apidocs/es/cadox8/xenapi/package-tree.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - -es.cadox8.xenapi Class Hierarchy (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Hierarchy For Package es.cadox8.xenapi

      -Package Hierarchies: - -
      -
      -

      Class Hierarchy

      - -
      -
      -

      Interface Hierarchy

      - -
      -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/package-use.html b/target/apidocs/es/cadox8/xenapi/package-use.html deleted file mode 100644 index 5a57ec8..0000000 --- a/target/apidocs/es/cadox8/xenapi/package-use.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - -Uses of Package es.cadox8.xenapi (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Uses of Package
      es.cadox8.xenapi

      -
      -
      - - - - - - - - - - - - - - - - - - -
      Packages that use es.cadox8.xenapi
      PackageDescription
      es.cadox8.xenapi 
      es.cadox8.xenapi.api 
      -
      -
      - -
      -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/utils/Argument.html b/target/apidocs/es/cadox8/xenapi/utils/Argument.html deleted file mode 100644 index b3aaae9..0000000 --- a/target/apidocs/es/cadox8/xenapi/utils/Argument.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - -Argument (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      - -
      - -

      Class Argument

      -
      -
      java.lang.Object -
      es.cadox8.xenapi.utils.Argument
      -
      -
      -
      -
      public class Argument
      -extends Object
      -
      -
      - -
      -
      -
        - -
      • -
        -

        Constructor Details

        -
          -
        • -
          -

          Argument

          -
          public Argument()
          -
          -
        • -
        -
        -
      • -
      -
      - -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/utils/Log.LogType.html b/target/apidocs/es/cadox8/xenapi/utils/Log.LogType.html deleted file mode 100644 index 9fc80e2..0000000 --- a/target/apidocs/es/cadox8/xenapi/utils/Log.LogType.html +++ /dev/null @@ -1,318 +0,0 @@ - - - - - -Log.LogType (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      - -
      - -

      Enum Log.LogType

      -
      -
      java.lang.Object -
      java.lang.Enum<Log.LogType> -
      es.cadox8.xenapi.utils.Log.LogType
      -
      -
      -
      -
      -
      All Implemented Interfaces:
      -
      Serializable, Comparable<Log.LogType>, java.lang.constant.Constable
      -
      -
      -
      Enclosing class:
      -
      Log
      -
      -
      -
      public static enum Log.LogType
      -extends Enum<Log.LogType>
      -
      -
      - -
      -
      -
        - -
      • -
        -

        Enum Constant Details

        -
          -
        • -
          -

          SYSTEM

          -
          public static final Log.LogType SYSTEM
          -
          -
        • -
        • -
          -

          SUCCESS

          -
          public static final Log.LogType SUCCESS
          -
          -
        • -
        • -
          -

          NORMAL

          -
          public static final Log.LogType NORMAL
          -
          -
        • -
        • -
          -

          DANGER

          -
          public static final Log.LogType DANGER
          -
          -
        • -
        • -
          -

          DEBUG

          -
          public static final Log.LogType DEBUG
          -
          -
        • -
        -
        -
      • - -
      • -
        -

        Method Details

        -
          -
        • -
          -

          values

          -
          public static Log.LogType[] values()
          -
          Returns an array containing the constants of this enum type, in -the order they are declared.
          -
          -
          Returns:
          -
          an array containing the constants of this enum type, in the order they are declared
          -
          -
          -
        • -
        • -
          -

          valueOf

          -
          public static Log.LogType valueOf​(String name)
          -
          Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
          -
          -
          Parameters:
          -
          name - the name of the enum constant to be returned.
          -
          Returns:
          -
          the enum constant with the specified name
          -
          Throws:
          -
          IllegalArgumentException - if this enum type has no constant with the specified name
          -
          NullPointerException - if the argument is null
          -
          -
          -
        • -
        -
        -
      • -
      -
      - -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/utils/Log.html b/target/apidocs/es/cadox8/xenapi/utils/Log.html deleted file mode 100644 index b7a214c..0000000 --- a/target/apidocs/es/cadox8/xenapi/utils/Log.html +++ /dev/null @@ -1,325 +0,0 @@ - - - - - -Log (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      - -
      - -

      Class Log

      -
      -
      java.lang.Object -
      es.cadox8.xenapi.utils.Log
      -
      -
      -
      -
      public class Log
      -extends Object
      -
      -
      -
        - -
      • -
        -

        Nested Class Summary

        -
        - - - - - - - - - - - - - - - - -
        Nested Classes
        Modifier and TypeClassDescription
        static class Log.LogType 
        -
        -
        -
      • - -
      • -
        -

        Constructor Summary

        -
        - - - - - - - - - - - - - - -
        Constructors
        ConstructorDescription
        Log() 
        -
        -
        -
      • - -
      • -
        -

        Method Summary

        -
        -
        -
        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        Modifier and TypeMethodDescription
        static voiddanger​(Object info) -
        Logs the info as Danger
        -
        static voiddebug​(Object info) -
        Logs the info as Debug
        -
        static voidnormal​(Object info) -
        Logs the info as Normal
        -
        static voidsuccess​(Object info) -
        Logs the info as Success
        -
        static voidsystem​(Object info) -
        Logs the info as Debug System
        -
        -
        -
        -
        -

        Methods inherited from class java.lang.Object

        -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
        -
        -
      • -
      -
      -
      -
        - -
      • -
        -

        Constructor Details

        -
          -
        • -
          -

          Log

          -
          public Log()
          -
          -
        • -
        -
        -
      • - -
      • -
        -

        Method Details

        -
          -
        • -
          -

          system

          -
          public static void system​(Object info)
          -
          Logs the info as Debug System
          -
          -
          Parameters:
          -
          info - The object to be logged
          -
          -
          -
        • -
        • -
          -

          debug

          -
          public static void debug​(Object info)
          -
          Logs the info as Debug
          -
          -
          Parameters:
          -
          info - The object to be logged
          -
          -
          -
        • -
        • -
          -

          danger

          -
          public static void danger​(Object info)
          -
          Logs the info as Danger
          -
          -
          Parameters:
          -
          info - The object to be logged
          -
          -
          -
        • -
        • -
          -

          normal

          -
          public static void normal​(Object info)
          -
          Logs the info as Normal
          -
          -
          Parameters:
          -
          info - The object to be logged
          -
          -
          -
        • -
        • -
          -

          success

          -
          public static void success​(Object info)
          -
          Logs the info as Success
          -
          -
          Parameters:
          -
          info - The object to be logged
          -
          -
          -
        • -
        -
        -
      • -
      -
      - -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/utils/Utils.html b/target/apidocs/es/cadox8/xenapi/utils/Utils.html deleted file mode 100644 index dc4c49d..0000000 --- a/target/apidocs/es/cadox8/xenapi/utils/Utils.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - - -Utils (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      - -
      - -

      Class Utils

      -
      -
      java.lang.Object -
      es.cadox8.xenapi.utils.Utils
      -
      -
      -
      -
      public class Utils
      -extends Object
      -
      -
      - -
      -
      -
        - -
      • -
        -

        Constructor Details

        -
          -
        • -
          -

          Utils

          -
          public Utils()
          -
          -
        • -
        -
        -
      • - -
      • -
        -

        Method Details

        -
          -
        • -
          -

          toString

          -
          public static String toString​(@NonNull -@NonNull InputStream in)
          -
          -
        • -
        -
        -
      • -
      -
      - -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/utils/class-use/Argument.html b/target/apidocs/es/cadox8/xenapi/utils/class-use/Argument.html deleted file mode 100644 index 8ea465e..0000000 --- a/target/apidocs/es/cadox8/xenapi/utils/class-use/Argument.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - -Uses of Class es.cadox8.xenapi.utils.Argument (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Uses of Class
      es.cadox8.xenapi.utils.Argument

      -
      -
      - - - - - - - - - - - - - - -
      Packages that use Argument
      PackageDescription
      es.cadox8.xenapi.net 
      -
      -
      - -
      -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/utils/class-use/Log.LogType.html b/target/apidocs/es/cadox8/xenapi/utils/class-use/Log.LogType.html deleted file mode 100644 index 97e793f..0000000 --- a/target/apidocs/es/cadox8/xenapi/utils/class-use/Log.LogType.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - -Uses of Class es.cadox8.xenapi.utils.Log.LogType (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Uses of Class
      es.cadox8.xenapi.utils.Log.LogType

      -
      -
      - - - - - - - - - - - - - - -
      Packages that use Log.LogType
      PackageDescription
      es.cadox8.xenapi.utils 
      -
      -
      - -
      -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/utils/class-use/Log.html b/target/apidocs/es/cadox8/xenapi/utils/class-use/Log.html deleted file mode 100644 index 308a447..0000000 --- a/target/apidocs/es/cadox8/xenapi/utils/class-use/Log.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Uses of Class es.cadox8.xenapi.utils.Log (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Uses of Class
      es.cadox8.xenapi.utils.Log

      -
      -No usage of es.cadox8.xenapi.utils.Log
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/utils/class-use/Utils.html b/target/apidocs/es/cadox8/xenapi/utils/class-use/Utils.html deleted file mode 100644 index 6a6cc3b..0000000 --- a/target/apidocs/es/cadox8/xenapi/utils/class-use/Utils.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - -Uses of Class es.cadox8.xenapi.utils.Utils (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Uses of Class
      es.cadox8.xenapi.utils.Utils

      -
      -No usage of es.cadox8.xenapi.utils.Utils
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/utils/package-summary.html b/target/apidocs/es/cadox8/xenapi/utils/package-summary.html deleted file mode 100644 index ff4fed1..0000000 --- a/target/apidocs/es/cadox8/xenapi/utils/package-summary.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - -es.cadox8.xenapi.utils (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Package es.cadox8.xenapi.utils

      -
      -
      -
        -
      • -
        - - - - - - - - - - - - - - - - - - - - - - -
        Class Summary
        ClassDescription
        Argument 
        Log 
        Utils 
        -
        -
      • -
      • -
        - - - - - - - - - - - - - - -
        Enum Summary
        EnumDescription
        Log.LogType 
        -
        -
      • -
      -
      -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/utils/package-tree.html b/target/apidocs/es/cadox8/xenapi/utils/package-tree.html deleted file mode 100644 index acf53b9..0000000 --- a/target/apidocs/es/cadox8/xenapi/utils/package-tree.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - -es.cadox8.xenapi.utils Class Hierarchy (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Hierarchy For Package es.cadox8.xenapi.utils

      -Package Hierarchies: - -
      -
      -

      Class Hierarchy

      -
        -
      • java.lang.Object -
          -
        • es.cadox8.xenapi.utils.Argument
        • -
        • es.cadox8.xenapi.utils.Log
        • -
        • es.cadox8.xenapi.utils.Utils
        • -
        -
      • -
      -
      -
      -

      Enum Hierarchy

      - -
      -
      - -
      -
      - - diff --git a/target/apidocs/es/cadox8/xenapi/utils/package-use.html b/target/apidocs/es/cadox8/xenapi/utils/package-use.html deleted file mode 100644 index 0ab7dfc..0000000 --- a/target/apidocs/es/cadox8/xenapi/utils/package-use.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - -Uses of Package es.cadox8.xenapi.utils (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Uses of Package
      es.cadox8.xenapi.utils

      -
      -
      - - - - - - - - - - - - - - - - - - -
      Packages that use es.cadox8.xenapi.utils
      PackageDescription
      es.cadox8.xenapi.net 
      es.cadox8.xenapi.utils 
      -
      -
      - -
      -
      - -
      -
      - - diff --git a/target/apidocs/help-doc.html b/target/apidocs/help-doc.html deleted file mode 100644 index 7d0076c..0000000 --- a/target/apidocs/help-doc.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - -API Help (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      How This API Document Is Organized

      -
      This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
      -
      -
      -

      Overview

      -

      The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

      -
      -
      -

      Package

      -

      Each package has a page that contains a list of its classes and interfaces, with a summary for each. These pages may contain six categories:

      -
        -
      • Interfaces
      • -
      • Classes
      • -
      • Enums
      • -
      • Exceptions
      • -
      • Errors
      • -
      • Annotation Types
      • -
      -
      -
      -

      Class or Interface

      -

      Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

      -
        -
      • Class Inheritance Diagram
      • -
      • Direct Subclasses
      • -
      • All Known Subinterfaces
      • -
      • All Known Implementing Classes
      • -
      • Class or Interface Declaration
      • -
      • Class or Interface Description
      • -
      -
      -
        -
      • Nested Class Summary
      • -
      • Field Summary
      • -
      • Property Summary
      • -
      • Constructor Summary
      • -
      • Method Summary
      • -
      -
      -
        -
      • Field Details
      • -
      • Property Details
      • -
      • Constructor Details
      • -
      • Method Details
      • -
      -

      The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

      -
      -
      -

      Annotation Type

      -

      Each annotation type has its own separate page with the following sections:

      -
        -
      • Annotation Type Declaration
      • -
      • Annotation Type Description
      • -
      • Required Element Summary
      • -
      • Optional Element Summary
      • -
      • Element Details
      • -
      -
      -
      -

      Enum

      -

      Each enum has its own separate page with the following sections:

      -
        -
      • Enum Declaration
      • -
      • Enum Description
      • -
      • Enum Constant Summary
      • -
      • Enum Constant Details
      • -
      -
      -
      -

      Use

      -

      Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its "Use" page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.

      -
      -
      -

      Tree (Class Hierarchy)

      -

      There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. Classes are organized by inheritance structure starting with java.lang.Object. Interfaces do not inherit from java.lang.Object.

      -
        -
      • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
      • -
      • When viewing a particular package, class or interface page, clicking on "Tree" displays the hierarchy for only that package.
      • -
      -
      -
      -

      Deprecated API

      -

      The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to shortcomings, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.

      -
      -
      -

      Index

      -

      The Index contains an alphabetic index of all classes, interfaces, constructors, methods, and fields, as well as lists of all packages and all classes.

      -
      -
      -

      Serialized Form

      -

      Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to those who implement rather than use the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See Also" section of the class description.

      -
      -
      -

      Constant Field Values

      -

      The Constant Field Values page lists the static final fields and their values.

      -
      -
      -

      Search

      -

      You can search for definitions of modules, packages, types, fields, methods, system properties and other terms defined in the API, using some or all of the name, optionally using "camel-case" abbreviations. For example:

      -
        -
      • j.l.obj will match "java.lang.Object"
      • -
      • InpStr will match "java.io.InputStream"
      • -
      • HM.cK will match "java.util.HashMap.containsKey(Object)"
      • -
      -

      Refer to the Javadoc Search Specification for a full description of search features.

      -
      -
      -This help file applies to API documentation generated by the standard doclet.
      - -
      -
      - - diff --git a/target/apidocs/index-all.html b/target/apidocs/index-all.html deleted file mode 100644 index 964c676..0000000 --- a/target/apidocs/index-all.html +++ /dev/null @@ -1,301 +0,0 @@ - - - - - -Index (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Index

      -
      -A C D E G L M N P S T U V X 
      All Classes|All Packages -

      A

      -
      -
      Argument - Class in es.cadox8.xenapi.utils
      -
       
      -
      Argument() - Constructor for class es.cadox8.xenapi.utils.Argument
      -
       
      -
      asString() - Method in class es.cadox8.xenapi.net.XenForoUrl
      -
       
      -
      -

      C

      -
      -
      createUrl(String, String) - Static method in class es.cadox8.xenapi.net.XenForoUrl
      -
       
      -
      createUrlWithNoArgs(String, String) - Static method in class es.cadox8.xenapi.net.XenForoUrl
      -
       
      -
      -

      D

      -
      -
      danger(Object) - Static method in class es.cadox8.xenapi.utils.Log
      -
      -
      Logs the info as Danger
      -
      -
      DANGER - es.cadox8.xenapi.utils.Log.LogType
      -
       
      -
      debug(Object) - Static method in class es.cadox8.xenapi.utils.Log
      -
      -
      Logs the info as Debug
      -
      -
      DEBUG - es.cadox8.xenapi.utils.Log.LogType
      -
       
      -
      delete(String, Class<T>, String...) - Method in class es.cadox8.xenapi.net.XenForoClient
      -
       
      -
      -

      E

      -
      -
      es.cadox8.xenapi - package es.cadox8.xenapi
      -
       
      -
      es.cadox8.xenapi.api - package es.cadox8.xenapi.api
      -
       
      -
      es.cadox8.xenapi.exceptions - package es.cadox8.xenapi.exceptions
      -
       
      -
      es.cadox8.xenapi.net - package es.cadox8.xenapi.net
      -
       
      -
      es.cadox8.xenapi.utils - package es.cadox8.xenapi.utils
      -
       
      -
      expandUrl(String, String...) - Static method in class es.cadox8.xenapi.net.UrlExpander
      -
       
      -
      -

      G

      -
      -
      get(String, Class<T>, String...) - Method in class es.cadox8.xenapi.net.XenForoClient
      -
       
      -
      GET_ME - Static variable in class es.cadox8.xenapi.net.XenForoUrl
      -
       
      -
      getXenAPIService() - Method in class es.cadox8.xenapi.api.XenForoEntity
      -
       
      -
      -

      L

      -
      -
      Launcher - Class in es.cadox8.xenapi
      -
       
      -
      Launcher() - Constructor for class es.cadox8.xenapi.Launcher
      -
       
      -
      Log - Class in es.cadox8.xenapi.utils
      -
       
      -
      Log() - Constructor for class es.cadox8.xenapi.utils.Log
      -
       
      -
      Log.LogType - Enum in es.cadox8.xenapi.utils
      -
       
      -
      -

      M

      -
      -
      main(String[]) - Static method in class es.cadox8.xenapi.Launcher
      -
       
      -
      me() - Method in interface es.cadox8.xenapi.XenAPI
      -
      -
      Gets the info about the current user (token user)
      -
      -
      me() - Method in class es.cadox8.xenapi.XenAPIBuilder
      -
       
      -
      -

      N

      -
      -
      normal(Object) - Static method in class es.cadox8.xenapi.utils.Log
      -
      -
      Logs the info as Normal
      -
      -
      NORMAL - es.cadox8.xenapi.utils.Log.LogType
      -
       
      -
      NotAuthorizedException - Exception in es.cadox8.xenapi.exceptions
      -
       
      -
      NotAuthorizedException() - Constructor for exception es.cadox8.xenapi.exceptions.NotAuthorizedException
      -
       
      -
      NotAuthorizedException(String) - Constructor for exception es.cadox8.xenapi.exceptions.NotAuthorizedException
      -
       
      -
      NotAuthorizedException(String, Throwable) - Constructor for exception es.cadox8.xenapi.exceptions.NotAuthorizedException
      -
       
      -
      NotFoundException - Exception in es.cadox8.xenapi.exceptions
      -
       
      -
      NotFoundException(String) - Constructor for exception es.cadox8.xenapi.exceptions.NotFoundException
      -
       
      -
      NotFoundException(String, Throwable) - Constructor for exception es.cadox8.xenapi.exceptions.NotFoundException
      -
       
      -
      -

      P

      -
      -
      params(Argument...) - Method in class es.cadox8.xenapi.net.XenForoUrl
      -
       
      -
      postFileForObject(String, File, Class<T>, String...) - Method in class es.cadox8.xenapi.net.XenForoClient
      -
       
      -
      postForObject(String, Object, Class<T>, String...) - Method in class es.cadox8.xenapi.net.XenForoClient
      -
       
      -
      putForObject(String, Object, Class<T>, String...) - Method in class es.cadox8.xenapi.net.XenForoClient
      -
       
      -
      -

      S

      -
      -
      setInternalXenAPI(XenAPI) - Method in class es.cadox8.xenapi.api.XenForoEntity
      -
       
      -
      success(Object) - Static method in class es.cadox8.xenapi.utils.Log
      -
      -
      Logs the info as Success
      -
      -
      SUCCESS - es.cadox8.xenapi.utils.Log.LogType
      -
       
      -
      system(Object) - Static method in class es.cadox8.xenapi.utils.Log
      -
      -
      Logs the info as Debug System
      -
      -
      SYSTEM - es.cadox8.xenapi.utils.Log.LogType
      -
       
      -
      -

      T

      -
      -
      toString(InputStream) - Static method in class es.cadox8.xenapi.utils.Utils
      -
       
      -
      -

      U

      -
      -
      UrlExpander - Class in es.cadox8.xenapi.net
      -
       
      -
      UrlExpander() - Constructor for class es.cadox8.xenapi.net.UrlExpander
      -
       
      -
      User - Class in es.cadox8.xenapi.api
      -
      -
      User class
      -
      -
      User() - Constructor for class es.cadox8.xenapi.api.User
      -
       
      -
      Utils - Class in es.cadox8.xenapi.utils
      -
       
      -
      Utils() - Constructor for class es.cadox8.xenapi.utils.Utils
      -
       
      -
      -

      V

      -
      -
      valueOf(String) - Static method in enum es.cadox8.xenapi.utils.Log.LogType
      -
      -
      Returns the enum constant of this type with the specified name.
      -
      -
      values() - Static method in enum es.cadox8.xenapi.utils.Log.LogType
      -
      -
      Returns an array containing the constants of this enum type, in -the order they are declared.
      -
      -
      -

      X

      -
      -
      XenAPI - Interface in es.cadox8.xenapi
      -
       
      -
      XenAPIBuilder - Class in es.cadox8.xenapi
      -
       
      -
      XenAPIBuilder(String, String) - Constructor for class es.cadox8.xenapi.XenAPIBuilder
      -
      -
      Constructor for the XenAPI Builder
      -
      -
      XenAPIBuilder(String, String, String) - Constructor for class es.cadox8.xenapi.XenAPIBuilder
      -
      -
      Constructor for the XenAPI Builder
      -
      -
      xenAPIService - Variable in class es.cadox8.xenapi.api.XenForoEntity
      -
       
      -
      XenForoBadRequestException - Exception in es.cadox8.xenapi.exceptions
      -
       
      -
      XenForoBadRequestException(String) - Constructor for exception es.cadox8.xenapi.exceptions.XenForoBadRequestException
      -
       
      -
      XenForoBadRequestException(String, Throwable) - Constructor for exception es.cadox8.xenapi.exceptions.XenForoBadRequestException
      -
       
      -
      XenForoBadRequestException(Throwable) - Constructor for exception es.cadox8.xenapi.exceptions.XenForoBadRequestException
      -
       
      -
      XenForoClient - Class in es.cadox8.xenapi.net
      -
       
      -
      XenForoClient(String) - Constructor for class es.cadox8.xenapi.net.XenForoClient
      -
       
      -
      XenForoClient(String, String) - Constructor for class es.cadox8.xenapi.net.XenForoClient
      -
       
      -
      XenForoClient(String, String, HttpClient) - Constructor for class es.cadox8.xenapi.net.XenForoClient
      -
       
      -
      XenForoEntity - Class in es.cadox8.xenapi.api
      -
       
      -
      XenForoEntity() - Constructor for class es.cadox8.xenapi.api.XenForoEntity
      -
       
      -
      XenForoHttpException - Exception in es.cadox8.xenapi.exceptions
      -
       
      -
      XenForoHttpException() - Constructor for exception es.cadox8.xenapi.exceptions.XenForoHttpException
      -
       
      -
      XenForoHttpException(String) - Constructor for exception es.cadox8.xenapi.exceptions.XenForoHttpException
      -
       
      -
      XenForoHttpException(String, Throwable) - Constructor for exception es.cadox8.xenapi.exceptions.XenForoHttpException
      -
       
      -
      XenForoHttpException(String, Throwable, boolean, boolean) - Constructor for exception es.cadox8.xenapi.exceptions.XenForoHttpException
      -
       
      -
      XenForoHttpException(Throwable) - Constructor for exception es.cadox8.xenapi.exceptions.XenForoHttpException
      -
       
      -
      XenForoUrl - Class in es.cadox8.xenapi.net
      -
       
      -
      -A C D E G L M N P S T U V X 
      All Classes|All Packages
      - -
      -
      - - diff --git a/target/apidocs/index.html b/target/apidocs/index.html deleted file mode 100644 index 40edaf0..0000000 --- a/target/apidocs/index.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - -Overview (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      XenAPI 0.1.0-SNAPSHOT API

      -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Packages
      PackageDescription
      es.cadox8.xenapi 
      es.cadox8.xenapi.api 
      es.cadox8.xenapi.exceptions 
      es.cadox8.xenapi.net 
      es.cadox8.xenapi.utils 
      -
      -
      - -
      -
      - - diff --git a/target/apidocs/jquery-ui.overrides.css b/target/apidocs/jquery-ui.overrides.css deleted file mode 100644 index 1abff95..0000000 --- a/target/apidocs/jquery-ui.overrides.css +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. - * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - */ - -.ui-state-active, -.ui-widget-content .ui-state-active, -.ui-widget-header .ui-state-active, -a.ui-button:active, -.ui-button:active, -.ui-button.ui-state-active:hover { - /* Overrides the color of selection used in jQuery UI */ - background: #F8981D; -} diff --git a/target/apidocs/member-search-index.js b/target/apidocs/member-search-index.js deleted file mode 100644 index 6e1ee04..0000000 --- a/target/apidocs/member-search-index.js +++ /dev/null @@ -1 +0,0 @@ -memberSearchIndex = [{"p":"es.cadox8.xenapi.utils","c":"Argument","l":"Argument()","u":"%3Cinit%3E()"},{"p":"es.cadox8.xenapi.net","c":"XenForoUrl","l":"asString()"},{"p":"es.cadox8.xenapi.net","c":"XenForoUrl","l":"createUrl(String, String)","u":"createUrl(java.lang.String,java.lang.String)"},{"p":"es.cadox8.xenapi.net","c":"XenForoUrl","l":"createUrlWithNoArgs(String, String)","u":"createUrlWithNoArgs(java.lang.String,java.lang.String)"},{"p":"es.cadox8.xenapi.utils","c":"Log.LogType","l":"DANGER"},{"p":"es.cadox8.xenapi.utils","c":"Log","l":"danger(Object)","u":"danger(java.lang.Object)"},{"p":"es.cadox8.xenapi.utils","c":"Log.LogType","l":"DEBUG"},{"p":"es.cadox8.xenapi.utils","c":"Log","l":"debug(Object)","u":"debug(java.lang.Object)"},{"p":"es.cadox8.xenapi.net","c":"XenForoClient","l":"delete(String, Class, String...)","u":"delete(java.lang.String,java.lang.Class,java.lang.String...)"},{"p":"es.cadox8.xenapi.net","c":"UrlExpander","l":"expandUrl(String, String...)","u":"expandUrl(java.lang.String,java.lang.String...)"},{"p":"es.cadox8.xenapi.net","c":"XenForoUrl","l":"GET_ME"},{"p":"es.cadox8.xenapi.net","c":"XenForoClient","l":"get(String, Class, String...)","u":"get(java.lang.String,java.lang.Class,java.lang.String...)"},{"p":"es.cadox8.xenapi.api","c":"XenForoEntity","l":"getXenAPIService()"},{"p":"es.cadox8.xenapi","c":"Launcher","l":"Launcher()","u":"%3Cinit%3E()"},{"p":"es.cadox8.xenapi.utils","c":"Log","l":"Log()","u":"%3Cinit%3E()"},{"p":"es.cadox8.xenapi","c":"Launcher","l":"main(String[])","u":"main(java.lang.String[])"},{"p":"es.cadox8.xenapi","c":"XenAPI","l":"me()"},{"p":"es.cadox8.xenapi","c":"XenAPIBuilder","l":"me()"},{"p":"es.cadox8.xenapi.utils","c":"Log.LogType","l":"NORMAL"},{"p":"es.cadox8.xenapi.utils","c":"Log","l":"normal(Object)","u":"normal(java.lang.Object)"},{"p":"es.cadox8.xenapi.exceptions","c":"NotAuthorizedException","l":"NotAuthorizedException()","u":"%3Cinit%3E()"},{"p":"es.cadox8.xenapi.exceptions","c":"NotAuthorizedException","l":"NotAuthorizedException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"es.cadox8.xenapi.exceptions","c":"NotAuthorizedException","l":"NotAuthorizedException(String, Throwable)","u":"%3Cinit%3E(java.lang.String,java.lang.Throwable)"},{"p":"es.cadox8.xenapi.exceptions","c":"NotFoundException","l":"NotFoundException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"es.cadox8.xenapi.exceptions","c":"NotFoundException","l":"NotFoundException(String, Throwable)","u":"%3Cinit%3E(java.lang.String,java.lang.Throwable)"},{"p":"es.cadox8.xenapi.net","c":"XenForoUrl","l":"params(Argument...)","u":"params(es.cadox8.xenapi.utils.Argument...)"},{"p":"es.cadox8.xenapi.net","c":"XenForoClient","l":"postFileForObject(String, File, Class, String...)","u":"postFileForObject(java.lang.String,java.io.File,java.lang.Class,java.lang.String...)"},{"p":"es.cadox8.xenapi.net","c":"XenForoClient","l":"postForObject(String, Object, Class, String...)","u":"postForObject(java.lang.String,java.lang.Object,java.lang.Class,java.lang.String...)"},{"p":"es.cadox8.xenapi.net","c":"XenForoClient","l":"putForObject(String, Object, Class, String...)","u":"putForObject(java.lang.String,java.lang.Object,java.lang.Class,java.lang.String...)"},{"p":"es.cadox8.xenapi.api","c":"XenForoEntity","l":"setInternalXenAPI(XenAPI)","u":"setInternalXenAPI(es.cadox8.xenapi.XenAPI)"},{"p":"es.cadox8.xenapi.utils","c":"Log.LogType","l":"SUCCESS"},{"p":"es.cadox8.xenapi.utils","c":"Log","l":"success(Object)","u":"success(java.lang.Object)"},{"p":"es.cadox8.xenapi.utils","c":"Log.LogType","l":"SYSTEM"},{"p":"es.cadox8.xenapi.utils","c":"Log","l":"system(Object)","u":"system(java.lang.Object)"},{"p":"es.cadox8.xenapi.utils","c":"Utils","l":"toString(InputStream)","u":"toString(java.io.InputStream)"},{"p":"es.cadox8.xenapi.net","c":"UrlExpander","l":"UrlExpander()","u":"%3Cinit%3E()"},{"p":"es.cadox8.xenapi.api","c":"User","l":"User()","u":"%3Cinit%3E()"},{"p":"es.cadox8.xenapi.utils","c":"Utils","l":"Utils()","u":"%3Cinit%3E()"},{"p":"es.cadox8.xenapi.utils","c":"Log.LogType","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"es.cadox8.xenapi.utils","c":"Log.LogType","l":"values()"},{"p":"es.cadox8.xenapi","c":"XenAPIBuilder","l":"XenAPIBuilder(String, String)","u":"%3Cinit%3E(java.lang.String,java.lang.String)"},{"p":"es.cadox8.xenapi","c":"XenAPIBuilder","l":"XenAPIBuilder(String, String, String)","u":"%3Cinit%3E(java.lang.String,java.lang.String,java.lang.String)"},{"p":"es.cadox8.xenapi.api","c":"XenForoEntity","l":"xenAPIService"},{"p":"es.cadox8.xenapi.exceptions","c":"XenForoBadRequestException","l":"XenForoBadRequestException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"es.cadox8.xenapi.exceptions","c":"XenForoBadRequestException","l":"XenForoBadRequestException(String, Throwable)","u":"%3Cinit%3E(java.lang.String,java.lang.Throwable)"},{"p":"es.cadox8.xenapi.exceptions","c":"XenForoBadRequestException","l":"XenForoBadRequestException(Throwable)","u":"%3Cinit%3E(java.lang.Throwable)"},{"p":"es.cadox8.xenapi.net","c":"XenForoClient","l":"XenForoClient(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"es.cadox8.xenapi.net","c":"XenForoClient","l":"XenForoClient(String, String)","u":"%3Cinit%3E(java.lang.String,java.lang.String)"},{"p":"es.cadox8.xenapi.net","c":"XenForoClient","l":"XenForoClient(String, String, HttpClient)","u":"%3Cinit%3E(java.lang.String,java.lang.String,org.apache.http.client.HttpClient)"},{"p":"es.cadox8.xenapi.api","c":"XenForoEntity","l":"XenForoEntity()","u":"%3Cinit%3E()"},{"p":"es.cadox8.xenapi.exceptions","c":"XenForoHttpException","l":"XenForoHttpException()","u":"%3Cinit%3E()"},{"p":"es.cadox8.xenapi.exceptions","c":"XenForoHttpException","l":"XenForoHttpException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"es.cadox8.xenapi.exceptions","c":"XenForoHttpException","l":"XenForoHttpException(String, Throwable)","u":"%3Cinit%3E(java.lang.String,java.lang.Throwable)"},{"p":"es.cadox8.xenapi.exceptions","c":"XenForoHttpException","l":"XenForoHttpException(String, Throwable, boolean, boolean)","u":"%3Cinit%3E(java.lang.String,java.lang.Throwable,boolean,boolean)"},{"p":"es.cadox8.xenapi.exceptions","c":"XenForoHttpException","l":"XenForoHttpException(Throwable)","u":"%3Cinit%3E(java.lang.Throwable)"}];updateSearchResults(); \ No newline at end of file diff --git a/target/apidocs/module-search-index.js b/target/apidocs/module-search-index.js deleted file mode 100644 index 0d59754..0000000 --- a/target/apidocs/module-search-index.js +++ /dev/null @@ -1 +0,0 @@ -moduleSearchIndex = [];updateSearchResults(); \ No newline at end of file diff --git a/target/apidocs/overview-summary.html b/target/apidocs/overview-summary.html deleted file mode 100644 index 656d4fa..0000000 --- a/target/apidocs/overview-summary.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - -XenAPI 0.1.0-SNAPSHOT API - - - - - - - - - - -
      - -

      index.html

      -
      - - diff --git a/target/apidocs/overview-tree.html b/target/apidocs/overview-tree.html deleted file mode 100644 index 55bece3..0000000 --- a/target/apidocs/overview-tree.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - -Class Hierarchy (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
      - -
      -
      -
      -

      Hierarchy For All Packages

      -Package Hierarchies: - -
      -
      -

      Class Hierarchy

      - -
      -
      -

      Interface Hierarchy

      - -
      -
      -

      Enum Hierarchy

      - -
      -
      - -
      -
      - - diff --git a/target/apidocs/package-search-index.js b/target/apidocs/package-search-index.js deleted file mode 100644 index 56ca2f2..0000000 --- a/target/apidocs/package-search-index.js +++ /dev/null @@ -1 +0,0 @@ -packageSearchIndex = [{"l":"All Packages","u":"allpackages-index.html"},{"l":"es.cadox8.xenapi"},{"l":"es.cadox8.xenapi.api"},{"l":"es.cadox8.xenapi.exceptions"},{"l":"es.cadox8.xenapi.net"},{"l":"es.cadox8.xenapi.utils"}];updateSearchResults(); \ No newline at end of file diff --git a/target/apidocs/resources/glass.png b/target/apidocs/resources/glass.png deleted file mode 100644 index a7f591f..0000000 Binary files a/target/apidocs/resources/glass.png and /dev/null differ diff --git a/target/apidocs/resources/x.png b/target/apidocs/resources/x.png deleted file mode 100644 index 30548a7..0000000 Binary files a/target/apidocs/resources/x.png and /dev/null differ diff --git a/target/apidocs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png b/target/apidocs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png deleted file mode 100644 index 34abd18..0000000 Binary files a/target/apidocs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png and /dev/null differ diff --git a/target/apidocs/script-dir/images/ui-bg_glass_65_dadada_1x400.png b/target/apidocs/script-dir/images/ui-bg_glass_65_dadada_1x400.png deleted file mode 100644 index f058a93..0000000 Binary files a/target/apidocs/script-dir/images/ui-bg_glass_65_dadada_1x400.png and /dev/null differ diff --git a/target/apidocs/script-dir/images/ui-bg_glass_75_dadada_1x400.png b/target/apidocs/script-dir/images/ui-bg_glass_75_dadada_1x400.png deleted file mode 100644 index 2ce04c1..0000000 Binary files a/target/apidocs/script-dir/images/ui-bg_glass_75_dadada_1x400.png and /dev/null differ diff --git a/target/apidocs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png b/target/apidocs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png deleted file mode 100644 index a90afb8..0000000 Binary files a/target/apidocs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png and /dev/null differ diff --git a/target/apidocs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png b/target/apidocs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png deleted file mode 100644 index dbe091f..0000000 Binary files a/target/apidocs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png and /dev/null differ diff --git a/target/apidocs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/target/apidocs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png deleted file mode 100644 index 5dc3593..0000000 Binary files a/target/apidocs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png and /dev/null differ diff --git a/target/apidocs/script-dir/images/ui-icons_222222_256x240.png b/target/apidocs/script-dir/images/ui-icons_222222_256x240.png deleted file mode 100644 index e723e17..0000000 Binary files a/target/apidocs/script-dir/images/ui-icons_222222_256x240.png and /dev/null differ diff --git a/target/apidocs/script-dir/images/ui-icons_2e83ff_256x240.png b/target/apidocs/script-dir/images/ui-icons_2e83ff_256x240.png deleted file mode 100644 index 1f5f497..0000000 Binary files a/target/apidocs/script-dir/images/ui-icons_2e83ff_256x240.png and /dev/null differ diff --git a/target/apidocs/script-dir/images/ui-icons_454545_256x240.png b/target/apidocs/script-dir/images/ui-icons_454545_256x240.png deleted file mode 100644 index 618f5b0..0000000 Binary files a/target/apidocs/script-dir/images/ui-icons_454545_256x240.png and /dev/null differ diff --git a/target/apidocs/script-dir/images/ui-icons_888888_256x240.png b/target/apidocs/script-dir/images/ui-icons_888888_256x240.png deleted file mode 100644 index ee5e33f..0000000 Binary files a/target/apidocs/script-dir/images/ui-icons_888888_256x240.png and /dev/null differ diff --git a/target/apidocs/script-dir/images/ui-icons_cd0a0a_256x240.png b/target/apidocs/script-dir/images/ui-icons_cd0a0a_256x240.png deleted file mode 100644 index 7e8ebc1..0000000 Binary files a/target/apidocs/script-dir/images/ui-icons_cd0a0a_256x240.png and /dev/null differ diff --git a/target/apidocs/script-dir/jquery-3.5.1.min.js b/target/apidocs/script-dir/jquery-3.5.1.min.js deleted file mode 100644 index b061403..0000000 --- a/target/apidocs/script-dir/jquery-3.5.1.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
      ",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0a;a++)for(s in o[a])n=o[a][s],o[a].hasOwnProperty(s)&&void 0!==n&&(e[s]=t.isPlainObject(n)?t.isPlainObject(e[s])?t.widget.extend({},e[s],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,s){var n=s.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=i.call(arguments,1),l=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(l=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(l=i&&i.jquery?l.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):l=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new s(o,this))})),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
      ",options:{classes:{},disabled:!1,create:null},_createWidget:function(i,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=e++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),i),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var l=s.match(/^([\w:-]*)\s*(.*)$/),h=l[1]+o.eventNamespace,c=l[2];c?n.on(h,c,r):i.on(h,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,l=/top|center|bottom/,h=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
      "),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};h>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),l.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,l=n-r,h=r+e.collisionWidth-a-n;e.collisionWidth>a?l>0&&0>=h?(i=t.left+l+e.collisionWidth-a-n,t.left+=l-i):t.left=h>0&&0>=l?n:l>h?n+a-e.collisionWidth:n:l>0?t.left+=l:h>0?t.left-=h:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,l=n-r,h=r+e.collisionHeight-a-n;e.collisionHeight>a?l>0&&0>=h?(i=t.top+l+e.collisionHeight-a-n,t.top+=l-i):t.top=h>0&&0>=l?n:l>h?n+a-e.collisionHeight:n:l>0?t.top+=l:h>0?t.top-=h:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,l=n.isWindow?n.scrollLeft:n.offset.left,h=t.left-e.collisionPosition.marginLeft,c=h-l,u=h+e.collisionWidth-r-l,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-l,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,l=n.isWindow?n.scrollTop:n.offset.top,h=t.top-e.collisionPosition.marginTop,c=h-l,u=h+e.collisionHeight-r-l,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-l,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.widget("ui.menu",{version:"1.12.1",defaultElement:"
        ",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,l=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=l.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=l.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n;this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("
          ").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("
          ").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("
          ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(t("
          ").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("
          ").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete}); \ No newline at end of file diff --git a/target/apidocs/script-dir/jquery-ui.structure.min.css b/target/apidocs/script-dir/jquery-ui.structure.min.css deleted file mode 100644 index e880892..0000000 --- a/target/apidocs/script-dir/jquery-ui.structure.min.css +++ /dev/null @@ -1,5 +0,0 @@ -/*! jQuery UI - v1.12.1 - 2018-12-06 -* http://jqueryui.com -* Copyright jQuery Foundation and other contributors; Licensed MIT */ - -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0} \ No newline at end of file diff --git a/target/apidocs/script.js b/target/apidocs/script.js deleted file mode 100644 index bc21e45..0000000 --- a/target/apidocs/script.js +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved. - * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - */ - -var moduleSearchIndex; -var packageSearchIndex; -var typeSearchIndex; -var memberSearchIndex; -var tagSearchIndex; -function loadScripts(doc, tag) { - createElem(doc, tag, 'search.js'); - - createElem(doc, tag, 'module-search-index.js'); - createElem(doc, tag, 'package-search-index.js'); - createElem(doc, tag, 'type-search-index.js'); - createElem(doc, tag, 'member-search-index.js'); - createElem(doc, tag, 'tag-search-index.js'); -} - -function createElem(doc, tag, path) { - var script = doc.createElement(tag); - var scriptElement = doc.getElementsByTagName(tag)[0]; - script.src = pathtoroot + path; - scriptElement.parentNode.insertBefore(script, scriptElement); -} - -function show(type) { - count = 0; - for (var key in data) { - var row = document.getElementById(key); - if ((data[key] & type) !== 0) { - row.style.display = ''; - row.className = (count++ % 2) ? rowColor : altColor; - } - else - row.style.display = 'none'; - } - updateTabs(type); -} - -function updateTabs(type) { - var firstRow = document.getElementById(Object.keys(data)[0]); - var table = firstRow.closest('table'); - for (var value in tabs) { - var tab = document.getElementById(tabs[value][0]); - if (value == type) { - tab.className = activeTableTab; - tab.innerHTML = tabs[value][1]; - tab.setAttribute('aria-selected', true); - tab.setAttribute('tabindex',0); - table.setAttribute('aria-labelledby', tabs[value][0]); - } - else { - tab.className = tableTab; - tab.setAttribute('aria-selected', false); - tab.setAttribute('tabindex',-1); - tab.setAttribute('onclick', "show("+ value + ")"); - tab.innerHTML = tabs[value][1]; - } - } -} - -function switchTab(e) { - if (e.keyCode == 37 || e.keyCode == 38) { - $("[aria-selected=true]").prev().click().focus(); - e.preventDefault(); - } - if (e.keyCode == 39 || e.keyCode == 40) { - $("[aria-selected=true]").next().click().focus(); - e.preventDefault(); - } -} - -var updateSearchResults = function() {}; - -function indexFilesLoaded() { - return moduleSearchIndex - && packageSearchIndex - && typeSearchIndex - && memberSearchIndex - && tagSearchIndex; -} diff --git a/target/apidocs/search.js b/target/apidocs/search.js deleted file mode 100644 index 246cfd7..0000000 --- a/target/apidocs/search.js +++ /dev/null @@ -1,378 +0,0 @@ -/* - * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved. - * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - */ - -var noResult = {l: "No results found"}; -var loading = {l: "Loading search index..."}; -var catModules = "Modules"; -var catPackages = "Packages"; -var catTypes = "Types"; -var catMembers = "Members"; -var catSearchTags = "SearchTags"; -var highlight = "$&"; -var searchPattern = ""; -var RANKING_THRESHOLD = 2; -var NO_MATCH = 0xffff; -var MAX_RESULTS_PER_CATEGORY = 500; -var UNNAMED = ""; -function escapeHtml(str) { - return str.replace(//g, ">"); -} -function getHighlightedText(item, matcher) { - var escapedItem = escapeHtml(item); - return escapedItem.replace(matcher, highlight); -} -function getURLPrefix(ui) { - var urlPrefix=""; - var slash = "/"; - if (ui.item.category === catModules) { - return ui.item.l + slash; - } else if (ui.item.category === catPackages && ui.item.m) { - return ui.item.m + slash; - } else if (ui.item.category === catTypes || ui.item.category === catMembers) { - if (ui.item.m) { - urlPrefix = ui.item.m + slash; - } else { - $.each(packageSearchIndex, function(index, item) { - if (item.m && ui.item.p === item.l) { - urlPrefix = item.m + slash; - } - }); - } - return urlPrefix; - } - return urlPrefix; -} -function makeCamelCaseRegex(term) { - var pattern = ""; - var isWordToken = false; - term.replace(/,\s*/g, ", ").trim().split(/\s+/).forEach(function(w, index) { - if (index > 0) { - // whitespace between identifiers is significant - pattern += (isWordToken && /^\w/.test(w)) ? "\\s+" : "\\s*"; - } - var tokens = w.split(/(?=[A-Z,.()<>[\/])/); - for (var i = 0; i < tokens.length; i++) { - var s = tokens[i]; - if (s === "") { - continue; - } - pattern += $.ui.autocomplete.escapeRegex(s); - isWordToken = /\w$/.test(s); - if (isWordToken) { - pattern += "([a-z0-9_$<>\\[\\]]*?)"; - } - } - }); - return pattern; -} -function createMatcher(pattern, flags) { - var isCamelCase = /[A-Z]/.test(pattern); - return new RegExp(pattern, flags + (isCamelCase ? "" : "i")); -} -var watermark = 'Search'; -$(function() { - $("#search").val(''); - $("#search").prop("disabled", false); - $("#reset").prop("disabled", false); - $("#search").val(watermark).addClass('watermark'); - $("#search").blur(function() { - if ($(this).val().length == 0) { - $(this).val(watermark).addClass('watermark'); - } - }); - $("#search").on('click keydown paste', function() { - if ($(this).val() == watermark) { - $(this).val('').removeClass('watermark'); - } - }); - $("#reset").click(function() { - $("#search").val(''); - $("#search").focus(); - }); - $("#search").focus(); - $("#search")[0].setSelectionRange(0, 0); -}); -$.widget("custom.catcomplete", $.ui.autocomplete, { - _create: function() { - this._super(); - this.widget().menu("option", "items", "> :not(.ui-autocomplete-category)"); - }, - _renderMenu: function(ul, items) { - var rMenu = this; - var currentCategory = ""; - rMenu.menu.bindings = $(); - $.each(items, function(index, item) { - var li; - if (item.category && item.category !== currentCategory) { - ul.append("
        • " + item.category + "
        • "); - currentCategory = item.category; - } - li = rMenu._renderItemData(ul, item); - if (item.category) { - li.attr("aria-label", item.category + " : " + item.l); - li.attr("class", "result-item"); - } else { - li.attr("aria-label", item.l); - li.attr("class", "result-item"); - } - }); - }, - _renderItem: function(ul, item) { - var label = ""; - var matcher = createMatcher(escapeHtml(searchPattern), "g"); - if (item.category === catModules) { - label = getHighlightedText(item.l, matcher); - } else if (item.category === catPackages) { - label = getHighlightedText(item.l, matcher); - } else if (item.category === catTypes) { - label = (item.p && item.p !== UNNAMED) - ? getHighlightedText(item.p + "." + item.l, matcher) - : getHighlightedText(item.l, matcher); - } else if (item.category === catMembers) { - label = (item.p && item.p !== UNNAMED) - ? getHighlightedText(item.p + "." + item.c + "." + item.l, matcher) - : getHighlightedText(item.c + "." + item.l, matcher); - } else if (item.category === catSearchTags) { - label = getHighlightedText(item.l, matcher); - } else { - label = item.l; - } - var li = $("
        • ").appendTo(ul); - var div = $("
          ").appendTo(li); - if (item.category === catSearchTags) { - if (item.d) { - div.html(label + " (" + item.h + ")
          " - + item.d + "
          "); - } else { - div.html(label + " (" + item.h + ")"); - } - } else { - if (item.m) { - div.html(item.m + "/" + label); - } else { - div.html(label); - } - } - return li; - } -}); -function rankMatch(match, category) { - if (!match) { - return NO_MATCH; - } - var index = match.index; - var input = match.input; - var leftBoundaryMatch = 2; - var periferalMatch = 0; - var delta = 0; - // make sure match is anchored on a left word boundary - if (index === 0 || /\W/.test(input[index - 1]) || "_" === input[index - 1] || "_" === input[index]) { - leftBoundaryMatch = 0; - } else if (input[index] === input[index].toUpperCase() && !/^[A-Z0-9_$]+$/.test(input)) { - leftBoundaryMatch = 1; - } - var matchEnd = index + match[0].length; - var leftParen = input.indexOf("("); - // exclude peripheral matches - if (category !== catModules && category !== catSearchTags) { - var endOfName = leftParen > -1 ? leftParen : input.length; - var delim = category === catPackages ? "/" : "."; - if (leftParen > -1 && leftParen < index) { - periferalMatch += 2; - } else if (input.lastIndexOf(delim, endOfName) >= matchEnd) { - periferalMatch += 2; - } - } - for (var i = 1; i < match.length; i++) { - // lower ranking if parts of the name are missing - if (match[i]) - delta += match[i].length; - } - if (category === catTypes) { - // lower ranking if a type name contains unmatched camel-case parts - if (/[A-Z]/.test(input.substring(matchEnd))) - delta += 5; - if (/[A-Z]/.test(input.substring(0, index))) - delta += 5; - } - return leftBoundaryMatch + periferalMatch + (delta / 200); - -} -function doSearch(request, response) { - var result = []; - var newResults = []; - - searchPattern = makeCamelCaseRegex(request.term); - if (searchPattern === "") { - return this.close(); - } - var camelCaseMatcher = createMatcher(searchPattern, ""); - var boundaryMatcher = createMatcher("\\b" + searchPattern, ""); - - function concatResults(a1, a2) { - a2.sort(function(e1, e2) { - return e1.ranking - e2.ranking; - }); - a1 = a1.concat(a2.map(function(e) { return e.item; })); - a2.length = 0; - return a1; - } - - if (moduleSearchIndex) { - $.each(moduleSearchIndex, function(index, item) { - item.category = catModules; - var ranking = rankMatch(boundaryMatcher.exec(item.l), catModules); - if (ranking < RANKING_THRESHOLD) { - newResults.push({ ranking: ranking, item: item }); - } - return newResults.length < MAX_RESULTS_PER_CATEGORY; - }); - result = concatResults(result, newResults); - } - if (packageSearchIndex) { - $.each(packageSearchIndex, function(index, item) { - item.category = catPackages; - var name = (item.m && request.term.indexOf("/") > -1) - ? (item.m + "/" + item.l) - : item.l; - var ranking = rankMatch(boundaryMatcher.exec(name), catPackages); - if (ranking < RANKING_THRESHOLD) { - newResults.push({ ranking: ranking, item: item }); - } - return newResults.length < MAX_RESULTS_PER_CATEGORY; - }); - result = concatResults(result, newResults); - } - if (typeSearchIndex) { - $.each(typeSearchIndex, function(index, item) { - item.category = catTypes; - var name = request.term.indexOf(".") > -1 - ? item.p + "." + item.l - : item.l; - var ranking = rankMatch(camelCaseMatcher.exec(name), catTypes); - if (ranking < RANKING_THRESHOLD) { - newResults.push({ ranking: ranking, item: item }); - } - return newResults.length < MAX_RESULTS_PER_CATEGORY; - }); - result = concatResults(result, newResults); - } - if (memberSearchIndex) { - $.each(memberSearchIndex, function(index, item) { - item.category = catMembers; - var name = request.term.indexOf(".") > -1 - ? item.p + "." + item.c + "." + item.l - : item.l; - var ranking = rankMatch(camelCaseMatcher.exec(name), catMembers); - if (ranking < RANKING_THRESHOLD) { - newResults.push({ ranking: ranking, item: item }); - } - return newResults.length < MAX_RESULTS_PER_CATEGORY; - }); - result = concatResults(result, newResults); - } - if (tagSearchIndex) { - $.each(tagSearchIndex, function(index, item) { - item.category = catSearchTags; - var ranking = rankMatch(boundaryMatcher.exec(item.l), catSearchTags); - if (ranking < RANKING_THRESHOLD) { - newResults.push({ ranking: ranking, item: item }); - } - return newResults.length < MAX_RESULTS_PER_CATEGORY; - }); - result = concatResults(result, newResults); - } - if (!indexFilesLoaded()) { - updateSearchResults = function() { - doSearch(request, response); - } - result.unshift(loading); - } else { - updateSearchResults = function() {}; - } - response(result); -} -$(function() { - $("#search").catcomplete({ - minLength: 1, - delay: 300, - source: doSearch, - response: function(event, ui) { - if (!ui.content.length) { - ui.content.push(noResult); - } else { - $("#search").empty(); - } - }, - autoFocus: true, - focus: function(event, ui) { - return false; - }, - position: { - collision: "flip" - }, - select: function(event, ui) { - if (ui.item.category) { - var url = getURLPrefix(ui); - if (ui.item.category === catModules) { - url += "module-summary.html"; - } else if (ui.item.category === catPackages) { - if (ui.item.u) { - url = ui.item.u; - } else { - url += ui.item.l.replace(/\./g, '/') + "/package-summary.html"; - } - } else if (ui.item.category === catTypes) { - if (ui.item.u) { - url = ui.item.u; - } else if (ui.item.p === UNNAMED) { - url += ui.item.l + ".html"; - } else { - url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.l + ".html"; - } - } else if (ui.item.category === catMembers) { - if (ui.item.p === UNNAMED) { - url += ui.item.c + ".html" + "#"; - } else { - url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.c + ".html" + "#"; - } - if (ui.item.u) { - url += ui.item.u; - } else { - url += ui.item.l; - } - } else if (ui.item.category === catSearchTags) { - url += ui.item.u; - } - if (top !== window) { - parent.classFrame.location = pathtoroot + url; - } else { - window.location.href = pathtoroot + url; - } - $("#search").focus(); - } - } - }); -}); diff --git a/target/apidocs/serialized-form.html b/target/apidocs/serialized-form.html deleted file mode 100644 index 715ecf8..0000000 --- a/target/apidocs/serialized-form.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - -Serialized Form (XenAPI 0.1.0-SNAPSHOT API) - - - - - - - - - - - - - - -
          - -
          -
          -
          -

          Serialized Form

          -
          - -
          - -
          -
          - - diff --git a/target/apidocs/stylesheet.css b/target/apidocs/stylesheet.css deleted file mode 100644 index 79a9d97..0000000 --- a/target/apidocs/stylesheet.css +++ /dev/null @@ -1,792 +0,0 @@ -/* - * Javadoc style sheet - */ - -@import url('resources/fonts/dejavu.css'); - -/* - * Styles for individual HTML elements. - * - * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular - * HTML element throughout the page. - */ - -body { - background-color:#ffffff; - color:#353833; - font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size:14px; - margin:0; - padding:0; - height:100%; - width:100%; -} -iframe { - margin:0; - padding:0; - height:100%; - width:100%; - overflow-y:scroll; - border:none; -} -a:link, a:visited { - text-decoration:none; - color:#4A6782; -} -a[href]:hover, a[href]:focus { - text-decoration:none; - color:#bb7a2a; -} -a[name] { - color:#353833; -} -pre { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; -} -h1 { - font-size:20px; -} -h2 { - font-size:18px; -} -h3 { - font-size:16px; -} -h4 { - font-size:13px; -} -h5 { - font-size:12px; -} -h6 { - font-size:11px; -} -ul { - list-style-type:disc; -} -code, tt { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; - padding-top:4px; - margin-top:8px; - line-height:1.4em; -} -dt code { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; - padding-top:4px; -} -table tr td dt code { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; - vertical-align:top; - padding-top:4px; -} -sup { - font-size:8px; -} -button { - font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size: 14px; -} -/* - * Styles for HTML generated by javadoc. - * - * These are style classes that are used by the standard doclet to generate HTML documentation. - */ - -/* - * Styles for document title and copyright. - */ -.clear { - clear:both; - height:0px; - overflow:hidden; -} -.about-language { - float:right; - padding:0px 21px; - font-size:11px; - z-index:200; - margin-top:-9px; -} -.legal-copy { - margin-left:.5em; -} -.tab { - background-color:#0066FF; - color:#ffffff; - padding:8px; - width:5em; - font-weight:bold; -} -/* - * Styles for navigation bar. - */ -@media screen { - .flex-box { - position:fixed; - display:flex; - flex-direction:column; - height: 100%; - width: 100%; - } - .flex-header { - flex: 0 0 auto; - } - .flex-content { - flex: 1 1 auto; - overflow-y: auto; - } -} -.top-nav { - background-color:#4D7A97; - color:#FFFFFF; - float:left; - padding:0; - width:100%; - clear:right; - height:2.8em; - padding-top:10px; - overflow:hidden; - font-size:12px; -} -.bottom-nav { - margin-top:10px; - background-color:#4D7A97; - color:#FFFFFF; - float:left; - padding:0; - width:100%; - clear:right; - height:2.8em; - padding-top:10px; - overflow:hidden; - font-size:12px; -} -.sub-nav { - background-color:#dee3e9; - float:left; - width:100%; - overflow:hidden; - font-size:12px; -} -.sub-nav div { - clear:left; - float:left; - padding:0 0 5px 6px; - text-transform:uppercase; -} -.sub-nav .nav-list { - padding-top:5px; -} -ul.nav-list, ul.sub-nav-list { - float:left; - margin:0 25px 0 0; - padding:0; -} -ul.nav-list li{ - list-style:none; - float:left; - padding: 5px 6px; - text-transform:uppercase; -} -.sub-nav .nav-list-search { - float:right; - margin:0 0 0 0; - padding:5px 6px; - clear:none; -} -.nav-list-search label { - position:relative; - right:-16px; -} -ul.sub-nav-list li { - list-style:none; - float:left; - padding-top:10px; -} -.top-nav a:link, .top-nav a:active, .top-nav a:visited, .bottom-nav a:link, .bottom-nav a:active, .bottom-nav a:visited { - color:#FFFFFF; - text-decoration:none; - text-transform:uppercase; -} -.top-nav a:hover, .bottom-nav a:hover { - text-decoration:none; - color:#bb7a2a; - text-transform:uppercase; -} -.nav-bar-cell1-rev { - background-color:#F8981D; - color:#253441; - margin: auto 5px; -} -.skip-nav { - position:absolute; - top:auto; - left:-9999px; - overflow:hidden; -} -/* - * Hide navigation links and search box in print layout - */ -@media print { - ul.nav-list, div.sub-nav { - display:none; - } -} -/* - * Styles for page header and footer. - */ -.title { - color:#2c4557; - margin:10px 0; -} -.sub-title { - margin:5px 0 0 0; -} -.header ul { - margin:0 0 15px 0; - padding:0; -} -.header ul li, .footer ul li { - list-style:none; - font-size:13px; -} -/* - * Styles for headings. - */ -body.class-declaration-page .summary h2, -body.class-declaration-page .details h2, -body.class-use-page h2, -body.module-declaration-page .block-list h2 { - font-style: italic; - padding:0; - margin:15px 0; -} -body.class-declaration-page .summary h3, -body.class-declaration-page .details h3, -body.class-declaration-page .summary .inherited-list h2 { - background-color:#dee3e9; - border:1px solid #d0d9e0; - margin:0 0 6px -8px; - padding:7px 5px; -} -/* - * Styles for page layout containers. - */ -main { - clear:both; - padding:10px 20px; - position:relative; -} -dl.notes > dt { - font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size:12px; - font-weight:bold; - margin:10px 0 0 0; - color:#4E4E4E; -} -dl.notes > dd { - margin:5px 0 10px 0px; - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; -} -dl.name-value > dt { - margin-left:1px; - font-size:1.1em; - display:inline; - font-weight:bold; -} -dl.name-value > dd { - margin:0 0 0 1px; - font-size:1.1em; - display:inline; -} -/* - * Styles for lists. - */ -li.circle { - list-style:circle; -} -ul.horizontal li { - display:inline; - font-size:0.9em; -} -div.inheritance { - margin:0; - padding:0; -} -div.inheritance div.inheritance { - margin-left:2em; -} -ul.block-list, -ul.details-list, -ul.member-list, -ul.summary-list { - margin:10px 0 10px 0; - padding:0; -} -ul.block-list > li, -ul.details-list > li, -ul.member-list > li, -ul.summary-list > li { - list-style:none; - margin-bottom:15px; - line-height:1.4; -} -table tr td dl, table tr td dl dt, table tr td dl dd { - margin-top:0; - margin-bottom:1px; -} -/* - * Styles for tables. - */ -.overview-summary table, .member-summary table, .type-summary table, .use-summary table, .constants-summary table, .deprecated-summary table, -.requires-summary table, .packages-summary table, .provides-summary table, .uses-summary table, .system-properties-summary table { - width:100%; - border-spacing:0; - border-left:1px solid #EEE; - border-right:1px solid #EEE; - border-bottom:1px solid #EEE; -} -.overview-summary table, .member-summary table, .requires-summary table, .packages-summary table, -.provides-summary table, .uses-summary table, .system-properties-summary table { - padding:0px; -} -.overview-summary caption, .member-summary caption, .type-summary caption, -.use-summary caption, .constants-summary caption, .deprecated-summary caption, -.requires-summary caption, .packages-summary caption, .provides-summary caption, -.uses-summary caption, .system-properties-summary caption { - position:relative; - text-align:left; - background-repeat:no-repeat; - color:#253441; - font-weight:bold; - clear:none; - overflow:hidden; - padding:0px; - padding-top:10px; - padding-left:1px; - margin:0px; - white-space:pre; -} -.constants-summary caption a:link, .constants-summary caption a:visited, -.use-summary caption a:link, .use-summary caption a:visited { - color:#1f389c; -} -.overview-summary caption a:link, .member-summary caption a:link, .type-summary caption a:link, -.deprecated-summary caption a:link, -.requires-summary caption a:link, .packages-summary caption a:link, .provides-summary caption a:link, -.uses-summary caption a:link, -.overview-summary caption a:hover, .member-summary caption a:hover, .type-summary caption a:hover, -.use-summary caption a:hover, .constants-summary caption a:hover, .deprecated-summary caption a:hover, -.requires-summary caption a:hover, .packages-summary caption a:hover, .provides-summary caption a:hover, -.uses-summary caption a:hover, -.overview-summary caption a:active, .member-summary caption a:active, .type-summary caption a:active, -.use-summary caption a:active, .constants-summary caption a:active, .deprecated-summary caption a:active, -.requires-summary caption a:active, .packages-summary caption a:active, .provides-summary caption a:active, -.uses-summary caption a:active, -.overview-summary caption a:visited, .member-summary caption a:visited, .type-summary caption a:visited, -.deprecated-summary caption a:visited, -.requires-summary caption a:visited, .packages-summary caption a:visited, .provides-summary caption a:visited, -.uses-summary caption a:visited { - color:#FFFFFF; -} -.overview-summary caption span, .member-summary caption span, .type-summary caption span, -.use-summary caption span, .constants-summary caption span, .deprecated-summary caption span, -.requires-summary caption span, .packages-summary caption span, .provides-summary caption span, -.uses-summary caption span, .system-properties-summary caption span { - white-space:nowrap; - padding-top:5px; - padding-left:12px; - padding-right:12px; - padding-bottom:7px; - display:inline-block; - float:left; - background-color:#F8981D; - border: none; - height:16px; -} - -div.table-tabs > button { - border: none; - cursor: pointer; - padding: 5px 12px 7px 12px; - font-weight: bold; - margin-right: 3px; -} -div.table-tabs > button.active-table-tab { - background: #F8981D; - color: #253441; -} -div.table-tabs > button.table-tab { - background: #4D7A97; - color: #FFFFFF; -} - -.row-color th, -.alt-color th { - font-weight:normal; -} -.overview-summary td, .member-summary td, .type-summary td, -.use-summary td, .constants-summary td, .deprecated-summary td, -.requires-summary td, .packages-summary td, .provides-summary td, -.uses-summary td, .system-properties-summary td { - text-align:left; - padding:0px 0px 12px 10px; -} -th.col-first, th.col-second, th.col-last, th.col-constructor-name, th.col-deprecated-item-name, .use-summary th, -.constants-summary th, .packages-summary th, td.col-first, td.col-second, td.col-last, .use-summary td, -.constants-summary td, .system-properties-summary th { - vertical-align:top; - padding-right:0px; - padding-top:8px; - padding-bottom:3px; -} -th.col-first, th.col-second, th.col-last, th.col-constructor-name, th.col-deprecated-item-name, .constants-summary th, -.packages-summary th { - background:#dee3e9; - text-align:left; - padding:8px 3px 3px 7px; -} -td.col-first, th.col-first { - font-size:13px; -} -td.col-second, th.col-second, td.col-last, th.col-constructor-name, th.col-deprecated-item-name, th.col-last { - font-size:13px; -} -.constants-summary th, .packages-summary th { - font-size:13px; -} -.provides-summary th.col-first, .provides-summary th.col-last, .provides-summary td.col-first, -.provides-summary td.col-last { - white-space:normal; - font-size:13px; -} -.overview-summary td.col-first, .overview-summary th.col-first, -.requires-summary td.col-first, .requires-summary th.col-first, -.packages-summary td.col-first, .packages-summary td.col-second, .packages-summary th.col-first, .packages-summary th, -.uses-summary td.col-first, .uses-summary th.col-first, -.provides-summary td.col-first, .provides-summary th.col-first, -.member-summary td.col-first, .member-summary th.col-first, -.member-summary td.col-second, .member-summary th.col-second, .member-summary th.col-constructor-name, -.type-summary td.col-first, .type-summary th.col-first { - vertical-align:top; -} -.packages-summary th.col-last, .packages-summary td.col-last { - white-space:normal; -} -td.col-first a:link, td.col-first a:visited, -td.col-second a:link, td.col-second a:visited, -th.col-first a:link, th.col-first a:visited, -th.col-second a:link, th.col-second a:visited, -th.col-constructor-name a:link, th.col-constructor-name a:visited, -th.col-deprecated-item-name a:link, th.col-deprecated-item-name a:visited, -.constant-values-container td a:link, .constant-values-container td a:visited, -.all-classes-container td a:link, .all-classes-container td a:visited, -.all-packages-container td a:link, .all-packages-container td a:visited { - font-weight:bold; -} -.table-sub-heading-color { - background-color:#EEEEFF; -} -.alt-color, .alt-color th { - background-color:#FFFFFF; -} -.row-color, .row-color th { - background-color:#EEEEEF; -} -/* - * Styles for contents. - */ -.description pre { - margin-top:0; -} -.deprecated-content { - margin:0; - padding:10px 0; -} -div.block { - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; -} -td.col-last div { - padding-top:0px; -} -td.col-last a { - padding-bottom:3px; -} -div.member-signature { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; - margin:14px 0; - white-space: pre-wrap; -} -div.member-signature span.annotations { - white-space: pre-wrap; -} -div.member-signature span.type-parameters-long, -div.member-signature span.parameters, -div.member-signature span.exceptions { - display: inline-block; - vertical-align: top; - white-space: pre; -} -div.member-signature span.type-parameters { - white-space: normal; -} -/* - * Styles for formatting effect. - */ -.source-line-no { - color:green; - padding:0 30px 0 0; -} -h1.hidden { - visibility:hidden; - overflow:hidden; - font-size:10px; -} -.block { - display:block; - margin:0 10px 5px 0; - color:#474747; -} -.deprecated-label, .descfrm-type-label, .implementation-label, .member-name-label, .member-name-link, -.module-label-in-package, .module-label-in-type, .override-specify-label, .package-label-in-type, -.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link { - font-weight:bold; -} -.deprecation-comment, .help-footnote, .interface-name { - font-style:italic; -} -.deprecation-block { - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; - border-style:solid; - border-width:thin; - border-radius:10px; - padding:10px; - margin-bottom:10px; - margin-right:10px; - display:inline-block; -} -div.block div.deprecation-comment, div.block div.block span.emphasized-phrase, -div.block div.block span.interface-name { - font-style:normal; -} -/* - * Styles specific to HTML5 elements. - */ -main, nav, header, footer, section { - display:block; -} -/* - * Styles for javadoc search. - */ -.ui-autocomplete-category { - font-weight:bold; - font-size:15px; - padding:7px 0 7px 3px; - background-color:#4D7A97; - color:#FFFFFF; -} -.result-item { - font-size:13px; -} -.ui-autocomplete { - max-height:85%; - max-width:65%; - overflow-y:scroll; - overflow-x:scroll; - white-space:nowrap; - box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); -} -ul.ui-autocomplete { - position:fixed; - z-index:999999; -} -ul.ui-autocomplete li { - float:left; - clear:both; - width:100%; -} -.result-highlight { - font-weight:bold; -} -#search { - background-image:url('resources/glass.png'); - background-size:13px; - background-repeat:no-repeat; - background-position:2px 3px; - padding-left:20px; - position:relative; - right:-18px; - width:400px; -} -#reset { - background-color: rgb(255,255,255); - background-image:url('resources/x.png'); - background-position:center; - background-repeat:no-repeat; - background-size:12px; - border:0 none; - width:16px; - height:16px; - position:relative; - left:-4px; - top:-4px; - font-size:0px; -} -.watermark { - color:#545454; -} -.search-tag-desc-result { - font-style:italic; - font-size:11px; -} -.search-tag-holder-result { - font-style:italic; - font-size:12px; -} -.search-tag-result:target { - background-color:yellow; -} -.module-graph span { - display:none; - position:absolute; -} -.module-graph:hover span { - display:block; - margin: -100px 0 0 100px; - z-index: 1; -} -.inherited-list { - margin: 10px 0 10px 0; -} -section.description { - line-height: 1.4; -} -.summary section[class$="-summary"], .details section[class$="-details"], -.class-uses .detail, .serialized-class-details { - padding: 0px 20px 5px 10px; - border: 1px solid #ededed; - background-color: #f8f8f8; -} -.inherited-list, section[class$="-details"] .detail { - padding:0 0 5px 8px; - background-color:#ffffff; - border:none; -} -.vertical-separator { - padding: 0 5px; -} -ul.help-section-list { - margin: 0; -} -/* - * Indicator icon for external links. - */ -main a[href*="://"]::after { - content:""; - display:inline-block; - background-image:url('data:image/svg+xml; utf8, \ - \ - \ - '); - background-size:100% 100%; - width:7px; - height:7px; - margin-left:2px; - margin-bottom:4px; -} -main a[href*="://"]:hover::after, -main a[href*="://"]:focus::after { - background-image:url('data:image/svg+xml; utf8, \ - \ - \ - '); -} - -/* - * Styles for user-provided tables. - * - * borderless: - * No borders, vertical margins, styled caption. - * This style is provided for use with existing doc comments. - * In general, borderless tables should not be used for layout purposes. - * - * plain: - * Plain borders around table and cells, vertical margins, styled caption. - * Best for small tables or for complex tables for tables with cells that span - * rows and columns, when the "striped" style does not work well. - * - * striped: - * Borders around the table and vertical borders between cells, striped rows, - * vertical margins, styled caption. - * Best for tables that have a header row, and a body containing a series of simple rows. - */ - -table.borderless, -table.plain, -table.striped { - margin-top: 10px; - margin-bottom: 10px; -} -table.borderless > caption, -table.plain > caption, -table.striped > caption { - font-weight: bold; - font-size: smaller; -} -table.borderless th, table.borderless td, -table.plain th, table.plain td, -table.striped th, table.striped td { - padding: 2px 5px; -} -table.borderless, -table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th, -table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td { - border: none; -} -table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr { - background-color: transparent; -} -table.plain { - border-collapse: collapse; - border: 1px solid black; -} -table.plain > thead > tr, table.plain > tbody tr, table.plain > tr { - background-color: transparent; -} -table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th, -table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td { - border: 1px solid black; -} -table.striped { - border-collapse: collapse; - border: 1px solid black; -} -table.striped > thead { - background-color: #E3E3E3; -} -table.striped > thead > tr > th, table.striped > thead > tr > td { - border: 1px solid black; -} -table.striped > tbody > tr:nth-child(even) { - background-color: #EEE -} -table.striped > tbody > tr:nth-child(odd) { - background-color: #FFF -} -table.striped > tbody > tr > th, table.striped > tbody > tr > td { - border-left: 1px solid black; - border-right: 1px solid black; -} -table.striped > tbody > tr > th { - font-weight: normal; -} diff --git a/target/apidocs/tag-search-index.js b/target/apidocs/tag-search-index.js deleted file mode 100644 index 0367dae..0000000 --- a/target/apidocs/tag-search-index.js +++ /dev/null @@ -1 +0,0 @@ -tagSearchIndex = [];updateSearchResults(); \ No newline at end of file diff --git a/target/apidocs/type-search-index.js b/target/apidocs/type-search-index.js deleted file mode 100644 index 697a4a9..0000000 --- a/target/apidocs/type-search-index.js +++ /dev/null @@ -1 +0,0 @@ -typeSearchIndex = [{"l":"All Classes","u":"allclasses-index.html"},{"p":"es.cadox8.xenapi.utils","l":"Argument"},{"p":"es.cadox8.xenapi","l":"Launcher"},{"p":"es.cadox8.xenapi.utils","l":"Log"},{"p":"es.cadox8.xenapi.utils","l":"Log.LogType"},{"p":"es.cadox8.xenapi.exceptions","l":"NotAuthorizedException"},{"p":"es.cadox8.xenapi.exceptions","l":"NotFoundException"},{"p":"es.cadox8.xenapi.net","l":"UrlExpander"},{"p":"es.cadox8.xenapi.api","l":"User"},{"p":"es.cadox8.xenapi.utils","l":"Utils"},{"p":"es.cadox8.xenapi","l":"XenAPI"},{"p":"es.cadox8.xenapi","l":"XenAPIBuilder"},{"p":"es.cadox8.xenapi.exceptions","l":"XenForoBadRequestException"},{"p":"es.cadox8.xenapi.net","l":"XenForoClient"},{"p":"es.cadox8.xenapi.api","l":"XenForoEntity"},{"p":"es.cadox8.xenapi.exceptions","l":"XenForoHttpException"},{"p":"es.cadox8.xenapi.net","l":"XenForoUrl"}];updateSearchResults(); \ No newline at end of file diff --git a/target/classes/es/cadox8/xenapi/Launcher.class b/target/classes/es/cadox8/xenapi/Launcher.class deleted file mode 100644 index c880765..0000000 Binary files a/target/classes/es/cadox8/xenapi/Launcher.class and /dev/null differ diff --git a/target/classes/es/cadox8/xenapi/XenAPI.class b/target/classes/es/cadox8/xenapi/XenAPI.class deleted file mode 100644 index 9d2b153..0000000 Binary files a/target/classes/es/cadox8/xenapi/XenAPI.class and /dev/null differ diff --git a/target/classes/es/cadox8/xenapi/XenAPIBuilder.class b/target/classes/es/cadox8/xenapi/XenAPIBuilder.class deleted file mode 100644 index 17d5794..0000000 Binary files a/target/classes/es/cadox8/xenapi/XenAPIBuilder.class and /dev/null differ diff --git a/target/classes/es/cadox8/xenapi/api/Me.class b/target/classes/es/cadox8/xenapi/api/Me.class deleted file mode 100644 index 614fd1f..0000000 Binary files a/target/classes/es/cadox8/xenapi/api/Me.class and /dev/null differ diff --git a/target/classes/es/cadox8/xenapi/api/User.class b/target/classes/es/cadox8/xenapi/api/User.class deleted file mode 100644 index aa2f088..0000000 Binary files a/target/classes/es/cadox8/xenapi/api/User.class and /dev/null differ diff --git a/target/classes/es/cadox8/xenapi/api/XenForoEntity.class b/target/classes/es/cadox8/xenapi/api/XenForoEntity.class deleted file mode 100644 index 008b721..0000000 Binary files a/target/classes/es/cadox8/xenapi/api/XenForoEntity.class and /dev/null differ diff --git a/target/classes/es/cadox8/xenapi/api/user/AvatarUrls.class b/target/classes/es/cadox8/xenapi/api/user/AvatarUrls.class deleted file mode 100644 index 6d5ae34..0000000 Binary files a/target/classes/es/cadox8/xenapi/api/user/AvatarUrls.class and /dev/null differ diff --git a/target/classes/es/cadox8/xenapi/exceptions/NotAuthorizedException.class b/target/classes/es/cadox8/xenapi/exceptions/NotAuthorizedException.class deleted file mode 100644 index 637e48d..0000000 Binary files a/target/classes/es/cadox8/xenapi/exceptions/NotAuthorizedException.class and /dev/null differ diff --git a/target/classes/es/cadox8/xenapi/exceptions/NotFoundException.class b/target/classes/es/cadox8/xenapi/exceptions/NotFoundException.class deleted file mode 100644 index 009a47d..0000000 Binary files a/target/classes/es/cadox8/xenapi/exceptions/NotFoundException.class and /dev/null differ diff --git a/target/classes/es/cadox8/xenapi/exceptions/XenForoBadRequestException.class b/target/classes/es/cadox8/xenapi/exceptions/XenForoBadRequestException.class deleted file mode 100644 index 48bcafc..0000000 Binary files a/target/classes/es/cadox8/xenapi/exceptions/XenForoBadRequestException.class and /dev/null differ diff --git a/target/classes/es/cadox8/xenapi/exceptions/XenForoHttpException.class b/target/classes/es/cadox8/xenapi/exceptions/XenForoHttpException.class deleted file mode 100644 index 706dc91..0000000 Binary files a/target/classes/es/cadox8/xenapi/exceptions/XenForoHttpException.class and /dev/null differ diff --git a/target/classes/es/cadox8/xenapi/net/XenForoClient.class b/target/classes/es/cadox8/xenapi/net/XenForoClient.class deleted file mode 100644 index 3819f05..0000000 Binary files a/target/classes/es/cadox8/xenapi/net/XenForoClient.class and /dev/null differ diff --git a/target/classes/es/cadox8/xenapi/net/XenForoUrl.class b/target/classes/es/cadox8/xenapi/net/XenForoUrl.class deleted file mode 100644 index 2469b2c..0000000 Binary files a/target/classes/es/cadox8/xenapi/net/XenForoUrl.class and /dev/null differ diff --git a/target/classes/es/cadox8/xenapi/types/UserType.class b/target/classes/es/cadox8/xenapi/types/UserType.class deleted file mode 100644 index c7f1220..0000000 Binary files a/target/classes/es/cadox8/xenapi/types/UserType.class and /dev/null differ diff --git a/target/classes/es/cadox8/xenapi/utils/Argument.class b/target/classes/es/cadox8/xenapi/utils/Argument.class deleted file mode 100644 index 09d0907..0000000 Binary files a/target/classes/es/cadox8/xenapi/utils/Argument.class and /dev/null differ diff --git a/target/classes/es/cadox8/xenapi/utils/Log$LogType.class b/target/classes/es/cadox8/xenapi/utils/Log$LogType.class deleted file mode 100644 index dffd2c5..0000000 Binary files a/target/classes/es/cadox8/xenapi/utils/Log$LogType.class and /dev/null differ diff --git a/target/classes/es/cadox8/xenapi/utils/Log.class b/target/classes/es/cadox8/xenapi/utils/Log.class deleted file mode 100644 index 828e97e..0000000 Binary files a/target/classes/es/cadox8/xenapi/utils/Log.class and /dev/null differ diff --git a/target/classes/es/cadox8/xenapi/utils/UrlExpander.class b/target/classes/es/cadox8/xenapi/utils/UrlExpander.class deleted file mode 100644 index cd5aa9b..0000000 Binary files a/target/classes/es/cadox8/xenapi/utils/UrlExpander.class and /dev/null differ diff --git a/target/classes/es/cadox8/xenapi/utils/Utils.class b/target/classes/es/cadox8/xenapi/utils/Utils.class deleted file mode 100644 index 55c9ff3..0000000 Binary files a/target/classes/es/cadox8/xenapi/utils/Utils.class and /dev/null differ diff --git a/target/javadoc-bundle-options/javadoc-options-javadoc-resources.xml b/target/javadoc-bundle-options/javadoc-options-javadoc-resources.xml deleted file mode 100644 index 8b89c97..0000000 --- a/target/javadoc-bundle-options/javadoc-options-javadoc-resources.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - src/main/javadoc - diff --git a/target/javadoc-bundle-options/package-list b/target/javadoc-bundle-options/package-list deleted file mode 100644 index 351c186..0000000 --- a/target/javadoc-bundle-options/package-list +++ /dev/null @@ -1,217 +0,0 @@ -java.applet -java.awt -java.awt.color -java.awt.datatransfer -java.awt.dnd -java.awt.event -java.awt.font -java.awt.geom -java.awt.im -java.awt.im.spi -java.awt.image -java.awt.image.renderable -java.awt.print -java.beans -java.beans.beancontext -java.io -java.lang -java.lang.annotation -java.lang.instrument -java.lang.invoke -java.lang.management -java.lang.ref -java.lang.reflect -java.math -java.net -java.nio -java.nio.channels -java.nio.channels.spi -java.nio.charset -java.nio.charset.spi -java.nio.file -java.nio.file.attribute -java.nio.file.spi -java.rmi -java.rmi.activation -java.rmi.dgc -java.rmi.registry -java.rmi.server -java.security -java.security.acl -java.security.cert -java.security.interfaces -java.security.spec -java.sql -java.text -java.text.spi -java.time -java.time.chrono -java.time.format -java.time.temporal -java.time.zone -java.util -java.util.concurrent -java.util.concurrent.atomic -java.util.concurrent.locks -java.util.function -java.util.jar -java.util.logging -java.util.prefs -java.util.regex -java.util.spi -java.util.stream -java.util.zip -javax.accessibility -javax.activation -javax.activity -javax.annotation -javax.annotation.processing -javax.crypto -javax.crypto.interfaces -javax.crypto.spec -javax.imageio -javax.imageio.event -javax.imageio.metadata -javax.imageio.plugins.bmp -javax.imageio.plugins.jpeg -javax.imageio.spi -javax.imageio.stream -javax.jws -javax.jws.soap -javax.lang.model -javax.lang.model.element -javax.lang.model.type -javax.lang.model.util -javax.management -javax.management.loading -javax.management.modelmbean -javax.management.monitor -javax.management.openmbean -javax.management.relation -javax.management.remote -javax.management.remote.rmi -javax.management.timer -javax.naming -javax.naming.directory -javax.naming.event -javax.naming.ldap -javax.naming.spi -javax.net -javax.net.ssl -javax.print -javax.print.attribute -javax.print.attribute.standard -javax.print.event -javax.rmi -javax.rmi.CORBA -javax.rmi.ssl -javax.script -javax.security.auth -javax.security.auth.callback -javax.security.auth.kerberos -javax.security.auth.login -javax.security.auth.spi -javax.security.auth.x500 -javax.security.cert -javax.security.sasl -javax.sound.midi -javax.sound.midi.spi -javax.sound.sampled -javax.sound.sampled.spi -javax.sql -javax.sql.rowset -javax.sql.rowset.serial -javax.sql.rowset.spi -javax.swing -javax.swing.border -javax.swing.colorchooser -javax.swing.event -javax.swing.filechooser -javax.swing.plaf -javax.swing.plaf.basic -javax.swing.plaf.metal -javax.swing.plaf.multi -javax.swing.plaf.nimbus -javax.swing.plaf.synth -javax.swing.table -javax.swing.text -javax.swing.text.html -javax.swing.text.html.parser -javax.swing.text.rtf -javax.swing.tree -javax.swing.undo -javax.tools -javax.transaction -javax.transaction.xa -javax.xml -javax.xml.bind -javax.xml.bind.annotation -javax.xml.bind.annotation.adapters -javax.xml.bind.attachment -javax.xml.bind.helpers -javax.xml.bind.util -javax.xml.crypto -javax.xml.crypto.dom -javax.xml.crypto.dsig -javax.xml.crypto.dsig.dom -javax.xml.crypto.dsig.keyinfo -javax.xml.crypto.dsig.spec -javax.xml.datatype -javax.xml.namespace -javax.xml.parsers -javax.xml.soap -javax.xml.stream -javax.xml.stream.events -javax.xml.stream.util -javax.xml.transform -javax.xml.transform.dom -javax.xml.transform.sax -javax.xml.transform.stax -javax.xml.transform.stream -javax.xml.validation -javax.xml.ws -javax.xml.ws.handler -javax.xml.ws.handler.soap -javax.xml.ws.http -javax.xml.ws.soap -javax.xml.ws.spi -javax.xml.ws.spi.http -javax.xml.ws.wsaddressing -javax.xml.xpath -org.ietf.jgss -org.omg.CORBA -org.omg.CORBA.DynAnyPackage -org.omg.CORBA.ORBPackage -org.omg.CORBA.TypeCodePackage -org.omg.CORBA.portable -org.omg.CORBA_2_3 -org.omg.CORBA_2_3.portable -org.omg.CosNaming -org.omg.CosNaming.NamingContextExtPackage -org.omg.CosNaming.NamingContextPackage -org.omg.Dynamic -org.omg.DynamicAny -org.omg.DynamicAny.DynAnyFactoryPackage -org.omg.DynamicAny.DynAnyPackage -org.omg.IOP -org.omg.IOP.CodecFactoryPackage -org.omg.IOP.CodecPackage -org.omg.Messaging -org.omg.PortableInterceptor -org.omg.PortableInterceptor.ORBInitInfoPackage -org.omg.PortableServer -org.omg.PortableServer.CurrentPackage -org.omg.PortableServer.POAManagerPackage -org.omg.PortableServer.POAPackage -org.omg.PortableServer.ServantLocatorPackage -org.omg.PortableServer.portable -org.omg.SendingContext -org.omg.stub.java.rmi -org.w3c.dom -org.w3c.dom.bootstrap -org.w3c.dom.events -org.w3c.dom.ls -org.w3c.dom.views -org.xml.sax -org.xml.sax.ext -org.xml.sax.helpers diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties deleted file mode 100644 index 15c696c..0000000 --- a/target/maven-archiver/pom.properties +++ /dev/null @@ -1,4 +0,0 @@ -#Created by Apache Maven 3.6.3 -groupId=me.cadox8 -artifactId=XenAPI -version=0.1.0-SNAPSHOT diff --git a/target/maven-javadoc-plugin-stale-data.txt b/target/maven-javadoc-plugin-stale-data.txt deleted file mode 100644 index 7530831..0000000 --- a/target/maven-javadoc-plugin-stale-data.txt +++ /dev/null @@ -1,76 +0,0 @@ -@options -@argfile --classpath -'C:/Users/admin/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.13.0/jackson-core-2.13.0.jar;C:/Users/admin/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.13.0/jackson-databind-2.13.0.jar;C:/Users/admin/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.13.0/jackson-annotations-2.13.0.jar;C:/Users/admin/.m2/repository/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar;C:/Users/admin/.m2/repository/org/apache/httpcomponents/httpcore/4.4.13/httpcore-4.4.13.jar;C:/Users/admin/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar;C:/Users/admin/.m2/repository/commons-codec/commons-codec/1.11/commons-codec-1.11.jar;C:/Users/admin/.m2/repository/org/apache/httpcomponents/httpmime/4.5.13/httpmime-4.5.13.jar;C:/Users/admin/.m2/repository/com/diogonunes/JCDP/4.0.2/JCDP-4.0.2.jar;C:/Users/admin/.m2/repository/net/java/dev/jna/jna/5.5.0/jna-5.5.0.jar;C:/Users/admin/.m2/repository/net/java/dev/jna/jna-platform/5.5.0/jna-platform-5.5.0.jar;C:/Users/admin/.m2/repository/org/projectlombok/lombok/1.18.22/lombok-1.18.22.jar' --encoding -'UTF-8' --protected --source -'1.8' --sourcepath -'C:/Users/admin/Documents/proyectos/XenAPI/src' --author --bottom -'Copyright © 2021. All rights reserved.' --charset -'UTF-8' --d -'C:/Users/admin/Documents/proyectos/XenAPI/target/apidocs' --docencoding -'UTF-8' --doctitle -'XenAPI 0.1.0-SNAPSHOT API' --linkoffline -'https://docs.oracle.com/javase/8/docs/api' 'C:/Users/admin/Documents/proyectos/XenAPI/target/javadoc-bundle-options' --use --version --windowtitle -'XenAPI 0.1.0-SNAPSHOT API' -'C:/Users/admin/Documents/proyectos/XenAPI/src/es/cadox8/xenapi/api/User.java' -'C:/Users/admin/Documents/proyectos/XenAPI/src/es/cadox8/xenapi/api/XenForoEntity.java' -'C:/Users/admin/Documents/proyectos/XenAPI/src/es/cadox8/xenapi/exceptions/NotAuthorizedException.java' -'C:/Users/admin/Documents/proyectos/XenAPI/src/es/cadox8/xenapi/exceptions/NotFoundException.java' -'C:/Users/admin/Documents/proyectos/XenAPI/src/es/cadox8/xenapi/exceptions/XenForoBadRequestException.java' -'C:/Users/admin/Documents/proyectos/XenAPI/src/es/cadox8/xenapi/exceptions/XenForoHttpException.java' -'C:/Users/admin/Documents/proyectos/XenAPI/src/es/cadox8/xenapi/Launcher.java' -'C:/Users/admin/Documents/proyectos/XenAPI/src/es/cadox8/xenapi/net/UrlExpander.java' -'C:/Users/admin/Documents/proyectos/XenAPI/src/es/cadox8/xenapi/net/XenForoClient.java' -'C:/Users/admin/Documents/proyectos/XenAPI/src/es/cadox8/xenapi/net/XenForoUrl.java' -'C:/Users/admin/Documents/proyectos/XenAPI/src/es/cadox8/xenapi/utils/Argument.java' -'C:/Users/admin/Documents/proyectos/XenAPI/src/es/cadox8/xenapi/utils/Log.java' -'C:/Users/admin/Documents/proyectos/XenAPI/src/es/cadox8/xenapi/utils/Utils.java' -'C:/Users/admin/Documents/proyectos/XenAPI/src/es/cadox8/xenapi/XenAPI.java' -'C:/Users/admin/Documents/proyectos/XenAPI/src/es/cadox8/xenapi/XenAPIBuilder.java' -C:\Users\admin\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.13.0\jackson-core-2.13.0.jar = 1636038583905 -C:\Users\admin\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.13.0\jackson-databind-2.13.0.jar = 1636038584025 -C:\Users\admin\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.13.0\jackson-annotations-2.13.0.jar = 1636038583877 -C:\Users\admin\.m2\repository\org\apache\httpcomponents\httpclient\4.5.13\httpclient-4.5.13.jar = 1635967347876 -C:\Users\admin\.m2\repository\org\apache\httpcomponents\httpcore\4.4.13\httpcore-4.4.13.jar = 1635967347823 -C:\Users\admin\.m2\repository\commons-logging\commons-logging\1.2\commons-logging-1.2.jar = 1635967347534 -C:\Users\admin\.m2\repository\commons-codec\commons-codec\1.11\commons-codec-1.11.jar = 1635967347811 -C:\Users\admin\.m2\repository\org\apache\httpcomponents\httpmime\4.5.13\httpmime-4.5.13.jar = 1636040505153 -C:\Users\admin\.m2\repository\com\diogonunes\JCDP\4.0.2\JCDP-4.0.2.jar = 1635967361081 -C:\Users\admin\.m2\repository\net\java\dev\jna\jna\5.5.0\jna-5.5.0.jar = 1635967348199 -C:\Users\admin\.m2\repository\net\java\dev\jna\jna-platform\5.5.0\jna-platform-5.5.0.jar = 1635967348505 -C:\Users\admin\.m2\repository\org\projectlombok\lombok\1.18.22\lombok-1.18.22.jar = 1635967361990 -C:\Users\admin\Documents\proyectos\XenAPI\src = 1635967353573 -C:\Users\admin\Documents\proyectos\XenAPI\target\apidocs\allclasses-index.html = 1636043742154 -C:\Users\admin\Documents\proyectos\XenAPI\target\apidocs\allpackages-index.html = 1636043742156 -C:\Users\admin\Documents\proyectos\XenAPI\target\apidocs\constant-values.html = 1636043742024 -C:\Users\admin\Documents\proyectos\XenAPI\target\apidocs\deprecated-list.html = 1636043742113 -C:\Users\admin\Documents\proyectos\XenAPI\target\apidocs\element-list = 1636043741988 -C:\Users\admin\Documents\proyectos\XenAPI\target\apidocs\help-doc.html = 1636043742162 -C:\Users\admin\Documents\proyectos\XenAPI\target\apidocs\index-all.html = 1636043742149 -C:\Users\admin\Documents\proyectos\XenAPI\target\apidocs\index.html = 1636043742117 -C:\Users\admin\Documents\proyectos\XenAPI\target\apidocs\jquery-ui.overrides.css = 1636043742188 -C:\Users\admin\Documents\proyectos\XenAPI\target\apidocs\member-search-index.js = 1636043742146 -C:\Users\admin\Documents\proyectos\XenAPI\target\apidocs\module-search-index.js = 1636043742143 -C:\Users\admin\Documents\proyectos\XenAPI\target\apidocs\overview-summary.html = 1636043742158 -C:\Users\admin\Documents\proyectos\XenAPI\target\apidocs\overview-tree.html = 1636043742110 -C:\Users\admin\Documents\proyectos\XenAPI\target\apidocs\package-search-index.js = 1636043742144 -C:\Users\admin\Documents\proyectos\XenAPI\target\apidocs\script.js = 1636043742166 -C:\Users\admin\Documents\proyectos\XenAPI\target\apidocs\search.js = 1636043742169 -C:\Users\admin\Documents\proyectos\XenAPI\target\apidocs\serialized-form.html = 1636043742032 -C:\Users\admin\Documents\proyectos\XenAPI\target\apidocs\stylesheet.css = 1636043742164 -C:\Users\admin\Documents\proyectos\XenAPI\target\apidocs\tag-search-index.js = 1636043742147 -C:\Users\admin\Documents\proyectos\XenAPI\target\apidocs\type-search-index.js = 1636043742145 \ No newline at end of file diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst deleted file mode 100644 index 699169c..0000000 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ /dev/null @@ -1,16 +0,0 @@ -es\cadox8\xenapi\exceptions\NotAuthorizedException.class -es\cadox8\xenapi\net\XenForoUrl.class -es\cadox8\xenapi\XenAPIBuilder.class -es\cadox8\xenapi\net\XenForoClient.class -es\cadox8\xenapi\api\User.class -es\cadox8\xenapi\XenAPI.class -es\cadox8\xenapi\utils\Utils.class -es\cadox8\xenapi\exceptions\NotFoundException.class -es\cadox8\xenapi\utils\Argument.class -es\cadox8\xenapi\utils\Log.class -es\cadox8\xenapi\net\UrlExpander.class -es\cadox8\xenapi\exceptions\XenForoHttpException.class -es\cadox8\xenapi\utils\Log$LogType.class -es\cadox8\xenapi\exceptions\XenForoBadRequestException.class -es\cadox8\xenapi\Launcher.class -es\cadox8\xenapi\api\XenForoEntity.class diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst deleted file mode 100644 index 53180da..0000000 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ /dev/null @@ -1,15 +0,0 @@ -C:\Users\admin\Documents\proyectos\XenAPI\src\es\cadox8\xenapi\exceptions\XenForoBadRequestException.java -C:\Users\admin\Documents\proyectos\XenAPI\src\es\cadox8\xenapi\api\XenForoEntity.java -C:\Users\admin\Documents\proyectos\XenAPI\src\es\cadox8\xenapi\net\UrlExpander.java -C:\Users\admin\Documents\proyectos\XenAPI\src\es\cadox8\xenapi\utils\Utils.java -C:\Users\admin\Documents\proyectos\XenAPI\src\es\cadox8\xenapi\exceptions\NotAuthorizedException.java -C:\Users\admin\Documents\proyectos\XenAPI\src\es\cadox8\xenapi\Launcher.java -C:\Users\admin\Documents\proyectos\XenAPI\src\es\cadox8\xenapi\net\XenForoClient.java -C:\Users\admin\Documents\proyectos\XenAPI\src\es\cadox8\xenapi\XenAPI.java -C:\Users\admin\Documents\proyectos\XenAPI\src\es\cadox8\xenapi\utils\Argument.java -C:\Users\admin\Documents\proyectos\XenAPI\src\es\cadox8\xenapi\utils\Log.java -C:\Users\admin\Documents\proyectos\XenAPI\src\es\cadox8\xenapi\exceptions\NotFoundException.java -C:\Users\admin\Documents\proyectos\XenAPI\src\es\cadox8\xenapi\api\User.java -C:\Users\admin\Documents\proyectos\XenAPI\src\es\cadox8\xenapi\XenAPIBuilder.java -C:\Users\admin\Documents\proyectos\XenAPI\src\es\cadox8\xenapi\net\XenForoUrl.java -C:\Users\admin\Documents\proyectos\XenAPI\src\es\cadox8\xenapi\exceptions\XenForoHttpException.java