enigma_io 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +17 -0
- data/.rubocop.yml +14 -0
- data/.travis.yml +14 -0
- data/Gemfile +11 -0
- data/LICENSE.txt +22 -0
- data/README.md +64 -0
- data/Rakefile +28 -0
- data/enigma_io.gemspec +30 -0
- data/examples/data.md +94 -0
- data/examples/export.md +35 -0
- data/lib/enigma/client.rb +26 -0
- data/lib/enigma/download.rb +81 -0
- data/lib/enigma/endpoint.rb +108 -0
- data/lib/enigma/endpoints/data.rb +5 -0
- data/lib/enigma/endpoints/export.rb +22 -0
- data/lib/enigma/endpoints/meta.rb +5 -0
- data/lib/enigma/endpoints/stats.rb +5 -0
- data/lib/enigma/response.rb +17 -0
- data/lib/enigma/version.rb +6 -0
- data/lib/enigma.rb +49 -0
- data/test/client_test.rb +32 -0
- data/test/data_test.rb +81 -0
- data/test/endpoint_test.rb +55 -0
- data/test/export_test.rb +67 -0
- data/test/fixtures/download.csv +4 -0
- data/test/fixtures/download.zip +0 -0
- data/test/fixtures/vcr_cassettes/compound_average.yml +121 -0
- data/test/fixtures/vcr_cassettes/data_with_error.yml +38 -0
- data/test/fixtures/vcr_cassettes/export.yml +37 -0
- data/test/fixtures/vcr_cassettes/filtered_data.yml +6727 -0
- data/test/fixtures/vcr_cassettes/limit_data.yml +54 -0
- data/test/fixtures/vcr_cassettes/page_data.yml +53 -0
- data/test/fixtures/vcr_cassettes/selected_data.yml +541 -0
- data/test/fixtures/vcr_cassettes/simple_data.yml +6762 -0
- data/test/fixtures/vcr_cassettes/simple_metadata.yml +75 -0
- data/test/fixtures/vcr_cassettes/simple_stats.yml +48 -0
- data/test/fixtures/vcr_cassettes/sorted_data.yml +6690 -0
- data/test/fixtures/vcr_cassettes/sorted_data_descending.yml +6690 -0
- data/test/meta_test.rb +26 -0
- data/test/response_test.rb +13 -0
- data/test/stats_test.rb +27 -0
- data/test/test_helper.rb +37 -0
- metadata +223 -0
    
        data/test/client_test.rb
    ADDED
    
    | @@ -0,0 +1,32 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'test_helper'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            class EnigmaTest < Test::Unit::TestCase
         | 
| 6 | 
            +
              def setup
         | 
| 7 | 
            +
                ENV['ENIGMA_KEY'] = nil
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              def test_initialize_handle
         | 
| 11 | 
            +
                Enigma::Client.new(key: 'test')
         | 
| 12 | 
            +
                assert_equal 'test', Enigma.key
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              def test_initialize_key_from_env
         | 
| 16 | 
            +
                ENV['ENIGMA_KEY'] = 'test'
         | 
| 17 | 
            +
                Enigma::Client.new
         | 
| 18 | 
            +
                assert_equal 'test', Enigma.key
         | 
| 19 | 
            +
              end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              def test_prefers_key_from_env
         | 
| 22 | 
            +
                ENV['ENIGMA_KEY'] = 'env_key'
         | 
| 23 | 
            +
                Enigma::Client.new(key: 'bogus')
         | 
| 24 | 
            +
                assert_equal 'env_key', Enigma.key
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              def test_requires_key
         | 
| 28 | 
            +
                assert_raises ArgumentError do
         | 
| 29 | 
            +
                  Enigma::Client.new
         | 
| 30 | 
            +
                end
         | 
| 31 | 
            +
              end
         | 
| 32 | 
            +
            end
         | 
    
        data/test/data_test.rb
    ADDED
    
    | @@ -0,0 +1,81 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'test_helper'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            class DataTest < Test::Unit::TestCase
         | 
| 6 | 
            +
              def setup
         | 
| 7 | 
            +
                @client = Enigma::Client.new(key: TEST_KEY)
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              def test_bad_request
         | 
| 11 | 
            +
                VCR.use_cassette('data_with_error') do
         | 
| 12 | 
            +
                  assert_raises RuntimeError do
         | 
| 13 | 
            +
                    response = @client.data('us.gov.whitehouse.salaries')
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              def test_simple_data_request
         | 
| 19 | 
            +
                VCR.use_cassette('simple_data') do
         | 
| 20 | 
            +
                  response = @client.data('us.gov.whitehouse.visitor-list')
         | 
| 21 | 
            +
                  assert_equal 500, response.info.rows_limit
         | 
| 22 | 
            +
                  assert_equal 3427529, response.info.total_results
         | 
| 23 | 
            +
                  assert_equal 'TED', response.result.first.namefirst
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              def test_filter_with_search
         | 
| 28 | 
            +
                VCR.use_cassette('filtered_data') do
         | 
| 29 | 
            +
                  response = @client.data('us.gov.whitehouse.visitor-list',
         | 
| 30 | 
            +
                                          search: { namefirst: ['Steve', 'Joe'] })
         | 
| 31 | 
            +
                  assert_equal ['JOE', 'STEVE'], response.result.map(&:namefirst).uniq.sort
         | 
| 32 | 
            +
                end
         | 
| 33 | 
            +
              end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
              def test_filter_with_select
         | 
| 36 | 
            +
                VCR.use_cassette('selected_data') do
         | 
| 37 | 
            +
                  response = @client.data('us.gov.whitehouse.visitor-list',
         | 
| 38 | 
            +
                                          select: ['namefirst', 'namelast'])
         | 
| 39 | 
            +
                  assert_equal nil, response.result.first.appt_made_date
         | 
| 40 | 
            +
                  assert response.result.first.namefirst
         | 
| 41 | 
            +
                end
         | 
| 42 | 
            +
              end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
              def test_sort
         | 
| 45 | 
            +
                VCR.use_cassette('sorted_data_descending') do
         | 
| 46 | 
            +
                  response = @client.data('us.gov.whitehouse.visitor-list',
         | 
| 47 | 
            +
                                          sort: 'namefirst-')
         | 
| 48 | 
            +
                  names = response.result.map(&:firstname)
         | 
| 49 | 
            +
                  assert_equal names, names.sort.reverse
         | 
| 50 | 
            +
                end
         | 
| 51 | 
            +
              end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
              def test_limit
         | 
| 54 | 
            +
                VCR.use_cassette('limit_data') do
         | 
| 55 | 
            +
                  response = @client.data('us.gov.whitehouse.visitor-list',
         | 
| 56 | 
            +
                                          limit: 1)
         | 
| 57 | 
            +
                  assert response.info.total_results > 1
         | 
| 58 | 
            +
                  assert_equal 1, response.info.rows_limit
         | 
| 59 | 
            +
                  assert_equal 1, response.result.count
         | 
| 60 | 
            +
                end
         | 
| 61 | 
            +
              end
         | 
| 62 | 
            +
             | 
| 63 | 
            +
              def test_page
         | 
| 64 | 
            +
                VCR.use_cassette('page_data') do
         | 
| 65 | 
            +
                  response = @client.data('us.gov.whitehouse.visitor-list',
         | 
| 66 | 
            +
                                          limit: 1, page: 2)
         | 
| 67 | 
            +
                  assert response.info.total_results > 1
         | 
| 68 | 
            +
                  assert_equal 1, response.info.rows_limit
         | 
| 69 | 
            +
                  assert_equal 2, response.info.current_page
         | 
| 70 | 
            +
                end
         | 
| 71 | 
            +
              end
         | 
| 72 | 
            +
             | 
| 73 | 
            +
              def test_sort_defaults_ascending
         | 
| 74 | 
            +
                VCR.use_cassette('sorted_data') do
         | 
| 75 | 
            +
                  response = @client.data('us.gov.whitehouse.visitor-list',
         | 
| 76 | 
            +
                                          sort: 'namefirst')
         | 
| 77 | 
            +
                  names = response.result.map(&:firstname)
         | 
| 78 | 
            +
                  assert_equal names, names.sort
         | 
| 79 | 
            +
                end
         | 
| 80 | 
            +
              end
         | 
| 81 | 
            +
            end
         | 
| @@ -0,0 +1,55 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'test_helper'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            class EndpointTest < Test::Unit::TestCase
         | 
| 6 | 
            +
              def setup
         | 
| 7 | 
            +
                ENV['ENIGMA_KEY'] = 'test_key'
         | 
| 8 | 
            +
                @datapath = 'us.gov.whitehouse.visitor-list'
         | 
| 9 | 
            +
                @ep = Enigma::Endpoint.new(@datapath)
         | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              def test_needs_datapath
         | 
| 13 | 
            +
                assert_raises ArgumentError do
         | 
| 14 | 
            +
                  Enigma::Endpoint.new
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              def test_query_params
         | 
| 19 | 
            +
                ep = Enigma::Endpoint.new(@datapath, limit: 100)
         | 
| 20 | 
            +
                assert_equal({ limit: 100 }, ep.params)
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
              def test_has_descendants
         | 
| 24 | 
            +
                assert Enigma::Endpoint.descendants.include? Enigma::Meta
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              def test_where_clause_from_hash
         | 
| 28 | 
            +
                assert_equal 'firstName=Steve', @ep.serialize_where({ firstName: 'Steve' })
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
              def test_where_clause_from_string
         | 
| 32 | 
            +
                assert_equal 'firstName=Steve', @ep.serialize_where('firstName=Steve')
         | 
| 33 | 
            +
              end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
              def test_search_clause_from_hash
         | 
| 36 | 
            +
                search_hash = { nameFirst: 'andrew', nameLast: ['white', 'brown', 'black'] }
         | 
| 37 | 
            +
                assert_equal('@nameFirst (andrew) @nameLast (white|brown|black)',
         | 
| 38 | 
            +
                             @ep.serialize_search(search_hash))
         | 
| 39 | 
            +
              end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
              def test_search_clause_from_string
         | 
| 42 | 
            +
                search = '@namefirst (andrew) @namelast (white|brown)'
         | 
| 43 | 
            +
                assert_equal(search, @ep.serialize_search(search))
         | 
| 44 | 
            +
              end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
              def test_select_clause_from_string
         | 
| 47 | 
            +
                select = 'namefirst,namelast'
         | 
| 48 | 
            +
                assert_equal(select, @ep.serialize_select(select))
         | 
| 49 | 
            +
              end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
              def test_select_clause_from_array
         | 
| 52 | 
            +
                select = ['namefirst', 'namelast']
         | 
| 53 | 
            +
                assert_equal('namefirst,namelast', @ep.serialize_select(select))
         | 
| 54 | 
            +
              end
         | 
| 55 | 
            +
            end
         | 
    
        data/test/export_test.rb
    ADDED
    
    | @@ -0,0 +1,67 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
            require 'test_helper'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            class ExportTest < Test::Unit::TestCase
         | 
| 5 | 
            +
              def setup
         | 
| 6 | 
            +
                @client = Enigma::Client.new(key: TEST_KEY)
         | 
| 7 | 
            +
                Enigma::Download.any_instance.stubs(:sleep)
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                # These are identical, just one is zipped
         | 
| 10 | 
            +
                @zipped = File.read 'test/fixtures/download.zip'
         | 
| 11 | 
            +
                @unzipped = File.read 'test/fixtures/download.csv'
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                # www.example.com is the URL in the response to the export
         | 
| 14 | 
            +
                # cassette
         | 
| 15 | 
            +
                stub_request(:get, 'www.example.com').to_return do
         | 
| 16 | 
            +
                  if @tried
         | 
| 17 | 
            +
                    { body: @zipped }
         | 
| 18 | 
            +
                  else
         | 
| 19 | 
            +
                    @tried = true
         | 
| 20 | 
            +
                    { status: 404 }
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              def test_export_no_dl
         | 
| 26 | 
            +
                VCR.use_cassette('export') do
         | 
| 27 | 
            +
                  dl = @client.export('us.gov.whitehouse.visitor-list')
         | 
| 28 | 
            +
                  assert dl.response.export_url
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
              end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
              def test_export_with_dl
         | 
| 33 | 
            +
                VCR.use_cassette('export') do
         | 
| 34 | 
            +
                  dl = @client.export('us.gov.whitehouse.visitor-list')
         | 
| 35 | 
            +
                  dl.get
         | 
| 36 | 
            +
                  assert_equal @zipped, dl.raw_download
         | 
| 37 | 
            +
                end
         | 
| 38 | 
            +
              end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
              def test_writing_zip
         | 
| 41 | 
            +
                VCR.use_cassette('export') do
         | 
| 42 | 
            +
                  dl = @client.export('us.gov.whitehouse.visitor-list')
         | 
| 43 | 
            +
                  dl.get
         | 
| 44 | 
            +
                  testIO = StringIO.new
         | 
| 45 | 
            +
                  dl.write(testIO)
         | 
| 46 | 
            +
                  assert_equal @zipped, testIO.string
         | 
| 47 | 
            +
                end
         | 
| 48 | 
            +
              end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
              def test_writing_csv
         | 
| 51 | 
            +
                VCR.use_cassette('export') do
         | 
| 52 | 
            +
                  dl = @client.export('us.gov.whitehouse.visitor-list')
         | 
| 53 | 
            +
                  dl.get
         | 
| 54 | 
            +
                  testIO = StringIO.new
         | 
| 55 | 
            +
                  dl.write_csv(testIO)
         | 
| 56 | 
            +
                  assert_equal @unzipped, testIO.string
         | 
| 57 | 
            +
                end
         | 
| 58 | 
            +
              end
         | 
| 59 | 
            +
             | 
| 60 | 
            +
              def test_parse_as_csv
         | 
| 61 | 
            +
                VCR.use_cassette('export') do
         | 
| 62 | 
            +
                  dl = @client.export('us.gov.whitehouse.visitor-list')
         | 
| 63 | 
            +
                  parsed = dl.parse
         | 
| 64 | 
            +
                  assert_equal 'Steve', parsed.first[:name]
         | 
| 65 | 
            +
                end
         | 
| 66 | 
            +
              end
         | 
| 67 | 
            +
            end
         | 
| Binary file | 
| @@ -0,0 +1,121 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            http_interactions:
         | 
| 3 | 
            +
            - request:
         | 
| 4 | 
            +
                method: get
         | 
| 5 | 
            +
                uri: https://api.enigma.io/v2/stats/test-key/us.gov.whitehouse.visitor-list?by=avg&of=total_people&select=release_date
         | 
| 6 | 
            +
                body:
         | 
| 7 | 
            +
                  encoding: US-ASCII
         | 
| 8 | 
            +
                  string: ''
         | 
| 9 | 
            +
                headers:
         | 
| 10 | 
            +
                  User-Agent:
         | 
| 11 | 
            +
                  - Typhoeus - https://github.com/typhoeus/typhoeus
         | 
| 12 | 
            +
              response:
         | 
| 13 | 
            +
                status:
         | 
| 14 | 
            +
                  code: 200
         | 
| 15 | 
            +
                  message: OK
         | 
| 16 | 
            +
                headers:
         | 
| 17 | 
            +
                  Server:
         | 
| 18 | 
            +
                  - nginx/1.2.9
         | 
| 19 | 
            +
                  Date:
         | 
| 20 | 
            +
                  - Sun, 26 Jan 2014 21:27:58 GMT
         | 
| 21 | 
            +
                  Content-Type:
         | 
| 22 | 
            +
                  - application/json; charset=utf-8
         | 
| 23 | 
            +
                  Content-Length:
         | 
| 24 | 
            +
                  - '5971'
         | 
| 25 | 
            +
                  Connection:
         | 
| 26 | 
            +
                  - keep-alive
         | 
| 27 | 
            +
                  Vary:
         | 
| 28 | 
            +
                  - Accept-Encoding
         | 
| 29 | 
            +
                  Access-Control-Allow-Origin:
         | 
| 30 | 
            +
                  - ! '*'
         | 
| 31 | 
            +
                  Etag:
         | 
| 32 | 
            +
                  - ! '"1451852404"'
         | 
| 33 | 
            +
                body:
         | 
| 34 | 
            +
                  encoding: US-ASCII
         | 
| 35 | 
            +
                  string: ! "{\n  \"datapath\": \"us.gov.whitehouse.visitor-list\",\n  \"success\":
         | 
| 36 | 
            +
                    true,\n  \"info\": {\n    \"column\": {\n      \"id\": \"release_date\",\n
         | 
| 37 | 
            +
                    \     \"label\": \"Release Date\",\n      \"description\": \"Release Date\",\n
         | 
| 38 | 
            +
                    \     \"type\": \"type_date\",\n      \"index\": 28\n    },\n    \"operations\":
         | 
| 39 | 
            +
                    [\n      \"compound_avg\"\n    ],\n    \"rows_limit\": 500,\n    \"total_results\":
         | 
| 40 | 
            +
                    52,\n    \"total_pages\": 1,\n    \"current_page\": 1\n  },\n  \"result\":
         | 
| 41 | 
            +
                    {\n    \"compound_avg\": [\n      {\n        \"release_date\": \"2010-03-26T00:00:00.000Z\",\n
         | 
| 42 | 
            +
                    \       \"avg\": \"734.1429047671963552\"\n      },\n      {\n        \"release_date\":
         | 
| 43 | 
            +
                    \"2013-11-08T00:00:00.000Z\",\n        \"avg\": \"679.4682244439277687\"\n
         | 
| 44 | 
            +
                    \     },\n      {\n        \"release_date\": \"2012-06-29T00:00:00.000Z\",\n
         | 
| 45 | 
            +
                    \       \"avg\": \"533.7427734055372897\"\n      },\n      {\n        \"release_date\":
         | 
| 46 | 
            +
                    \"2010-08-27T00:00:00.000Z\",\n        \"avg\": \"455.2680450957263406\"\n
         | 
| 47 | 
            +
                    \     },\n      {\n        \"release_date\": \"2010-09-24T00:00:00.000Z\",\n
         | 
| 48 | 
            +
                    \       \"avg\": \"439.1832508722477381\"\n      },\n      {\n        \"release_date\":
         | 
| 49 | 
            +
                    \"2011-12-30T00:00:00.000Z\",\n        \"avg\": \"437.2926486009161654\"\n
         | 
| 50 | 
            +
                    \     },\n      {\n        \"release_date\": \"2011-09-30T00:00:00.000Z\",\n
         | 
| 51 | 
            +
                    \       \"avg\": \"421.4652122579903666\"\n      },\n      {\n        \"release_date\":
         | 
| 52 | 
            +
                    \"2013-04-26T00:00:00.000Z\",\n        \"avg\": \"416.6219928445120697\"\n
         | 
| 53 | 
            +
                    \     },\n      {\n        \"release_date\": \"2012-01-27T00:00:00.000Z\",\n
         | 
| 54 | 
            +
                    \       \"avg\": \"415.6607848640052387\"\n      },\n      {\n        \"release_date\":
         | 
| 55 | 
            +
                    \"2010-10-29T00:00:00.000Z\",\n        \"avg\": \"377.5752650405801174\"\n
         | 
| 56 | 
            +
                    \     },\n      {\n        \"release_date\": \"2012-09-28T00:00:00.000Z\",\n
         | 
| 57 | 
            +
                    \       \"avg\": \"354.3737179806018403\"\n      },\n      {\n        \"release_date\":
         | 
| 58 | 
            +
                    \"2012-10-26T00:00:00.000Z\",\n        \"avg\": \"340.0990311924978385\"\n
         | 
| 59 | 
            +
                    \     },\n      {\n        \"release_date\": \"2011-10-28T00:00:00.000Z\",\n
         | 
| 60 | 
            +
                    \       \"avg\": \"323.4379794352864371\"\n      },\n      {\n        \"release_date\":
         | 
| 61 | 
            +
                    \"2011-01-28T00:00:00.000Z\",\n        \"avg\": \"302.7656493230812774\"\n
         | 
| 62 | 
            +
                    \     },\n      {\n        \"release_date\": \"2010-06-25T00:00:00.000Z\",\n
         | 
| 63 | 
            +
                    \       \"avg\": \"290.8586820889530279\"\n      },\n      {\n        \"release_date\":
         | 
| 64 | 
            +
                    \"2011-03-25T00:00:00.000Z\",\n        \"avg\": \"282.7361624065521076\"\n
         | 
| 65 | 
            +
                    \     },\n      {\n        \"release_date\": \"2010-01-29T00:00:00.000Z\",\n
         | 
| 66 | 
            +
                    \       \"avg\": \"281.5727106178477551\"\n      },\n      {\n        \"release_date\":
         | 
| 67 | 
            +
                    \"2012-07-27T00:00:00.000Z\",\n        \"avg\": \"274.4184635378532728\"\n
         | 
| 68 | 
            +
                    \     },\n      {\n        \"release_date\": \"2009-12-30T00:00:00.000Z\",\n
         | 
| 69 | 
            +
                    \       \"avg\": \"264.1159100265728508\"\n      },\n      {\n        \"release_date\":
         | 
| 70 | 
            +
                    \"2013-03-29T00:00:00.000Z\",\n        \"avg\": \"262.5289941919424726\"\n
         | 
| 71 | 
            +
                    \     },\n      {\n        \"release_date\": \"2011-11-22T00:00:00.000Z\",\n
         | 
| 72 | 
            +
                    \       \"avg\": \"255.5073803730738037\"\n      },\n      {\n        \"release_date\":
         | 
| 73 | 
            +
                    \"2012-03-30T00:00:00.000Z\",\n        \"avg\": \"253.8343781729434669\"\n
         | 
| 74 | 
            +
                    \     },\n      {\n        \"release_date\": \"2010-11-26T00:00:00.000Z\",\n
         | 
| 75 | 
            +
                    \       \"avg\": \"249.2652607538964273\"\n      },\n      {\n        \"release_date\":
         | 
| 76 | 
            +
                    \"2010-02-26T00:00:00.000Z\",\n        \"avg\": \"246.0113161495506823\"\n
         | 
| 77 | 
            +
                    \     },\n      {\n        \"release_date\": \"2011-07-29T00:00:00.000Z\",\n
         | 
| 78 | 
            +
                    \       \"avg\": \"245.3487768177846811\"\n      },\n      {\n        \"release_date\":
         | 
| 79 | 
            +
                    \"2010-07-30T00:00:00.000Z\",\n        \"avg\": \"244.8549041386970590\"\n
         | 
| 80 | 
            +
                    \     },\n      {\n        \"release_date\": \"2011-06-24T00:00:00.000Z\",\n
         | 
| 81 | 
            +
                    \       \"avg\": \"237.4581660583941606\"\n      },\n      {\n        \"release_date\":
         | 
| 82 | 
            +
                    \"2011-08-26T00:00:00.000Z\",\n        \"avg\": \"236.1496245334772247\"\n
         | 
| 83 | 
            +
                    \     },\n      {\n        \"release_date\": \"2012-02-24T00:00:00.000Z\",\n
         | 
| 84 | 
            +
                    \       \"avg\": \"212.1851240749513992\"\n      },\n      {\n        \"release_date\":
         | 
| 85 | 
            +
                    \"2012-11-30T00:00:00.000Z\",\n        \"avg\": \"204.5262752554120889\"\n
         | 
| 86 | 
            +
                    \     },\n      {\n        \"release_date\": \"2013-01-25T00:00:00.000Z\",\n
         | 
| 87 | 
            +
                    \       \"avg\": \"204.5012172896871218\"\n      },\n      {\n        \"release_date\":
         | 
| 88 | 
            +
                    \"2011-02-25T00:00:00.000Z\",\n        \"avg\": \"202.2168111492909595\"\n
         | 
| 89 | 
            +
                    \     },\n      {\n        \"release_date\": \"2011-05-27T00:00:00.000Z\",\n
         | 
| 90 | 
            +
                    \       \"avg\": \"190.9268717016875761\"\n      },\n      {\n        \"release_date\":
         | 
| 91 | 
            +
                    \"2013-02-23T00:00:00.000Z\",\n        \"avg\": \"189.6301864506875896\"\n
         | 
| 92 | 
            +
                    \     },\n      {\n        \"release_date\": \"2012-08-31T00:00:00.000Z\",\n
         | 
| 93 | 
            +
                    \       \"avg\": \"185.2720662956690056\"\n      },\n      {\n        \"release_date\":
         | 
| 94 | 
            +
                    \"2012-12-28T00:00:00.000Z\",\n        \"avg\": \"179.1459236875479497\"\n
         | 
| 95 | 
            +
                    \     },\n      {\n        \"release_date\": \"2010-05-28T00:00:00.000Z\",\n
         | 
| 96 | 
            +
                    \       \"avg\": \"178.5372322579505924\"\n      },\n      {\n        \"release_date\":
         | 
| 97 | 
            +
                    \"2013-06-28T00:00:00.000Z\",\n        \"avg\": \"171.7002070313997623\"\n
         | 
| 98 | 
            +
                    \     },\n      {\n        \"release_date\": \"2011-04-29T00:00:00.000Z\",\n
         | 
| 99 | 
            +
                    \       \"avg\": \"163.3204458648374776\"\n      },\n      {\n        \"release_date\":
         | 
| 100 | 
            +
                    \"2012-05-25T00:00:00.000Z\",\n        \"avg\": \"162.8172296262254902\"\n
         | 
| 101 | 
            +
                    \     },\n      {\n        \"release_date\": \"2013-05-31T00:00:00.000Z\",\n
         | 
| 102 | 
            +
                    \       \"avg\": \"154.0788188835038593\"\n      },\n      {\n        \"release_date\":
         | 
| 103 | 
            +
                    \"2012-04-27T00:00:00.000Z\",\n        \"avg\": \"151.8549782515176139\"\n
         | 
| 104 | 
            +
                    \     },\n      {\n        \"release_date\": \"2010-04-30T00:00:00.000Z\",\n
         | 
| 105 | 
            +
                    \       \"avg\": \"150.9765423099860844\"\n      },\n      {\n        \"release_date\":
         | 
| 106 | 
            +
                    \"2009-10-30T00:00:00.000Z\",\n        \"avg\": \"147.7505197505197505\"\n
         | 
| 107 | 
            +
                    \     },\n      {\n        \"release_date\": \"2010-12-31T00:00:00.000Z\",\n
         | 
| 108 | 
            +
                    \       \"avg\": \"142.6299773675648914\"\n      },\n      {\n        \"release_date\":
         | 
| 109 | 
            +
                    \"2013-09-27T00:00:00.000Z\",\n        \"avg\": \"85.2565229332600934\"\n
         | 
| 110 | 
            +
                    \     },\n      {\n        \"release_date\": \"2013-07-26T00:00:00.000Z\",\n
         | 
| 111 | 
            +
                    \       \"avg\": \"84.6897653782523688\"\n      },\n      {\n        \"release_date\":
         | 
| 112 | 
            +
                    \"2013-11-29T00:00:00.000Z\",\n        \"avg\": \"69.5096365282628379\"\n
         | 
| 113 | 
            +
                    \     },\n      {\n        \"release_date\": \"2009-11-25T00:00:00.000Z\",\n
         | 
| 114 | 
            +
                    \       \"avg\": \"64.7715544367526746\"\n      },\n      {\n        \"release_date\":
         | 
| 115 | 
            +
                    \"2013-08-30T00:00:00.000Z\",\n        \"avg\": \"51.6237960052722295\"\n
         | 
| 116 | 
            +
                    \     },\n      {\n        \"release_date\": \"2013-12-27T00:00:00.000Z\",\n
         | 
| 117 | 
            +
                    \       \"avg\": \"48.5304894428625154\"\n      },\n      {\n        \"release_date\":
         | 
| 118 | 
            +
                    null,\n        \"avg\": \"23.0000000000000000\"\n      }\n    ]\n  }\n}"
         | 
| 119 | 
            +
                http_version:
         | 
| 120 | 
            +
              recorded_at: Sun, 26 Jan 2014 21:29:03 GMT
         | 
| 121 | 
            +
            recorded_with: VCR 2.8.0
         | 
| @@ -0,0 +1,38 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            http_interactions:
         | 
| 3 | 
            +
            - request:
         | 
| 4 | 
            +
                method: get
         | 
| 5 | 
            +
                uri: https://api.enigma.io/v2/data/test-key/us.gov.whitehouse.salaries
         | 
| 6 | 
            +
                body:
         | 
| 7 | 
            +
                  encoding: US-ASCII
         | 
| 8 | 
            +
                  string: ''
         | 
| 9 | 
            +
                headers:
         | 
| 10 | 
            +
                  User-Agent:
         | 
| 11 | 
            +
                  - Typhoeus - https://github.com/typhoeus/typhoeus
         | 
| 12 | 
            +
              response:
         | 
| 13 | 
            +
                status:
         | 
| 14 | 
            +
                  code: 400
         | 
| 15 | 
            +
                  message: Bad Request
         | 
| 16 | 
            +
                headers:
         | 
| 17 | 
            +
                  Server:
         | 
| 18 | 
            +
                  - nginx/1.2.9
         | 
| 19 | 
            +
                  Date:
         | 
| 20 | 
            +
                  - Sun, 26 Jan 2014 21:02:39 GMT
         | 
| 21 | 
            +
                  Content-Type:
         | 
| 22 | 
            +
                  - application/json; charset=utf-8
         | 
| 23 | 
            +
                  Content-Length:
         | 
| 24 | 
            +
                  - '151'
         | 
| 25 | 
            +
                  Connection:
         | 
| 26 | 
            +
                  - keep-alive
         | 
| 27 | 
            +
                  Vary:
         | 
| 28 | 
            +
                  - Accept-Encoding
         | 
| 29 | 
            +
                  Access-Control-Allow-Origin:
         | 
| 30 | 
            +
                  - ! '*'
         | 
| 31 | 
            +
                body:
         | 
| 32 | 
            +
                  encoding: US-ASCII
         | 
| 33 | 
            +
                  string: ! "{\n  \"success\": false,\n  \"info\": {\n    \"status\": 400,\n    \"message\":
         | 
| 34 | 
            +
                    \"Bad request\",\n    \"additional\": \"Datapath is not a table\",\n    \"error\":
         | 
| 35 | 
            +
                    true\n  }\n}"
         | 
| 36 | 
            +
                http_version:
         | 
| 37 | 
            +
              recorded_at: Sun, 26 Jan 2014 21:03:44 GMT
         | 
| 38 | 
            +
            recorded_with: VCR 2.8.0
         | 
| @@ -0,0 +1,37 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            http_interactions:
         | 
| 3 | 
            +
            - request:
         | 
| 4 | 
            +
                method: get
         | 
| 5 | 
            +
                uri: https://api.enigma.io/v2/export/test-key/us.gov.whitehouse.visitor-list
         | 
| 6 | 
            +
                body:
         | 
| 7 | 
            +
                  encoding: US-ASCII
         | 
| 8 | 
            +
                  string: ''
         | 
| 9 | 
            +
                headers:
         | 
| 10 | 
            +
                  User-Agent:
         | 
| 11 | 
            +
                  - Typhoeus - https://github.com/typhoeus/typhoeus
         | 
| 12 | 
            +
              response:
         | 
| 13 | 
            +
                status:
         | 
| 14 | 
            +
                  code: 200
         | 
| 15 | 
            +
                  message: OK
         | 
| 16 | 
            +
                headers:
         | 
| 17 | 
            +
                  Server:
         | 
| 18 | 
            +
                  - nginx/1.2.9
         | 
| 19 | 
            +
                  Date:
         | 
| 20 | 
            +
                  - Sun, 26 Jan 2014 22:10:52 GMT
         | 
| 21 | 
            +
                  Content-Type:
         | 
| 22 | 
            +
                  - application/json; charset=utf-8
         | 
| 23 | 
            +
                  Content-Length:
         | 
| 24 | 
            +
                  - '302'
         | 
| 25 | 
            +
                  Connection:
         | 
| 26 | 
            +
                  - keep-alive
         | 
| 27 | 
            +
                  Vary:
         | 
| 28 | 
            +
                  - Accept-Encoding
         | 
| 29 | 
            +
                  Access-Control-Allow-Origin:
         | 
| 30 | 
            +
                  - ! '*'
         | 
| 31 | 
            +
                body:
         | 
| 32 | 
            +
                  encoding: US-ASCII
         | 
| 33 | 
            +
                  string: ! "{\n  \"datapath\": \"us.gov.whitehouse.visitor-list\",\n  \"success\":
         | 
| 34 | 
            +
                    true,\n  \"export_url\": \"www.example.com\"\n}"
         | 
| 35 | 
            +
                http_version:
         | 
| 36 | 
            +
              recorded_at: Sun, 26 Jan 2014 22:11:57 GMT
         | 
| 37 | 
            +
            recorded_with: VCR 2.8.0
         |