{"id":15830150,"url":"https://github.com/aaschmid/taskwarrior-java-client","last_synced_at":"2025-04-01T16:30:41.060Z","repository":{"id":57730176,"uuid":"83128611","full_name":"aaschmid/taskwarrior-java-client","owner":"aaschmid","description":"A Java client to communicate with a taskwarrior server (= taskd).","archived":false,"fork":false,"pushed_at":"2020-02-09T23:00:41.000Z","size":294,"stargazers_count":17,"open_issues_count":0,"forks_count":6,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-12T11:14:10.239Z","etag":null,"topics":["client","java","java-client","pem","pkcs","taskd","taskserver","taskwarrior","taskwarrior-java-client"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aaschmid.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE-OF-CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-02-25T11:57:06.000Z","updated_at":"2024-10-02T12:42:18.000Z","dependencies_parsed_at":"2022-09-07T20:31:14.308Z","dependency_job_id":null,"html_url":"https://github.com/aaschmid/taskwarrior-java-client","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aaschmid%2Ftaskwarrior-java-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aaschmid%2Ftaskwarrior-java-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aaschmid%2Ftaskwarrior-java-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aaschmid%2Ftaskwarrior-java-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aaschmid","download_url":"https://codeload.github.com/aaschmid/taskwarrior-java-client/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246620281,"owners_count":20806739,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["client","java","java-client","pem","pkcs","taskd","taskserver","taskwarrior","taskwarrior-java-client"],"created_at":"2024-10-05T11:05:00.361Z","updated_at":"2025-04-01T16:30:40.662Z","avatar_url":"https://github.com/aaschmid.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Travis CI](https://travis-ci.org/aaschmid/taskwarrior-java-client.png?branch=master)](https://travis-ci.org/aaschmid/taskwarrior-java-client)\n[![CircleCI](https://circleci.com/gh/aaschmid/taskwarrior-java-client.svg?style=svg)](https://circleci.com/gh/aaschmid/taskwarrior-java-client)\n[![codebeat](https://codebeat.co/badges/90f3d360-88bb-4040-b8b6-2e3e684f11f4)](https://codebeat.co/projects/github-com-aaschmid-taskwarrior-java-client-master)\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/de.aaschmid/taskwarrior-java-client/badge.svg)](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22de.aaschmid%22%20AND%20a%3A%22taskwarrior-java-client%22)\n[![License](https://img.shields.io/github/license/aaschmid/taskwarrior-java-client.svg)](https://github.com/aaschmid/taskwarrior-java-client/blob/master/LICENSE)\n[![Issues](https://img.shields.io/github/issues/aaschmid/taskwarrior-java-client.svg)](https://github.com/aaschmid/taskwarrior-java-client/issues)\n\ntaskwarrior-java-client\n=======================\n\n#### Table of Contents\n* [What is it](#what-is-it)\n* [Motivation and distinction](#motivation-and-distinction)\n* [Requirements](#requirements)\n* [Download](#download)\n* [Usage example](#usage-example)\n* [Release notes](#release-notes)\n\n\nWhat is it\n----------\n\nA Java client to communicate with a [taskwarrior][] server (= [taskd](https://taskwarrior.org/docs/taskserver/why.html)).\n\n[taskwarrior]: https://taskwarrior.org/\n\n\nMotivation and distinction\n--------------------------\n\nThe current taskwarrior Android app does not satisfy my requirements. Therefore I created this client library to\nintegrate it into my preferred task app. And I also want to share it with everybody who will love to use it.\n\n\nRequirements\n-----------\n\n* JDK 8\n\n\nDownload\n--------\n\nCurrently there is no released version available but feel free to clone / fork and build it yourself. If you would\nlove to see this on [Maven Central](http://search.maven.org/) feel free to create an issue.\n\nUsage example\n-------------\n\nFor example using it with [Java](https://www.java.com/):\n\n\n```java\nimport java.io.IOException;\nimport java.net.URL;\n\nimport de.aaschmid.taskwarrior.TaskwarriorClient;\nimport de.aaschmid.taskwarrior.config.TaskwarriorConfiguration;\nimport de.aaschmid.taskwarrior.message.MessageType;\nimport de.aaschmid.taskwarrior.message.TaskwarriorMessage;\nimport de.aaschmid.taskwarrior.message.TaskwarriorRequestHeader;\n\nimport static de.aaschmid.taskwarrior.config.TaskwarriorConfiguration.taskwarriorPropertiesConfiguration;\nimport static de.aaschmid.taskwarrior.message.TaskwarriorMessage.taskwarriorMessage;\nimport static de.aaschmid.taskwarrior.message.TaskwarriorRequestHeader.taskwarriorRequestHeaderBuilder;\n\nclass Taskwarrior {\n\n    private static final URL PROPERTIES_TASKWARRIOR = Taskwarrior.class.getResource(\"/taskwarrior.properties\");\n\n    public static void main(String[] args) {\n        if (PROPERTIES_TASKWARRIOR == null) {\n            throw new IllegalStateException(\n                    \"No 'taskwarrior.properties' found on Classpath. Create it by copy and rename 'taskwarrior.properties.template'. Also fill in proper values.\");\n        }\n        TaskwarriorConfiguration config = taskwarriorPropertiesConfiguration(PROPERTIES_TASKWARRIOR);\n\n        TaskwarriorRequestHeader header = taskwarriorRequestHeaderBuilder().authentication(config).type(MessageType.STATISTICS).build();\n        TaskwarriorMessage message = taskwarriorMessage(header.toMap());\n\n        TaskwarriorClient client = new TaskwarriorClient(config);\n\n        TaskwarriorMessage response = client.sendAndReceive(message);\n        System.out.println(response);\n    }\n}\n```\n\nUsed `taskwarrior.properties` can be created by copying and adjusting\n[`src/main/resources/taskwarrior.properties.template`](https://github.com/aaschmid/taskwarrior-java-client/tree/master/src/main/resources/taskwarrior.properties.template).\n\nTesting\n-------\n\nTo run tests manually you will need to build and run taskwarrior server container. [See here how](docker/taskd/README.md).\n\n\nKeys formats\n------------\n\n| Key specification | [PEM]() format¹ | [DER]() format |\n| ----------------- |:---------------:|:--------------:|\n| [PKCS#1]()        | yes             |                |\n| [PKCS#8]()        | yes             | yes            |\n\n¹: The kind of format is currently detected by file extentions.\n\nNote: Keys can be transformed using `openssl`, e.g. from [PKCS#8]() in [PEM]() format to [PKCS#1]() in [DER]() format:\n\n```sh\nopenssl pkcs8 -topk8 -nocrypt -in $TASKD_GENERATED_KEY.key.pem -inform PEM -out $KEY_NAME.key.pkcs8.der -outform DER\n```\n\n[PKCS#1]: https://en.wikipedia.org/wiki/PKCS_1\n[PKCS#8]: https://en.wikipedia.org/wiki/PKCS_8\n[PEM]: https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail\n[DER]: https://en.wikipedia.org/wiki/X.690#DER_encoding\n\n\nRelease notes\n-------------\n\nReleases and Release Notes are available [here](https://github.com//aaschmid/taskwarrior-java-client/releases).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faaschmid%2Ftaskwarrior-java-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faaschmid%2Ftaskwarrior-java-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faaschmid%2Ftaskwarrior-java-client/lists"}