Giter Club home page Giter Club logo

rxproximitybeacon's Introduction

Android RxProximityBeacon

Build Status Maven Central Android Arsenal Stories in Ready Gitter

A simple android library that lets you easily query against the Proximity Beacon REST Api in a Reactive manner.

This library has been developed using Retrofit2 and RxJava. It also integrates relevant unit tests and a sample application.

Motivation

Google has provided a sample application to illustrate how to interact with the Proximity Beacon API. I'd like to thanks Google for his effort but I may admit that I'm not very fan of that sample code (huge classes, no seperation on concern, relying on AsyncTask requests...) Lot's of 'stuff' that I wish were avoided when providing open source code.

So I decided to create this library, using RxJava and providing clean Unit Tests (partial so far).

Usage

From Maven Central

Library releases are available on Maven Central; you can add dependencies as follow :

Gradle

compile 'com.turhanoz.android.rxproximitybeacon:0.0.1@aar'

Maven

<dependency>
  <groupId>com.turhanoz.android</groupId>
  <artifactId>rxproximitybeacon</artifactId>
  <version>0.0.1</version>
  <type>aar</type>
</dependency>

Supported Android SDK

You can use this library for apps starting from android 2.3.3 (gingerbread /API 10) to android 6 (marshmallow / API 23)

minSdkVersion 10
targetSdkVersion 23

Usage

Each Collection defined in the API documentation has been isolated into a dedicated interface.

// Get an instance of the service you are interested in
RetrofitClient client = new RetrofitClient(oauth2Token);
BeaconsAttachmentService attachmentService = client.getAttachmentService();

// query against the service you want (example of request: listing attachments)
public void listAttachments(String beaconName) {
    String nameSpacedType = "*/*";
    attachmentService.list(beaconName, nameSpacedType)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .unsubscribeOn(Schedulers.newThread())
            .subscribe(new Observer<BeaconAttachmentList>() {
                @Override
                public void onCompleted() {}

                @Override
                public void onError(Throwable e) {}

                @Override
                public void onNext(BeaconAttachmentList beaconAttachmentList) {}
            });
}

The sample application has to be customized and has a testing purpose only, intended for developer. Indeed, oauth2Token and raw beacon configuration have been hard coded (so you have to change them manually in the sample).

TODO

Anyone who would like to contribute is more than welcome :)

  • update sample to get rid of hardcoded stuff (like oauth2Token, using RxGoogleAuthentication or GoogleSignIn ?)
  • enhance UnitTest to validate integrity of pojo binding (while json serializing/deserializing)
  • add Service tests (Beacon, BeaconInfo, Attachment, Diagnostic, Namespace) based on what's already started.
  • use client.setAuthenticator() instead of AuthorizationInterceptor ?

License

Copyright 2015 Turhan OZ

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

rxproximitybeacon's People

Stargazers

Jesse Scott avatar Matias Schertel avatar  avatar Kalpana avatar Łukasz Kincel avatar Mohamed Nazim avatar A. Altuğ Keçiciler avatar ScriptGO avatar sembozdemir avatar Wade avatar 脉脉不得语 avatar Amine Laadhari avatar Pranav Lathigara avatar Andrew Chen avatar Vladislav Bauer avatar

Watchers

James Cloos avatar TurhanOz 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.