SteemJ v0.4.2 is available now ~ Use the Steem API in your Java ProjectsteemCreated with Sketch.

in #utopian-io6 years ago

SteemJ v0.4.2 allows you to use the official https://api.steemit.com endpoint by adding a HTTP Client.


SteemJV2Logo


Previous 0.4.x releases: v0.4.2pr1, v0.4.1, v0.4.0

SteemJ v0.4.2 is available now ~ Use the Steem API in your Java Project

Hello Steemians!

I spend this weekend to add the features which were still missing in v0.4.2pr1 to SteemJ and can now proudly announce that v0.4.2 has been released.

What's new?

HTTP Client

The main feature is the HTTP Client which is now used by default. If you are interested in the details of this feature and the reasons behind this you should check out the previous update.

As stated in the Update your STEEM apps! Big changes coming for 3rd party developers post, using the WebSocket endpoint provided by Steem is deprecated. So if you want to stay with the WebSocket connections make sure that you use a different endpoint than

wss://steemd.steemit.com / wss://steemd.steemit.com
. This wiki article shows how to add and use WebSocket Endpoints instead of the HTTP Client.


Attention
Source - https://ahrefs.com

If you were unable to connect to a WebSocket endpoint as described in Issue #143 this update will finally allow you to use SteemJ. According to @sanjeevm who faced the problem too, the Http Client is working for him.

Improved Permlink Generation

Another shout out goes to philip-healy, who submitted #144 that cleaned up the code for the permlink generation.

Improved Exception Creation

The last big change is the error handling which has been refactored: When I've started to develop SteemJ I had the vision to provide a detailed object for an error response returned by Steem Node. Sadly, the data field which provides detailed information about the root cause of the error, is really dynamic and totally depends on the call that has been made. Older SteemJ versions tried to push this data field into a pre-defined structure which often caused errors because the structure did not fit for a lot of cases.
With SteemJ 0.4.2 this problem is gone, because now all error responses are wrapped by the new SteemResponseException. The new Exception could now be thrown by every api call and has the following three fields:

  • The code field is an Integer and can be requested using the .getCode() method.
  • The message field is of type String. You can get its value calling the .getMessage() method.
  • The data field is now of type JsonNode - This allows you to analyse and parse it on your own.

Full Changelog

  • #139 Implement a HTTP Client
  • #110 Refactor the communication process
  • #34 Improve error handling
  • #144 Hyphenated permlinks
  • #125 Replace app version during release process

General information

What is SteemJ?

SteemJ is a project that allows you to communicate with a Steem node using Java. So far, the project supports most of the API calls and is also able to broadcast most of the common operation types. Further information can be found on GitHub.

https://github.com/marvin-we/steem-java-api-wrapper

Quick Start Guide

Add SteemJ to your project

SteemJ binaries are pushed into the maven central repository and can be integrated with a bunch of build management tools like Maven. The Wiki provides a lot of examples for the most common build tools. If you do not use a build management tool you can download the binaries as described here.

To add this release to your project paste the following snippet into your 'pom.xml'

<dependency>
    <groupId>eu.bittrade.libs</groupId>
    <artifactId>steemj-core</artifactId>
    <version>0.4.2pr1</version>
</dependency>

Start posting

SteemJConfig myConfig = SteemJConfig.getInstance();

myConfig.setDefaultAccount(new AccountName("YOUR-ACCOUNT"));

List<ImmutablePair<PrivateKeyType, String>> privateKeys = new ArrayList<>();
privateKeys.add(new ImmutablePair<>(PrivateKeyType.POSTING, "YOUR-PRIVATE-POSTING-KEY"));

myConfig.getPrivateKeyStorage().addAccount(myConfig.getDefaultAccount(), privateKeys);

steemJ.createComment(new AccountName("steemj"), new Permlink("testofsteemj040"), "Example comment without no link but with a @user .", new String[] { "test" });

Further information

The sample module of the SteemJ project provides showcases for the most common acitivies and operations users want to perform.

Beside that you can find a lot of snippets and examples in the different Wiki sections.

Contribute

The project became quite big and there is still a lot to do. If you want to support the project simply clone the git repository and submit a pull request. I would really appreciate it =).

git clone https://github.com/marvin-we/steem-java-api-wrapper.git

Get in touch!

Most of my projects are pretty time consuming and I always try to provide some useful stuff to the community. What keeps me going for that is your feedback and your support. For that reason I would love to get some Feedback from you <3. Just contact me here on Steemit or ping me on GitHub.


If you want to stay up to date or just like the stuff I am doing it would be great if you could upvote and resteem this post =).

Thanks for reading and best regards,
@dez1337


Open Source Contribution posted via Utopian.io

Sort:  

I am a bot created by @sanjeevm using steemj created by @dez1337 and manually operated by a human.

Well done @sanjeevm and thank you once again for using SteemJ for your project :)

Thank you a lot for such a nice library, there was nothing on Java prior to this.

We will use this bot for charitable purpose. And we will find some people who would contribute to advertise.

Let me know whenever I can help you!

Well done 💪 and thank you once again for your activities at github 👌

This is great, I think I've been waiting for this

Thanks a lot for your support =)

Just ping me on steemit.chat if you face a problem with the new implementation. :)

Definitely I will.

Good Job!
Question: is it possible to create an article with a picture that is not an url ? (so that it upload the image and create the post).

Hay @tyvain,

Actually I needed something like this some time ago for a project and was searching for a solution.

  1. You can't upload images directly to the blockchain (Which is good because it would be god damn fcking huge now)
  2. I was thinking about writing an api for "steemimages.com" which is a service offered by Steem. Sadly, the result of a quick analysis is that it is limitted to "steemit.com" as a destination. I did not spend much time on this so this information may be wrong...
  3. I ended up using this Java-Lib to upload images to imgur.

Hope that helps a bit :)

yeah thanks.
I ended up with the same solution: using cloudinary.com wich is very simple img hosting.
A steemimages lib could be perfect, but 3rd party solutions works well also.

Great to hear that :)

A steemimages lib could be perfect, but 3rd party solutions works well also.

True. I will try to check it again when I have more time, but as you said: Thirdparty libs are working too, so this idea has a quite low priority for me right now :)

The steemit condenser script unfortunately does not leave the src='data:' urls intact, it prefixes them with the steemit images redirect and then the images show up as broken.

I definitely see a use case where simple (well compressed) graphics would be useful to include inline, like for, basic subject oriented icons, bullets, or other simple graphical style-ups for a post.

I see where a user has posted an issue on github in regards to this, maybe enough up-votes on the issue will have positive results?

I also a little surprised that the user posts aren't in a secure iframe? Wouldn't that let them be more permissive as to allowed tags? I notice that even <span> tags are problematic, as well as the lack of inline styles of any kind (it seems a subset could be put into a whitelist of some sort).

https://github.com/steemit/condenser/issues/1888

Thanks for this useful guide.

Hey @dez1337 I am @utopian-io. I have just super-voted you at 47% Power!

Suggestions https://utopian.io/rules

-Utopian has detected 2 bot votes. I am the only bot you should love!!

Achievements

-I am a bot...I love developers... <3
-Good amount of information. Thank you!
-A very informative contribution. Good job!
-Votes on this contribution are going well. Nice!
-You are having more votes than average for this category. Nice!
Up-vote this comment to grow my power and help Open Source contributions like this one.

Excellent! Very attractive for developers. I still have one question though. Is this API meant to create new Steem-based blockchains or is the SteemJ API an interface to the original Steem blockchain?

Hay ho again @chris2jh - SteemJ is a wrapper of the Steem blockchain. It allows you to get user information or to post, vote, transfer, .. :)

Thans again!

For other users interested, go to this post, where I got a very useful explanation from @dez1337

Thanks for your wonderful hard work!

Thanks for the feedback :)

Congratulations @dez1337! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of upvotes

Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

By upvoting this notification, you can help all Steemit users. Learn how here!

Thank you for the contribution. It has been approved.

You can contact us on Discord.
[utopian-moderator]

Coin Marketplace

STEEM 0.28
TRX 0.12
JST 0.034
BTC 63152.69
ETH 3233.54
USDT 1.00
SBD 4.45