Giter Site home page Giter Site logo

bynder-java-sdk's Introduction

Bynder Java SDK

Build Status Coverage Status

The main goal of this SDK is to speed up the integration of Bynder customers who use Java, making it easier to connect to the Bynder API (http://docs.bynder.apiary.io/) and executing requests on it.

Current status

At the moment this SDK provides a default library with the following methods:

Bynder Service

OAuthService getOAuthService();

AssetService getAssetService();

CollectionService getCollectionService();

Observable<Response<List<Derivative>>> getDerivatives();

OAuth Service

URL getAuthorizationUrl(final String state);

Observable<Token> getAccessToken(final String code);

Observable<Token> refreshAccessToken();

Asset Bank Service

Observable<Response<List<Brand>>> getBrands();

Observable<Response<List<Tag>>> getTags();

Observable<Response<Map<String, Metaproperty>>> getMetaproperties(MetapropertyQuery metapropertyQuery);

Observable<Response<List<Media>>> getMediaList(MediaQuery mediaQuery);

Observable<Response<Media>> getMediaInfo(MediaInfoQuery mediaInfoQuery);

Observable<Response<Void>> modifyMedia(MediaPropertiesQuery mediaPropertiesQuery);

Observable<Response<Void>> deleteMedia(MediaDeleteQuery mediaDeleteQuery);

Observable<Response<DownloadUrl>> getMediaDownloadUrl(MediaDownloadQuery mediaDownloadQuery);

Observable<Response<Usage>> createUsage(UsageCreateQuery usageCreateQuery);

Observable<Response<List<Usage>>> getUsage(UsageQuery usageQuery);

Observable<Response<Void>> deleteUsage(UsageDeleteQuery usageDeleteQuery);

Observable<Response<List<Smartfilter>>> getSmartfilters();

Observable<SaveMediaResponse> uploadFile(UploadQuery uploadQuery);

Observable<UploadProgress> uploadFileWithProgress(UploadQuery uploadQuery);

Collection Service

Observable<Response<List<Collection>>> getCollections(CollectionQuery collectionQuery);

Observable<Response<Collection>> getCollectionInfo(CollectionInfoQuery collectionInfoQuery);

Observable<Response<Void>> createCollection(CollectionCreateQuery collectionCreateQuery);

Observable<Response<Void>> deleteCollection(CollectionInfoQuery collectionInfoQuery);

Observable<Response<List<String>>> getCollectionMediaIds(CollectionInfoQuery collectionInfoQuery);

Observable<Response<Void>> addMediaToCollection(CollectionAddMediaQuery collectionAddMediaQuery);

Observable<Response<Void>> removeMediaFromCollection(CollectionRemoveMediaQuery collectionRemoveMediaQuery);

Observable<Response<Void>> shareCollection(CollectionShareQuery collectionShareQuery);

Installation

Using latest release

The most recent release is Bynder Java SDK 2.1.0, released November 13, 2019.

To add a dependency on the SDK using Maven, use the following:

<dependency>
  <groupId>com.bynder</groupId>
  <artifactId>bynder-java-sdk</artifactId>
  <version>2.1.0</version>
</dependency>

To add a dependency using Gradle:

dependencies {
  compile 'com.bynder:bynder-java-sdk:2.1.0'
}

Using source code

Components used to install and run the project:

  • Java version 1.8.0_221
  • Apache Maven 3.6.0

Important: Don't forget to define the environment variables for Java and Maven!

Clone the repository:

$ git clone [email protected]:Bynder/bynder-java-sdk.git

Build the project from its root with the following Maven command (skipping the GPG signing and Javadocs generation):

$ mvn clean install -Dgpg.skip -Dmaven.javadoc.skip

This command tells Maven to build all the modules and to install it in the local repository. At this point all the integrations tests will be skipped.

Using ProGuard

If you are using ProGuard, remember to add the following lines to your ProGuard rules file.

# Bynder Java SDK
-keep class com.bynder.sdk.model.** { *; }
-keep class com.bynder.sdk.query.** { *; }

How does it work

Before executing any request to the Bynder API, it is necessary to instantiate the class BynderClient.

The following examples show how to use the BynderClient.Builder.create(final Configuration configuration) static method to create an instance of the BynderClient using the Configuration object as parameter.

Instantiate BynderClient with a Permanent Token

BynderClient bynderClient = BynderClient.Builder.create(new Configuration.Builder("Bynder portal base URL").setPermanentToken("Permanent token")).build());

Instantiate BynderClient with a OAuth application settings

BynderClient bynderClient = BynderClient.Builder.create(new Configuration.Builder("Bynder portal base URL").setOAuthSettings("Client id", "Client secret", "Redirect URI")).build());

After instantiating the BynderClient class successfully with your OAuth application settings the OAuth flow needs to be executed, using the methods from the OAuthService, in order to authorize the SDK client with Bynder and get an access token to perform the API requests.

To check how to execute the OAuth flow, please see AppSample.java.

After the SDK client had been authorized successfully it is possible to call any of the methods listed in the section Current Status. Example:

Reactive way to get the Observable

// Get an instance of the asset bank service to perform Bynder Asset Bank operations.
AssetService assetService = bynderClient.getAssetService();

// Get all tags (request without query)
Observable<Response<List<Tag>>> tagsObservable = assetService.getTags();

// Get media (request with query)
Observable<Response<List<Media>>> mediaObservable = assetService.getMediaList(new MediaQuery().setType(MediaType.IMAGE).setLimit(100).setPage(1));

Synchronous way to wait for the Observable to complete and emit the single item

// Get an instance of the asset bank service to perform Bynder Asset Bank operations.
AssetService assetService = bynderClient.getAssetBankService();

// Get all tags (request without query)
Response<List<Tag>> tagsResponse = assetService.getTags().blockingSingle();

// Get media (request with query)
Response<List<Media>> mediaResponse = assetService.getMediaList(new MediaQuery().setType(MediaType.IMAGE).setLimit(100).setPage(1)).blockingSingle();

bynder-java-sdk's People

Contributors

danielsequeira avatar cthulhuplush avatar fheremanswolf avatar maruno avatar woutertoering avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.