AlexeyDemidov/bigdoorkit-ruby

View on GitHub
README.rdoc

Summary

Maintainability
Test Coverage
= bigdoorkit

{rdoc-image:https://badge.fury.io/rb/big_door.svg}[http://badge.fury.io/rb/big_door] {rdoc-image:https://codeclimate.com/github/AlexeyDemidov/bigdoorkit-ruby.png}[https://codeclimate.com/github/AlexeyDemidov/bigdoorkit-ruby]

* https://github.com/AlexeyDemidov/bigdoorkit-ruby

== DESCRIPTION:

Client library for the BigDoor REST API (http://bigdoor.com). This package
provides both low-level procedural (BigDoor::Client) and object-oriented
(BigDoor::Resource object hierarchy) interfaces to BigDoor REST API.

== FEATURES/PROBLEMS:

See documentation for BigDoor REST API at http://publisher.bigdoor.com

== SYNOPSIS:

    require 'rubygems'
    require 'bigdoor'

    # see API Keys http://publisher.bigdoor.com/ 
    APP_KEY    = '28d3da80bf36fad415ab57b3130c6cb6'    
    APP_SECRET = 'B66F956ED83AE218612CB0FBAC2EF01C' 

    client = BigDoor::Client.new( APP_SECRET, APP_KEY )
    currency = BigDoor::Currency.new({
        'pub_title'            => 'Coins',
        'pub_description'      => 'an example of the Purchase currency type',
        'end_user_title'       => 'Coins',
        'end_user_description' => 'can only be purchased',
        'currency_type_id'     => '1',
        'currency_type_title'  => 'Purchase',
        'exchange_rate'        => 900.00,
        'relative_weight'      => 2,
    })

    currency.save( client )

    currency.load( client ) # reload object

    currency.pub_title = 'Bank Notes'
    currency.save( client ) # update object keeping same ID

    currency_id = currency.resource_id
    currency.load( client, currency_id) # load object by explictly defined id

    nlc = BigDoor::NamedLevelCollection.new({
        'pub_title'            => 'Test Named Level Collection',
        'pub_description'      => 'test description',
        'end_user_title'       => 'test user title',
        'end_user_description' => 'test user description',
        'currency_id'          =>  currency.resource_id,
    })

    nlc.save( client )

    nl = BigDoor::NamedLevel.new({
        'pub_title'                 => 'Named Level pub title',
        'pub_description'           => 'Named Level pub description',
        'end_user_title'            => 'Named Level end user title',
        'end_user_description'      => 'Named Level end user description',
        'relative_weight'           => 1,
        'threshold'                 => 10,
        'named_level_collection_id' => nlc.resource_id,
    })
    nl.save( client )

    ntg = BigDoor::NamedTransactionGroup.new({
        'pub_title'             => 'Test Transaction Group',
        'pub_description'       => 'test description',
        'end_user_title'        => 'end user title',
        'end_user_description'  => 'end user description',
        'end_user_cap'          => '-1',
        'end_user_cap_interval' => '-1',
    })
    ntg.save( client )

    nt = BigDoor::NamedTransaction.new({
        'pub_title'            => 'Test Transaction',
        'pub_description'      => 'test description',
        'end_user_title'       => 'end user title',
        'end_user_description' => 'end user description',
        'currency_id'          => currency.resource_id,
        'amount'               => '50',
        'default_amount'       => '50',
    })
    nt.save( client )

    ntg.associate_with( nt, client, 1 )

    username = (0...10).map{ ('a'..'z').to_a[rand(26)] }.join

    end_user = BigDoor::EndUser.new({
        'end_user_login' => username
    })
    end_user.save( client )

    ntg.execute( username, { 'good_receiver' => username }, client )

    # cleanup
    currency.delete( client )
    ntg.delete( client )
    nt.delete( client )
    nl.delete( client )
    nlc.delete( client )
    end_user.delete( client )

== REQUIREMENTS:

* rest-client
* uuidtools
* addressable
* json

== INSTALL:

The <code>bigdoorkit</code> is distributed as a RubyGem and is available
immediately after installation.

  gem install bigdoorkit

Alternately, download the gem and install manually.


== TESTS:

Tests requre rspec 2.x and cucumber gems installed. To access BigDoor API you
need to get API keys ( see http://publisher.bigdoor.com/ site) - place them
into appropriate environment variable in you shell - BIGDOOR_API_KEY and
BIGDOOR_API_SECRET. 

WARNING: Test suite was initially designed to be run against empty account
without any objects created (except predefined Attributes and CurrencyTypes)
and there is no checks for existing objects. While tests shouldn't touch or
remove any objects other than those they have created, there is still
possibility of bugs, so be careful running these tests against account with
live economy.

== LICENSE:

BigDoor Open License
Copyright (c) 2010 BigDoor Media, Inc.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to
do so, subject to the following conditions:

- This copyright notice and all listed conditions and disclaimers shall
be included in all copies and portions of the Software including any
redistributions in binary form.

- The Software connects with the BigDoor API (api.bigdoor.com) and
all uses, copies, modifications, derivative works, mergers, publications,
distributions, sublicenses and sales shall also connect to the BigDoor API and
shall not be used to connect with any API, software or service that competes
with BigDoor's API, software and services.

- Except as contained in this notice, this license does not grant you rights to
use BigDoor Media, Inc. or any contributors' name, logo, or trademarks.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.