overpass-api-ruby 0.2 → 0.2.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.
- checksums.yaml +4 -4
- data/README.md +5 -1
- data/Rakefile +3 -2
- data/lib/base.rb +0 -2
- data/lib/version.rb +3 -0
- data/overpass-api-ruby.gemspec +1 -1
- data/spec/integration/ql_spec.rb +16 -0
- data/spec/integration/xml_spec.rb +18 -0
- data/spec/spec_helper.rb +1 -1
- data/spec/unit/base_spec.rb +83 -0
- data/spec/unit/ql_spec.rb +23 -0
- data/spec/unit/xml_spec.rb +24 -0
- metadata +12 -3
- data/spec/overpass_api_ruby_spec.rb +0 -34
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 869f0f15d223e2dba7f50b5aee38f229afecff1f
         | 
| 4 | 
            +
              data.tar.gz: a51e2aa6cfc9c4cd9eb9ace840d9c48eabbbacb1
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: dd3a55ea3765c2c07b842a420eae89edbcd3111338e4ad9b878a2f42b39a6de0cebb92bc4d3749d1303ffd96e351a6c9571e7ff0bf53781a60c7d733400acacb
         | 
| 7 | 
            +
              data.tar.gz: 63ea5915cbd930c273759d3da28bd87a868b57af31e6aa5af2f9ecf23fe0fa5734b43391f1cd20836b06bb30af762a069748df96d0ab10211ea8010bb0565e94
         | 
    
        data/README.md
    CHANGED
    
    | @@ -1,4 +1,4 @@ | |
| 1 | 
            -
            Overpass API Ruby
         | 
| 1 | 
            +
            Overpass API Ruby [](https://circleci.com/gh/BrunoSalerno/overpass-api-ruby)
         | 
| 2 2 | 
             
            =================
         | 
| 3 3 |  | 
| 4 4 | 
             
            A Ruby wrapper for OpenStreetMap Overpass API. Supports both QL and XML.
         | 
| @@ -76,6 +76,10 @@ buid_query (<String query>) Returns a String containing the whole query. | |
| 76 76 | 
             
            bounding_box (s,n,w,e)      Defines the global bounding box.
         | 
| 77 77 | 
             
            ```
         | 
| 78 78 |  | 
| 79 | 
            +
            Test
         | 
| 80 | 
            +
            ----
         | 
| 81 | 
            +
             | 
| 82 | 
            +
            Run `rake spec`
         | 
| 79 83 |  | 
| 80 84 | 
             
            License
         | 
| 81 85 | 
             
            -------
         | 
    
        data/Rakefile
    CHANGED
    
    | @@ -4,9 +4,10 @@ require 'bundler/gem_tasks' | |
| 4 4 | 
             
            require 'rake'
         | 
| 5 5 | 
             
            require 'rspec/core/rake_task'
         | 
| 6 6 |  | 
| 7 | 
            -
            desc 'Run all  | 
| 7 | 
            +
            desc 'Run all tests'
         | 
| 8 8 | 
             
            RSpec::Core::RakeTask.new(:spec) do |t|
         | 
| 9 | 
            +
              t.pattern = "spec/**/*_spec.rb"
         | 
| 9 10 | 
             
              t.rspec_opts = %w(--color --warnings)
         | 
| 10 11 | 
             
            end
         | 
| 11 12 |  | 
| 12 | 
            -
            task default: [:spec]
         | 
| 13 | 
            +
            task default: [:spec]
         | 
    
        data/lib/base.rb
    CHANGED
    
    
    
        data/lib/version.rb
    ADDED
    
    
    
        data/overpass-api-ruby.gemspec
    CHANGED
    
    
| @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
            require 'overpass_api_ruby'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            describe OverpassAPI::QL do
         | 
| 5 | 
            +
              it "should return the right elements" do
         | 
| 6 | 
            +
                options={:bbox => {:s => -34.705448, :n => -34.526562,
         | 
| 7 | 
            +
                                   :w => -58.531471, :e => -58.335159},
         | 
| 8 | 
            +
                                   :timeout => 900}
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                overpass = OverpassAPI::QL.new(options)
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                ba_query = "rel['route'='subway'];(._;>;);out body;"
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                expect(overpass.query(ba_query)[:elements]).to be_a(Array)
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
            end
         | 
| @@ -0,0 +1,18 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
            require 'overpass_api_ruby'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            describe OverpassAPI::XML do
         | 
| 5 | 
            +
              it "should return the requested elements" do
         | 
| 6 | 
            +
                options={:bbox => {:s => -34.705448, :n => -34.526562,
         | 
| 7 | 
            +
                                   :w => -58.531471, :e => -58.335159},
         | 
| 8 | 
            +
                                   :timeout => 900}
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                overpass = OverpassAPI::XML.new(options)
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                ba_query = "<union><query type='relation'><has-kv k='route' v='subway'/></query>" <<
         | 
| 13 | 
            +
                "</union><union><item/><recurse type='down'/></union>"
         | 
| 14 | 
            +
             | 
| 15 | 
            +
             | 
| 16 | 
            +
                expect(overpass.query(ba_query)[:elements]).to be_a(Array)
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
            end
         | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    | @@ -37,7 +37,7 @@ RSpec.configure do |config| | |
| 37 37 | 
             
                # Prevents you from mocking or stubbing a method that does not exist on
         | 
| 38 38 | 
             
                # a real object. This is generally recommended, and will default to
         | 
| 39 39 | 
             
                # `true` in RSpec 4.
         | 
| 40 | 
            -
                mocks.verify_partial_doubles =  | 
| 40 | 
            +
                mocks.verify_partial_doubles = false
         | 
| 41 41 | 
             
              end
         | 
| 42 42 |  | 
| 43 43 | 
             
            # The settings below are suggested to provide a good initial experience
         | 
| @@ -0,0 +1,83 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
            require 'overpass_api_ruby'
         | 
| 3 | 
            +
            require 'httpi'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            describe OverpassAPI::Base do
         | 
| 6 | 
            +
              it "should return the default endpoint" do
         | 
| 7 | 
            +
                expect(OverpassAPI::Base::DEFAULT_ENDPOINT).to eq "http://overpass-api.de/api/interpreter?data="
         | 
| 8 | 
            +
                base = OverpassAPI::Base.new
         | 
| 9 | 
            +
                expect(base.instance_variable_get("@endpoint")).to eq OverpassAPI::Base::DEFAULT_ENDPOINT
         | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              it "should set the right args" do
         | 
| 13 | 
            +
                opts = {bbox: {s: 1, n: 2, w: 3, e: 4},
         | 
| 14 | 
            +
                        endpoint: "a.endpoint.com",
         | 
| 15 | 
            +
                        timeout: 1000,
         | 
| 16 | 
            +
                        maxsize: 333}
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                base = OverpassAPI::Base.new(opts)
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                expect(base.instance_variable_get("@bbox")).to eq "1,3,2,4"
         | 
| 21 | 
            +
                expect(base.instance_variable_get("@endpoint")).to eq "a.endpoint.com"
         | 
| 22 | 
            +
                expect(base.instance_variable_get("@timeout")).to eq 1000
         | 
| 23 | 
            +
                expect(base.instance_variable_get("@maxsize")).to eq 333
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
              it "should set the bounding box" do
         | 
| 27 | 
            +
                base = OverpassAPI::Base.new
         | 
| 28 | 
            +
                base.bounding_box(10,20,30,40)
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                expect(base.instance_variable_get("@bbox")).to eq "10,30,20,40"
         | 
| 31 | 
            +
              end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
              it "should try to perform the query" do
         | 
| 34 | 
            +
                base = OverpassAPI::Base.new
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                query = "a query"
         | 
| 37 | 
            +
                built_query = "built_query"
         | 
| 38 | 
            +
                expected_response = "a response"
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                allow(base).to receive(:perform).and_return(expected_response)
         | 
| 41 | 
            +
                allow(base).to receive(:build_query).and_return(built_query)
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                expect(base).to receive(:build_query).with(query)
         | 
| 44 | 
            +
                expect(base).to receive(:perform).with(built_query)
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                response = base.query(query)
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                expect(response).to eq expected_response
         | 
| 49 | 
            +
              end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
              it "should try to perform a raw query" do
         | 
| 52 | 
            +
                base = OverpassAPI::Base.new
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                query = "as query"
         | 
| 55 | 
            +
                expected_response = "a response"
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                allow(base).to receive(:perform).and_return(expected_response)
         | 
| 58 | 
            +
                expect(base).to receive(:perform).with(query)
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                response = base.raw_query(query)
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                expect(response).to eq expected_response
         | 
| 63 | 
            +
              end
         | 
| 64 | 
            +
             | 
| 65 | 
            +
              it "should try to perform an http request" do
         | 
| 66 | 
            +
                base = OverpassAPI::Base.new
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                query = "a query"
         | 
| 69 | 
            +
                request = "a request"
         | 
| 70 | 
            +
                body = {key: "value"}
         | 
| 71 | 
            +
             | 
| 72 | 
            +
                url = URI::encode("#{OverpassAPI::Base::DEFAULT_ENDPOINT}#{query}")
         | 
| 73 | 
            +
             | 
| 74 | 
            +
                allow(HTTPI::Request).to receive(:new).and_return(request)
         | 
| 75 | 
            +
                expect(HTTPI::Request).to receive(:new).with(url)
         | 
| 76 | 
            +
             | 
| 77 | 
            +
                allow(HTTPI).to receive(:get).and_return(OpenStruct.new(body: body.to_json))
         | 
| 78 | 
            +
                expect(HTTPI).to receive(:get).with(request)
         | 
| 79 | 
            +
             | 
| 80 | 
            +
                response = base.raw_query(query)
         | 
| 81 | 
            +
                expect(response).to eq body
         | 
| 82 | 
            +
              end
         | 
| 83 | 
            +
            end
         | 
| @@ -0,0 +1,23 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
            require 'overpass_api_ruby'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            describe OverpassAPI::QL do
         | 
| 5 | 
            +
              it "should return the right built query when no opts are passed" do
         | 
| 6 | 
            +
                overpass = OverpassAPI::QL.new
         | 
| 7 | 
            +
                built_query = overpass.build_query("a query")
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                expect(built_query).to eq "[out:json];a query"
         | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              it "should set the right opts" do
         | 
| 13 | 
            +
                opts = {bbox: {s: 1, n: 2, w: 3, e: 4},
         | 
| 14 | 
            +
                        timeout: 1000,
         | 
| 15 | 
            +
                        maxsize: 333}
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                overpass = OverpassAPI::QL.new(opts)
         | 
| 18 | 
            +
                built_query = overpass.build_query("a query")
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                expected_built_query = "[bbox:1,3,2,4][timeout:1000][maxsize:333][out:json];a query"
         | 
| 21 | 
            +
                expect(built_query).to eq expected_built_query
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
            end
         | 
| @@ -0,0 +1,24 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
            require 'overpass_api_ruby'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            describe OverpassAPI::XML do
         | 
| 5 | 
            +
              it "should return the right built query when no opts are passed" do
         | 
| 6 | 
            +
                overpass = OverpassAPI::XML.new
         | 
| 7 | 
            +
                built_query = overpass.build_query("a query")
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                expect(built_query).to eq "<osm-script    output='json'>a query<print/></osm-script>"
         | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              it "should set the right opts" do
         | 
| 13 | 
            +
                opts = {bbox: {s: 1, n: 2, w: 3, e: 4},
         | 
| 14 | 
            +
                        timeout: 1000,
         | 
| 15 | 
            +
                        maxsize: 333}
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                overpass = OverpassAPI::XML.new(opts)
         | 
| 18 | 
            +
                built_query = overpass.build_query("a query")
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                expected_built_query = "<osm-script bbox='1,3,2,4' timeout='1000' maxsize='333' output='json'>" <<
         | 
| 21 | 
            +
                                       "a query<print/></osm-script>"
         | 
| 22 | 
            +
                expect(built_query).to eq expected_built_query
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: overpass-api-ruby
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version:  | 
| 4 | 
            +
              version: 0.2.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Bruno Salerno
         | 
| @@ -98,10 +98,15 @@ files: | |
| 98 98 | 
             
            - lib/base.rb
         | 
| 99 99 | 
             
            - lib/overpass_api_ruby.rb
         | 
| 100 100 | 
             
            - lib/ql.rb
         | 
| 101 | 
            +
            - lib/version.rb
         | 
| 101 102 | 
             
            - lib/xml.rb
         | 
| 102 103 | 
             
            - overpass-api-ruby.gemspec
         | 
| 103 | 
            -
            - spec/ | 
| 104 | 
            +
            - spec/integration/ql_spec.rb
         | 
| 105 | 
            +
            - spec/integration/xml_spec.rb
         | 
| 104 106 | 
             
            - spec/spec_helper.rb
         | 
| 107 | 
            +
            - spec/unit/base_spec.rb
         | 
| 108 | 
            +
            - spec/unit/ql_spec.rb
         | 
| 109 | 
            +
            - spec/unit/xml_spec.rb
         | 
| 105 110 | 
             
            homepage: https://github.com/BrunoSalerno/overpass-api-ruby
         | 
| 106 111 | 
             
            licenses:
         | 
| 107 112 | 
             
            - MIT
         | 
| @@ -128,5 +133,9 @@ specification_version: 4 | |
| 128 133 | 
             
            summary: This gem will allow you to perform queries to OSM Overpass API using QL or
         | 
| 129 134 | 
             
              XML
         | 
| 130 135 | 
             
            test_files:
         | 
| 131 | 
            -
            - spec/ | 
| 136 | 
            +
            - spec/integration/ql_spec.rb
         | 
| 137 | 
            +
            - spec/integration/xml_spec.rb
         | 
| 132 138 | 
             
            - spec/spec_helper.rb
         | 
| 139 | 
            +
            - spec/unit/base_spec.rb
         | 
| 140 | 
            +
            - spec/unit/ql_spec.rb
         | 
| 141 | 
            +
            - spec/unit/xml_spec.rb
         | 
| @@ -1,34 +0,0 @@ | |
| 1 | 
            -
            require 'spec_helper'
         | 
| 2 | 
            -
            require 'overpass_api_ruby'
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            describe OverpassAPI do
         | 
| 5 | 
            -
              describe OverpassAPI::XML do
         | 
| 6 | 
            -
                it "'s example works" do
         | 
| 7 | 
            -
                  options={:bbox => {:s => -34.705448, :n => -34.526562,
         | 
| 8 | 
            -
                                     :w => -58.531471, :e => -58.335159},
         | 
| 9 | 
            -
                           :timeout => 900}
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                  overpass = OverpassAPI::XML.new(options)
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                  ba_query = "<union><query type='relation'><has-kv k='route' v='subway'/></query>" <<
         | 
| 14 | 
            -
                    "</union><union><item/><recurse type='down'/></union>"
         | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 17 | 
            -
                  expect(overpass.query(ba_query)[:elements]).to be_a(Array)
         | 
| 18 | 
            -
                end
         | 
| 19 | 
            -
              end
         | 
| 20 | 
            -
             | 
| 21 | 
            -
              describe OverpassAPI::QL do
         | 
| 22 | 
            -
                it "'s example works" do
         | 
| 23 | 
            -
                  options={:bbox => {:s => -34.705448, :n => -34.526562,
         | 
| 24 | 
            -
                                     :w => -58.531471, :e => -58.335159},
         | 
| 25 | 
            -
                           :timeout => 900}
         | 
| 26 | 
            -
             | 
| 27 | 
            -
                  overpass = OverpassAPI::QL.new(options)
         | 
| 28 | 
            -
             | 
| 29 | 
            -
                  ba_query = "rel['route'='subway'];(._;>;);out body;"
         | 
| 30 | 
            -
             | 
| 31 | 
            -
                  expect(overpass.query(ba_query)[:elements]).to be_a(Array)
         | 
| 32 | 
            -
                end
         | 
| 33 | 
            -
              end
         | 
| 34 | 
            -
            end
         |