redux-client-ruby
文件大小: unknow
源码售价: 5 个金币 积分规则     积分充值
资源说明:Ruby client for BBC Redux
# Redux

A gem to help navigate the Redux API's and to screen scrape where an API does
not exist.

If you're reading this and you're not a BBC developer or authorised contractor
then it probably won't make much sense.

BBC Snippets and BBC Redux are tools designed to allow BBC staff to develop new
ways to view and navigate content. As such, they're not open to the public.

If you've been contracted by the BBC to do work in this area please feel free
to message us.

## Installation

### Bundler

    gem 'bbc_redux'

### RubyGems

    gem install bbc_redux

## Quick Start

    require 'bbc/redux'

    # Login

    client = BBC::Redux::Client.new({
      :username => 'username',
      :password => 'password',
    })

    # User data

    user = client.user
    
    user.can_invite?  #=> Boolean
    user.created      #=> DateTime
    user.email        #=> String
    user.first_name   #=> String
    user.id           #=> Integer
    user.last_name    #=> String
    user.username     #=> String
    user.uuid         #=> String

    # Available Channels

    client.channels   #=> Array

    # Asset data

    asset = client.asset('5966413090093319525')
    
    asset.channel     #=> BBC::Redux::Channel
    asset.description #=> String
    asset.duration    #=> Integer
    asset.key         #=> BBC::Redux::Key
    asset.name        #=> String
    asset.pcrid       #=> BBC::Redux::Crid
    asset.reference   #=> String
    asset.scrid       #=> BBC::Redux::Crid
    asset.start       #=> DateTime
    asset.uuid        #=> String

    # Media file urls ...

    # These are wrappers around an http url, each url is valid for 24 hours and
    # can be used without a session token

    asset.dvbsubs_url     #=> BBC::Redux::MediaUrl
    asset.flv_url         #=> BBC::Redux::MediaUrl
    asset.h264_hi_url     #=> BBC::Redux::MediaUrl
    asset.h264_lo_url     #=> BBC::Redux::MediaUrl
    asset.mp3_url         #=> BBC::Redux::MediaUrl
    asset.ts_url          #=> BBC::Redux::MediaUrl
    asset.ts_stripped_url #=> BBC::Redux::MediaUrl

    # URL helper methods

    url = asset.mp3_url
    
    url.expired?   #=> Boolean
    url.expires_at #=> DateTime
    url.live?      #=> Boolean
    url.ttl        #=> Integer
    url.end_point  #=> String

    # Generate an HTTP URL with a different filename
    
    url.end_point('myfile.mp3') #=> String
    
    # Download a file
    response  = redux.http.get(url.end_point)

    # Do something with response
    response.code     # 200 (you can but hope!)
    response.headers  # Hash
    response.body     # Your file or string

    # Get schedule
    client.schedule(Date.today).each do |asset|
      p asset.reference
    end

    # Get a schedule for specific channels
    schedule = client.schedule(Date.today, [ 'bbcone', 'bbctwo' ])

    # Search 

    # You can also search on these params, see docs for more details
    # :q, :name, :channel, :before, :after, :date, :longer, :shorter,
    # :programme_crid, :series_crid,
    results = client.search(:name => 'Pingu')
    
    results.created_at     #=> DateTime
    results.query          #=> Hash
    results.query_time     #=> Float
    results.assets         #=> Array
    results.total          #=> Integer
    results.total_returned #=> Integer
    results.has_more?      #=> Boolean

    # Iterating all search results

    results = redux_client.search(:name => 'Pingu', :offset => 0)

    while true do
      results.assets.each do |asset|
        puts asset.name
      end

      if results.has_more?
        next_query = results.query.merge({
          :offset => results.query[:offset] + 10
        })

        results = redux_client.search(next_query)
      else
        break
      end
    end

    # Remembering to logout whe your done

    client.logout

## Documentation

Please see the ruby docs for full project documentation:

http://rubydoc.info/github/bbcsnippets/redux-client-ruby/version-4/frames

## Caveats / Known Issues

### Number of HTTP requests

All the methods on the `BBC::Redux::Client` object represent a HTTP request to
the API, caching is left as an exercise to the reader.

This means you should at the very least be careful with how you handle the
returned objects. This code for example makes four HTTP requests:

    client.asset('5966413090093319525').channel
    client.asset('5966413090093319525').description
    client.asset('5966413090093319525').name
    client.asset('5966413090093319525').reference

Where as this code makes only one:

    asset = client.asset('5966413090093319525')
    
    asset.channel
    asset.description
    asset.name
    asset.reference

### Using a proxy server

The client uses [Typhoeus](https://github.com/dbalatero/typhoeus) which
respects the `http_proxy` environment variable

### "Your account has been compromised"

You might get your account locked if you repeatedly login, especially from
multiple IP's. To be on the safe side you should reuse the `token` assigned to
a client.

Also, always remember to use `client.logout` when you are finished.

## Development

Please send new code in the form of a pull requests with tests. Run the current
test suite with ...

    rake coverage     # Generate code coverage report
    rake doc          # Gennerate docs
    rake integration  # Runs spec/integration/*_spec.rb - actually connects to redux
    rake spec         # Runs spec/**/*_spec.rb

本源码包内暂不包含可直接显示的源代码文件,请下载源码包。