README.md

Summary

Maintainability
Test Coverage
[![Gem Version](https://img.shields.io/gem/v/coap.svg)](http://badge.fury.io/rb/coap)
[![Build Status](https://img.shields.io/travis/nning/coap.svg)](https://travis-ci.org/nning/coap)
[![Coverage Status](https://img.shields.io/coveralls/nning/coap.svg)](https://coveralls.io/r/nning/coap)
[![Code Climate](https://codeclimate.com/github/nning/coap/badges/gpa.svg)](https://codeclimate.com/github/nning/coap)
[![Docker Hub Build Status](https://img.shields.io/docker/build/nning2/coap.svg)](https://hub.docker.com/r/nning2/coap/)

# CoAP

This Ruby gem implements client functionality for [RFC
7252](http://tools.ietf.org/html/rfc7252), the Constrained Application Protocol
(CoAP). The message parsing code included is written by Carsten Bormann, one of
the RFC authors.

The Constrained Application Protocol (CoAP) is a specialized web transfer
protocol for use with constrained nodes and constrained (e.g., low-power,
lossy) networks.  The nodes often have 8-bit microcontrollers with small
amounts of ROM and RAM, while constrained networks such as 6LoWPAN often have
high packet error rates and a typical throughput of 10s of kbit/s.  The
protocol is designed for machine-to-machine (M2M) applications such as smart
energy and building automation.

Additionally supported extensions of the CoAP protocol:

* [Blockwise Transfer](http://tools.ietf.org/html/draft-ietf-core-block-14)
* [Observe](http://tools.ietf.org/html/draft-ietf-core-observe-13)

## Install

Add this line to your application's Gemfile:

    gem 'coap'

And then execute:

    $ bundle

Or install it yourself as:

    $ gem install coap

## Usage

### In your Application

    require 'coap'

    CoAP::Client.new.get_by_uri('coap://coap.me/hello').payload
    => "world"

    CoAP::Client.new.get('/hello', 'coap.me')
    => #<struct CoRE::CoAP::Message ver=1, tt=:ack, mcode=[2, 5], mid=51490, options={:max_age=>60, :token=>366862489, :content_format=>0}, payload="world">

    c = CoAP::Client.new(host: 'coap.me')
    c.get('/hello')

See [the API documentation at
rubydoc.info](http://www.rubydoc.info/github/nning/coap/master/CoRE/CoAP/Client)
or `test/test_client.rb` for more examples.

### On the Command Line

The command line client supports the basic CoAP methods.

    coap get coap://coap.me/.well-known/core

### With Docker

You can skip the install section if you want to use Docker.

    docker run nning2/coap get coap://coap.me/hello

## Testing

    rake

## Copyright

The code is published under the MIT license (see the LICENSE file).

### Authors

* Carsten Bormann
* Simon Frerichs
* [henning mueller](https://nning.io)