README.md in npr-0.0.0 vs README.md in npr-0.1.0
- old
+ new
@@ -1,9 +1,43 @@
-# NPR Ruby Client
+# NPR API Ruby Client
-A simple Ruby client for the NPR API
+[![Build Status](https://travis-ci.org/bricker88/npr.png)](https://travis-ci.org/bricker88/npr)
+
+**NOTE** This gem is a WIP
+A simple Ruby client for the
+[NPR API](http://www.npr.org/api/index).
+
+
+## Support
+
+This gem is tested with these versions (but may
+work with others):
+
+* Ruby 1.8.7, 1.9.2, 1.9.3, ruby-head
+* NPR API version 0.94
+
+
+## Dependencies
+
+* `faraday >= 0.8.0` (HTTP requests)
+* `faraday_middleware >= 0.9.0` (response processing)
+
+**NOTE** If you are running **Ruby < 1.9**, you will have to install
+the [json gem](http://rubygems.org/gems/json):
+
+In your Gemfile:
+
+ gem 'json', '~> 1.7.5'
+
+From the command line:
+
+ $ gem install json
+
+Ruby 1.9+ comes with JSON support built-in!
+
+
## Installation
Add this line to your application's Gemfile:
gem 'npr'
@@ -14,12 +48,90 @@
Or install it yourself as:
$ gem install npr
+
## Usage
-TODO: Write usage instructions here
+### API Key
+
+NPR requires that you have an API key in order to use
+their API. More information about this (including how
+to register) can be found at
+[NPR's API Documentation](http://www.npr.org/api/index).
+
+### Configuration
+
+API requests can be configured globally. This is recommended
+for setting the API Key, but you can also set other parameters
+which will be passed in with every request (unless overridden):
+
+```ruby
+NPR.configure do |config|
+ config.apiKey = "YOUR_API_KEY"
+ config.sort = "date descending"
+ config.requiredAssets = "text"
+end
+```
+
+For a Rails application, a good place to put the configuration
+would be in an initializer, such as `config/initializers/npr_config.rb`.
+
+### DSL
+
+The DSL is modeled after Rails' `ActiveRecord::Relation`, so for the
+most part, if you understand that, then using the NPR gem will come
+naturally to you!
+
+To find a story by ID:
+
+```ruby
+NPR::Story.find(1999) #=> NPR::Story
+```
+
+`NPR::Story#find` will either return a Story object if it was found,
+or an array of Messages from the NPR API.
+
+Building a query:
+
+```
+NPR::Story.where(date: [2.days.ago..Time.now]).order("date ascending").limit(10).offset(50)
+```
+
+That's a contrived example but it shows all the methods available.
+
+You can also query directly on an `NPR::API::Client` object, if you're
+feeling adventurous:
+
+```ruby
+client = NPR::API::Client.new(apiKey: NPR.config.apiKey)
+client.query(sort: "editor assigned", numResults: "12")
+```
+
+The params that get passed into the `#query` method map directly to
+the parameters that NPR's API accepts. See the
+[NPR API Input Reference](http://www.npr.org/api/inputReference.php)
+for all of the options.
+
+
+## TODO
+
+* More Documentation
+* Search functionality
+* Add "select" method to QueryBuilder for the "fields" input
+* Abstract attributes so they're not tied directly to the API response.
+Also to make them more Ruby-conventional (i.e. snake_case)
+ * Example: "apiKey" => :api_key
+* Support for "container" node
+* Support for "parent" node
+* Support for "thumbnail" node
+* Support a way to return raw formats of:
+ * HTML / Javascript (for views)
+ * JSON
+ * ATOM
+ * RSS
+
## Contributing
1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)