ripe_db_client 0.0.2

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a2d9a0e460815225826d0477b9f3619b01a58cad
4
+ data.tar.gz: 59e8b4e5152248880a9c0e9505fbdd415f0b93e5
5
+ SHA512:
6
+ metadata.gz: 0abb331a66f8f8994a575ae5994c88292fb7e5e1368a8eb4f4df2b592db9f0babd3890f32529a42025745f2cce569f3711465b087c2f1d410618ef3d5f227b4b
7
+ data.tar.gz: 2bad54d84436f52abd81a6973d2b5e054e0823715cf4a42304f62ea58f1a37b92a0d488dfb1f4e75beb383234785aa400deca6adb04d86273e62d8a1267d967b
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ .idea
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format documentation
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ GEM_RDB
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ ruby-2.0.0-p0
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm use `cat .ruby-version`@`cat .ruby-gemset`
data/.travis.yml ADDED
@@ -0,0 +1,18 @@
1
+ rvm:
2
+ - 1.8.7
3
+ - 1.9.2
4
+ - 1.9.3
5
+ - 2.0.0
6
+ - ree
7
+ - jruby-19mode
8
+ - jruby-18mode
9
+ - rbx-18mode
10
+ - rbx-19mode
11
+ matrix:
12
+ allow_failures:
13
+ - rvm: rbx-18mode
14
+ - rvm: jruby-18mode
15
+ - rvm: jruby-19mode
16
+
17
+
18
+ script: "bundle exec rake"
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in ripe_db_client.gemspec
4
+ gemspec
5
+
6
+
7
+
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Mike Simkins
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,53 @@
1
+ [![Gem Version][GV img]][Gem Version]
2
+ [![Build Status][BS img]][Build Status]
3
+ [![Dependency Status][DS img]][Dependency Status]
4
+ [![Coverage Status][CS img]][Coverage Status]
5
+
6
+ [Gem Version]: https://rubygems.org/gems/ripe_db_client
7
+ [Build Status]: https://travis-ci.org/msimkins/RipeDbClient
8
+ [travis pull requests]: https://travis-ci.org/msimkins/RipeDbClient/pull_requests
9
+ [Dependency Status]: https://gemnasium.com/msimkins/RipeDbClient
10
+ [Coverage Status]: https://coveralls.io/r/msimkins/RipeDbClient
11
+
12
+ [GV img]: https://badge.fury.io/rb/RipeDbClient.png
13
+ [BS img]: https://travis-ci.org/msimkins/RipeDbClient.png
14
+ [DS img]: https://gemnasium.com/msimkins/RipeDbClient.png
15
+ [CS img]: https://coveralls.io/repos/msimkins/RipeDbClient/badge.png?branch=master
16
+
17
+ # RipeDbClient
18
+
19
+ This GEM is an interface to the RIPE Database API, using their RESTFUL access service
20
+
21
+ ## Installation
22
+
23
+ Add this line to your application's Gemfile:
24
+
25
+ gem 'ripe_db_client'
26
+
27
+ And then execute:
28
+
29
+ $ bundle
30
+
31
+ Or install it yourself as:
32
+
33
+ $ gem install ripe_db_client
34
+
35
+ ## Usage
36
+
37
+ ### Create a Client Object
38
+
39
+ client = RipeDbClient::Query.new
40
+
41
+ ### Lookup a database object by type, and reference
42
+
43
+ some_hash = client.lookup('mntner','RIPE-DBM-MNT')
44
+
45
+
46
+
47
+ ## Contributing
48
+
49
+ 1. Fork it
50
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
51
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
52
+ 4. Push to the branch (`git push origin my-new-feature`)
53
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,19 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+ require 'yard'
4
+
5
+ RSpec::Core::RakeTask.new do |t|
6
+
7
+ end
8
+
9
+ YARD::Rake::YardocTask.new do |t|
10
+ t.files = ['lib/**/*.rb']
11
+ t.options = [
12
+ '--protected',
13
+ '--title', 'RipeDbClient'
14
+ ]
15
+ end
16
+
17
+ task :docs => :yard
18
+ task :default => :spec
19
+ task :test => :spec
@@ -0,0 +1,5 @@
1
+ require 'ripe_db_client/version'
2
+ require 'ripe_db_client/exceptions'
3
+ require 'httparty'
4
+ require 'ripe_db_client/query_client'
5
+ require 'ripe_db_client/query_and_parse'
@@ -0,0 +1,83 @@
1
+ module RipeDbClient
2
+
3
+ #
4
+ # Error Class - Inherits from Standard Error
5
+ #
6
+ # @author Mike Simkins
7
+ #
8
+ class Error < StandardError
9
+ end
10
+
11
+
12
+ # This error is raised when a user has not specified a value for a mandatory parameter
13
+ #
14
+ # raise RipeDbClient::BadParameter.new("search parameter missing", "dblookup")
15
+ #
16
+ # The passed message, action, and subject are optional and can later be retrieved when
17
+ # rescuing from the exception.
18
+ #
19
+ # exception.message # => "search parameter missing"
20
+ # exception.action # => "dblookup"
21
+ #
22
+ # If the message is not specified (or is nil) it will default to "You have an Invalid or Missing Parameter"
23
+ # This default can be overridden by setting default_message.
24
+ #
25
+ # exception.default_message = "Default error message"
26
+ # exception.message # => "Default error message"
27
+ #
28
+ #
29
+ # @author Mike Simkins
30
+ #
31
+ class BadParameter < Error
32
+ attr_reader :action, :subject
33
+ attr_writer :default_message
34
+
35
+ def initialize (message = nil, action = nil, subject = nil)
36
+ @message = message
37
+ @action = action
38
+ @subject = subject
39
+ @default_message = "You have an Invalid or Missing Parameter"
40
+ end
41
+
42
+
43
+ # @return [String] Returns the error message
44
+ def to_s
45
+ @message || @default_message
46
+ end
47
+ end
48
+
49
+ # This error is raised when a user tries to access an unsupported function
50
+ #
51
+ # raise RipeDbClient::Unsupported.new("my secret feature", "top secret")
52
+ #
53
+ # The passed message, action, and subject are optional and can later be retrieved when
54
+ # rescuing from the exception.
55
+ #
56
+ # exception.message # => "my secret feature"
57
+ # exception.action # => "top_secret"
58
+ #
59
+ # If the message is not specified (or is nil) it will default to "The feature you require is not currently supported"
60
+ # This default can be overridden by setting default_message.
61
+ #
62
+ # exception.default_message = "Default error message"
63
+ # exception.message # => "Default error message"
64
+ #
65
+ # @author Mike Simkins
66
+ #
67
+ class Unsupported < Error
68
+ attr_reader :action, :subject
69
+ attr_writer :default_message
70
+
71
+ def initialize (message = nil, action = nil, subject = nil)
72
+ @message = message
73
+ @action = action
74
+ @subject = subject
75
+ @default_message = "The feature you require is not currently supported"
76
+ end
77
+
78
+ # @return [String] Returns the error message
79
+ def to_s
80
+ @message || @default_message
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,34 @@
1
+ module RipeDbClient
2
+ class Query
3
+
4
+ #
5
+ # Look up the exact value of the key/value pair
6
+ # @param lookup_key [String]
7
+ # This is the name of the person you are doing the lookup for
8
+ # @param return_raw [Boolean]
9
+ # Set this to true to return the RAW(Unparsed) Hash
10
+ #
11
+ # @example lookup_person("MPS31-RIPE")
12
+ #
13
+ # @return [Hash] The Hash of values for the returned object
14
+ #
15
+
16
+ def lookup_person(lookup_key,return_raw = false)
17
+ local_result = self.lookup('person', "#{lookup_key}")
18
+ if return_raw
19
+ return local_result
20
+ else
21
+ return person_parser(local_result)
22
+ end
23
+
24
+ end
25
+
26
+
27
+
28
+ private
29
+
30
+ def person_parser(returned_hash)
31
+
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,117 @@
1
+ #
2
+ # RipeDbClient - An Interface to the RIPE Database RESTful services
3
+ #
4
+ # @author Mike Simkins
5
+ #
6
+ module RipeDbClient
7
+
8
+ #
9
+ # Query: The class encapsulating all query methods on the RIPE REST Database service
10
+ #
11
+ # @author Mike Simkins
12
+ #
13
+ class Query
14
+
15
+ # @param api_key[String] API Key generated from the RIPE DB Portal
16
+ # @param api_environment [String] Either 'production' or 'test'
17
+ # @param base_query_path [String] URI Path (do not include http:// or https:// )
18
+ #
19
+ # @return [Object] Returns the Client Instance
20
+ #
21
+ def initialize(api_key = nil, api_environment = nil ,base_query_path = 'apps.db.ripe.net/whois')
22
+ @auth_key = api_key
23
+ @app_environment = api_environment || 'test'
24
+ @base_query_path = base_query_path
25
+ self.set_secure_queries(false)
26
+ self.set_data_source('ripe')
27
+ end
28
+
29
+
30
+ # The set_data_source function allows you to manually set a database source to query for the object.
31
+ #
32
+ # @param sourceid [String] The Registry source to query - Currently supports RIPE, AFriNic, and APnic
33
+ #
34
+ # @return [String] The new Source Registry
35
+ # If the passed parameters are invalid, then the method throws a RipeDbClient::Unsupported
36
+ # exception
37
+ def set_data_source(sourceid)
38
+ if %w(ripe afrinic apnic).include? sourceid.downcase
39
+ @source_registry = sourceid
40
+ else
41
+ raise RipeDbClient::Unsupported.new('The only Supported registries are RIPE, AFRINIC, and APNIC', 'set_data_source')
42
+ end
43
+ end
44
+
45
+ # The source_registry? function allows you to manually set a database source to query for the object.
46
+ #
47
+ # @return [String] The new Source Registry
48
+ # If the passed parameters are invalid, then the method throws a RipeDbClient::Unsupported
49
+ # exception
50
+ def source_registry?
51
+ @source_registry
52
+ end
53
+
54
+
55
+ #
56
+ # As standard, queries are performed over the HTTP protocol. If you pass a true value to this function,
57
+ # it will use queries over HTTPS
58
+ # @param secure_mode [Boolean] Enable queries over HTTPS
59
+ # @return [String] - The current access URI
60
+ def set_secure_queries(secure_mode)
61
+ if secure_mode
62
+ @base_query_uri = 'https://' + @base_query_path
63
+ else
64
+ @base_query_uri = 'http://' + @base_query_path
65
+ end
66
+ @base_query_uri
67
+ end
68
+
69
+ #
70
+ # Check tp see if we are performing queries over https
71
+ # @return [Boolean] - If we are currently using https
72
+ def secure_queries?
73
+ @base_query_uri.include? 'https://'
74
+ end
75
+
76
+
77
+ #
78
+ # Returns a hash of all the data sources supported by the REST Client Interface
79
+ #
80
+ # @return [Hash] The Raw Hash of supported data sources
81
+ #
82
+ def get_supported_data_sources
83
+ service_url = "#{@base_query_uri}/sources.json"
84
+ response = HTTParty.get(service_url)
85
+ response
86
+ end
87
+
88
+
89
+ #
90
+ # Look up the exact value of the key/value pair
91
+ # @param lookup_key [String]
92
+ # This is the object type you are looking for. This should be currently one of the RIPE
93
+ # database supported types ('person', 'mntner','abuse-c'....)
94
+ # @param lookup_value [String] The actual key you are looking for ('RIPE-DBM-MNT')
95
+ # @param lookup_source [String] The optional registry to use if it is not the default, or current registry
96
+ #
97
+ # @example lookup("mntner","RIPE-DBM-MNT")
98
+ # @example lookup("person","RIPE-DBM-MNT")
99
+ #
100
+ # @return [Hash] The Hash of values for the returned object
101
+ #
102
+ def lookup(lookup_key, lookup_value, lookup_source = nil)
103
+ if lookup_key.nil? || lookup_key.empty?
104
+ raise RipeDbClient::BadParameter.new('lookup_key cannot be empty, or nil', 'lookup')
105
+ end
106
+ if lookup_value.nil? || lookup_value.empty?
107
+ raise RipeDbClient::BadParameter.new('lookup_value cannot be empty, or nil', 'lookup')
108
+ end
109
+ if lookup_source.nil? || lookup_source.empty?
110
+ lookup_source = @source_registry
111
+ end
112
+ service_url = "#{@base_query_uri}/lookup/#{lookup_source.downcase}/#{lookup_key.downcase}/#{lookup_value}.json"
113
+ response = HTTParty.get(service_url)
114
+ response
115
+ end
116
+ end
117
+ end
@@ -0,0 +1,4 @@
1
+ module RipeDbClient
2
+ # Gem version number
3
+ VERSION = "0.0.2"
4
+ end
@@ -0,0 +1,36 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'ripe_db_client/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'ripe_db_client'
8
+ spec.version = RipeDbClient::VERSION
9
+ spec.authors = ['Mike Simkins']
10
+ spec.email = ['software@g7obs.com']
11
+ spec.description = %q{Programatical Interface to the RIPE Database API (REST Client) - THIS IS NOT YET READY FOR PRIME TIME}
12
+ spec.summary = %q{This provides a number of methods to query the RIPE Database, or to Update the Database }
13
+ spec.license = "MIT"
14
+
15
+ spec.files = `git ls-files`.split($/)
16
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
+ spec.require_paths = ['lib']
19
+
20
+ # RubyForge info
21
+ spec.homepage = 'http://ripedbclient.rubyforge.org'
22
+ spec.rubyforge_project = 'ripedbclient'
23
+
24
+ spec.add_development_dependency 'bundler', '~> 1.3.0'
25
+ spec.add_development_dependency 'rake', '~> 10.0.0'
26
+ spec.add_development_dependency 'rspec', '~> 2.12.0'
27
+ spec.add_development_dependency 'yard', '~> 0.8.0'
28
+ spec.add_development_dependency 'redcarpet', '~> 2.2.0'
29
+ spec.add_development_dependency 'vcr', '~> 2.4.0'
30
+ spec.add_development_dependency 'webmock', '~> 1.10.0'
31
+ spec.add_development_dependency 'simplecov', '~> 0.7.0'
32
+ spec.add_development_dependency 'coveralls', '~> 0.6.0'
33
+
34
+ spec.add_dependency 'httparty', '~> 0.11.0'
35
+ spec.add_dependency 'hashie', '~> 2.0.0'
36
+ end
@@ -0,0 +1,28 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://apps.db.ripe.net/whois/sources.json
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ Date:
16
+ - Mon, 15 Apr 2013 14:34:35 GMT
17
+ Content-Type:
18
+ - application/json
19
+ Connection:
20
+ - close
21
+ Transfer-Encoding:
22
+ - chunked
23
+ body:
24
+ encoding: UTF-8
25
+ string: "{\n\t\t\"whois-resources\":{\n\t\t\"service\":\"getSupportedDataSources\",\n\t\t\"link\":{\n\t\t\"xlink:type\":\"locator\",\n\t\t\"xlink:href\":\"http://apps.db.ripe.net/whois/sources\"}\n\t\t,\n\t\t\"sources\":{\n\t\t\"source\":[\n\t\t{\n\t\t\"name\":\"RIPE\",\n\t\t\"id\":\"ripe\"}\n\t\t,\n\t\t{\n\t\t\"name\":\"APNIC\",\n\t\t\"id\":\"apnic\"}\n\t\t,\n\t\t{\n\t\t\"name\":\"AfriNIC\",\n\t\t\"id\":\"afrinic\"}\n\t\t,\n\t\t{\n\t\t\"name\":\"TEST\",\n\t\t\"id\":\"test\"}\n\t\t]\n\t\t}\n\t\t,\n\t\t\"grs-sources\":{\n\t\t\"source\":[\n\t\t{\n\t\t\"name\":\"RIPE-GRS\",\n\t\t\"id\":\"ripe-grs\",\n\t\t\"grs-id\":\"ripe-grs\"}\n\t\t,\n\t\t{\n\t\t\"name\":\"AFRINIC-GRS\",\n\t\t\"id\":\"afrinic-grs\",\n\t\t\"grs-id\":\"afrinic-grs\"}\n\t\t,\n\t\t{\n\t\t\"name\":\"APNIC-GRS\",\n\t\t\"id\":\"apnic-grs\",\n\t\t\"grs-id\":\"apnic-grs\"}\n\t\t,\n\t\t{\n\t\t\"name\":\"ARIN-GRS\",\n\t\t\"id\":\"arin-grs\",\n\t\t\"grs-id\":\"arin-grs\"}\n\t\t,\n\t\t{\n\t\t\"name\":\"LACNIC-GRS\",\n\t\t\"id\":\"lacnic-grs\",\n\t\t\"grs-id\":\"lacnic-grs\"}\n\t\t,\n\t\t{\n\t\t\"name\":\"JPIRR-GRS\",\n\t\t\"id\":\"jpirr-grs\",\n\t\t\"grs-id\":\"jpirr-grs\"}\n\t\t,\n\t\t{\n\t\t\"name\":\"RADB-GRS\",\n\t\t\"id\":\"radb-grs\",\n\t\t\"grs-id\":\"radb-grs\"}\n\t\t]\n\t\t}\n\t\t}\n\t\t}\n\t\t"
26
+ http_version:
27
+ recorded_at: Mon, 15 Apr 2013 14:34:35 GMT
28
+ recorded_with: VCR 2.4.0
@@ -0,0 +1,38 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://apps.db.ripe.net/whois/lookup/ripe/person/MPS31-RIPE.json
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ Date:
16
+ - Mon, 15 Apr 2013 12:57:07 GMT
17
+ Content-Type:
18
+ - application/json
19
+ Connection:
20
+ - close
21
+ Transfer-Encoding:
22
+ - chunked
23
+ body:
24
+ encoding: UTF-8
25
+ string: "{\n\t\t\"whois-resources\":{\n\t\t\"service\":\"lookup\",\n\t\t\"xsi:noNamespaceSchemaLocation\":\"http://apps.db.ripe.net/whois/xsd/whois-resources.xsd\",\n\t\t\"link\":{\n\t\t\"xlink:type\":\"locator\",\n\t\t\"xlink:href\":\"http://apps.db.ripe.net/whois/lookup/ripe/person/MPS31-RIPE.json\"}\n\t\t,\n\t\t\"objects\":{\n\t\t\"object\":{\n\t\t\"type\":\"person\",\n\t\t\"link\":{\n\t\t\"xlink:type\":\"locator\",\n\t\t\"xlink:href\":\"http://apps.db.ripe.net/whois/lookup/ripe/person/MPS31-RIPE\"}\n\t\t,\n\t\t\"source\":{\n\t\t\"id\":\"ripe\"}\n\t\t,\n\t\t\"primary-key\":{\n\t\t\"attribute\":{\n\t\t\"name\":\"nic-hdl\",\n\t\t\"value\":\"MPS31-RIPE\"}\n\t\t}\n\t\t,\n\t\t\"attributes\":{\n\t\t\"attribute\":[\n\t\t{\n\t\t\"name\":\"person\",\n\t\t\"value\":\"Mike
26
+ Simkins\"}\n\t\t,\n\t\t{\n\t\t\"name\":\"address\",\n\t\t\"value\":\"SunGard
27
+ Availability Services\"}\n\t\t,\n\t\t{\n\t\t\"name\":\"address\",\n\t\t\"value\":\"Lighterman
28
+ House\"}\n\t\t,\n\t\t{\n\t\t\"name\":\"address\",\n\t\t\"value\":\"3 Clove
29
+ Crescent\"}\n\t\t,\n\t\t{\n\t\t\"name\":\"address\",\n\t\t\"value\":\"London
30
+ E14 2BB\"}\n\t\t,\n\t\t{\n\t\t\"name\":\"phone\",\n\t\t\"value\":\"+44 (0)
31
+ 20 8080 8060\"}\n\t\t,\n\t\t{\n\t\t\"name\":\"e-mail\",\n\t\t\"value\":\"mike.simkins@sungard.com\"}\n\t\t,\n\t\t{\n\t\t\"name\":\"notify\",\n\t\t\"value\":\"mike.simkins@sungard.com\"}\n\t\t,\n\t\t{\n\t\t\"name\":\"nic-hdl\",\n\t\t\"value\":\"MPS31-RIPE\"}\n\t\t,\n\t\t{\n\t\t\"name\":\"mnt-by\",\n\t\t\"value\":\"CWS-RIPE-MNT\",\n\t\t\"referenced-type\":\"mntner\",\n\t\t\"link\":{\n\t\t\"xlink:type\":\"locator\",\n\t\t\"xlink:href\":\"http://apps.db.ripe.net/whois/lookup/ripe/mntner/CWS-RIPE-MNT\"}\n\t\t}\n\t\t,\n\t\t{\n\t\t\"name\":\"changed\",\n\t\t\"value\":\"mike.simkins@sungard.com
32
+ 20040817\"}\n\t\t,\n\t\t{\n\t\t\"name\":\"changed\",\n\t\t\"value\":\"mike.simkins@sungard.com
33
+ 20060717\"}\n\t\t,\n\t\t{\n\t\t\"name\":\"changed\",\n\t\t\"value\":\"mike.simkins@sungard.com
34
+ 20061227\"}\n\t\t,\n\t\t{\n\t\t\"name\":\"changed\",\n\t\t\"value\":\"mike.simkins@sungard.com
35
+ 20130111\"}\n\t\t,\n\t\t{\n\t\t\"name\":\"source\",\n\t\t\"value\":\"RIPE\"}\n\t\t]\n\t\t}\n\t\t}\n\t\t}\n\t\t}\n\t\t}\n\t\t"
36
+ http_version:
37
+ recorded_at: Mon, 15 Apr 2013 12:57:07 GMT
38
+ recorded_with: VCR 2.4.0
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+
3
+
4
+ describe RipeDbClient do
5
+
6
+ before(:each) do
7
+ @client = RipeDbClient::Query.new('test', 'test')
8
+ end
9
+
10
+ describe 'RipeDbClient::Query Object' do
11
+ describe 'Query and Parse Functions' do
12
+ describe 'Person Object' do
13
+
14
+ it 'SHOULD be able to look up a RAW PERSON record' do
15
+ VCR.use_cassette('person_object') do
16
+ response = @client.lookup_person('MPS31-RIPE', true)
17
+ response.should_not be_nil
18
+ end
19
+ end
20
+
21
+ it 'SHOULD be able to provide a COOKED PERSON record' do
22
+ VCR.use_cassette('person_object') do
23
+ response = @client.lookup_person('MPS31-RIPE', false)
24
+ response.should be_nil
25
+ end
26
+ end
27
+
28
+ end
29
+
30
+ end
31
+
32
+ end
33
+
34
+ end
@@ -0,0 +1,78 @@
1
+ require 'spec_helper'
2
+
3
+
4
+ describe RipeDbClient do
5
+
6
+ before(:each) do
7
+ @client = RipeDbClient::Query.new('test', 'test')
8
+ end
9
+
10
+ describe "RipeDbClient::Query Object" do
11
+
12
+ it "SHOULD create a new client" do
13
+ c = RipeDbClient::Query.new
14
+ c.should_not be_nil
15
+ end
16
+
17
+ it "SHOULD default to the RIPE registry on creation" do
18
+ c = RipeDbClient::Query.new
19
+ c.source_registry?.should == "ripe"
20
+ end
21
+
22
+ it "SHOULD change the registry if you call the set_data_source function with a valid registry" do
23
+ c = RipeDbClient::Query.new
24
+ c.source_registry?.should == "ripe"
25
+ c.set_data_source("apnic")
26
+ c.source_registry?.should == "apnic"
27
+ end
28
+
29
+ it "SHOULD NOT change the registry if you call the set_data_source function with an invalid registry" do
30
+ c = RipeDbClient::Query.new
31
+ c.source_registry?.should == "ripe"
32
+ expect { c.set_data_source("arin") }.to raise_error(RipeDbClient::Unsupported, 'The only Supported registries are RIPE, AFRINIC, and APNIC')
33
+ c.source_registry?.should == "ripe"
34
+ end
35
+
36
+ it "SHOULD use http as its default mechanism" do
37
+ c = RipeDbClient::Query.new
38
+ c.secure_queries?.should be_false
39
+ end
40
+
41
+ it "SHOULD use https for queries if you set it up via set_secure_queries" do
42
+ c = RipeDbClient::Query.new
43
+ c.secure_queries?.should be_false
44
+ c.set_secure_queries(true)
45
+ c.secure_queries?.should be_true
46
+
47
+ end
48
+
49
+ it "SHOULD retrieve a list of the available query sources" do
50
+ c = RipeDbClient::Query.new
51
+ VCR.use_cassette('data_sources_object') do
52
+ response = c.get_supported_data_sources
53
+ response.should_not be_nil
54
+ end
55
+ end
56
+
57
+ it "SHOULD raise an exception if the lookup_key is nil" do
58
+ c = RipeDbClient::Query.new
59
+ expect { c.lookup(nil,"something") }.to raise_error(RipeDbClient::BadParameter, 'lookup_key cannot be empty, or nil')
60
+ end
61
+
62
+ it "SHOULD raise an exception if the lookup_key is empty" do
63
+ c = RipeDbClient::Query.new
64
+ expect { c.lookup("","something") }.to raise_error(RipeDbClient::BadParameter, 'lookup_key cannot be empty, or nil')
65
+ end
66
+
67
+ it "SHOULD raise an exception if the lookup_value is nil" do
68
+ c = RipeDbClient::Query.new
69
+ expect { c.lookup("something", nil) }.to raise_error(RipeDbClient::BadParameter, 'lookup_value cannot be empty, or nil')
70
+ end
71
+
72
+ it "SHOULD raise an exception if the lookup_value is empty" do
73
+ c = RipeDbClient::Query.new
74
+ expect { c.lookup("something", "") }.to raise_error(RipeDbClient::BadParameter, 'lookup_value cannot be empty, or nil')
75
+ end
76
+ end
77
+ end
78
+
@@ -0,0 +1,25 @@
1
+ require 'simplecov'
2
+ require 'coveralls'
3
+
4
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
5
+ SimpleCov::Formatter::HTMLFormatter,
6
+ Coveralls::SimpleCov::Formatter
7
+ ]
8
+ SimpleCov.start
9
+
10
+
11
+ require 'ripe_db_client'
12
+ require 'vcr'
13
+
14
+ RSpec.configure do |config|
15
+ config.treat_symbols_as_metadata_keys_with_true_values = true
16
+ config.run_all_when_everything_filtered = true
17
+ config.filter_run :focus
18
+ config.order = 'random'
19
+ end
20
+
21
+
22
+ VCR.configure do |c|
23
+ c.cassette_library_dir = 'spec/fixtures/vcr_cassettes'
24
+ c.hook_into :webmock
25
+ end
metadata ADDED
@@ -0,0 +1,227 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ripe_db_client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Mike Simkins
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-04-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 1.3.0
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 1.3.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 10.0.0
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: 10.0.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 2.12.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 2.12.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: yard
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 0.8.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 0.8.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: redcarpet
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: 2.2.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: 2.2.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: vcr
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: 2.4.0
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: 2.4.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: webmock
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ~>
102
+ - !ruby/object:Gem::Version
103
+ version: 1.10.0
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: 1.10.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: simplecov
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: 0.7.0
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ~>
123
+ - !ruby/object:Gem::Version
124
+ version: 0.7.0
125
+ - !ruby/object:Gem::Dependency
126
+ name: coveralls
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ~>
130
+ - !ruby/object:Gem::Version
131
+ version: 0.6.0
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ~>
137
+ - !ruby/object:Gem::Version
138
+ version: 0.6.0
139
+ - !ruby/object:Gem::Dependency
140
+ name: httparty
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ~>
144
+ - !ruby/object:Gem::Version
145
+ version: 0.11.0
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ~>
151
+ - !ruby/object:Gem::Version
152
+ version: 0.11.0
153
+ - !ruby/object:Gem::Dependency
154
+ name: hashie
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ~>
158
+ - !ruby/object:Gem::Version
159
+ version: 2.0.0
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ~>
165
+ - !ruby/object:Gem::Version
166
+ version: 2.0.0
167
+ description: Programatical Interface to the RIPE Database API (REST Client) - THIS
168
+ IS NOT YET READY FOR PRIME TIME
169
+ email:
170
+ - software@g7obs.com
171
+ executables: []
172
+ extensions: []
173
+ extra_rdoc_files: []
174
+ files:
175
+ - .gitignore
176
+ - .rspec
177
+ - .ruby-gemset
178
+ - .ruby-version
179
+ - .rvmrc
180
+ - .travis.yml
181
+ - Gemfile
182
+ - LICENSE.txt
183
+ - README.md
184
+ - Rakefile
185
+ - lib/ripe_db_client.rb
186
+ - lib/ripe_db_client/exceptions.rb
187
+ - lib/ripe_db_client/query_and_parse.rb
188
+ - lib/ripe_db_client/query_client.rb
189
+ - lib/ripe_db_client/version.rb
190
+ - ripe_db_client.gemspec
191
+ - spec/fixtures/vcr_cassettes/data_sources_object.yml
192
+ - spec/fixtures/vcr_cassettes/person_object.yml
193
+ - spec/query_and_parse_spec.rb
194
+ - spec/ripe_db_client_spec.rb
195
+ - spec/spec_helper.rb
196
+ homepage: http://ripedbclient.rubyforge.org
197
+ licenses:
198
+ - MIT
199
+ metadata: {}
200
+ post_install_message:
201
+ rdoc_options: []
202
+ require_paths:
203
+ - lib
204
+ required_ruby_version: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - '>='
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ required_rubygems_version: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - '>='
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ requirements: []
215
+ rubyforge_project: ripedbclient
216
+ rubygems_version: 2.0.3
217
+ signing_key:
218
+ specification_version: 4
219
+ summary: This provides a number of methods to query the RIPE Database, or to Update
220
+ the Database
221
+ test_files:
222
+ - spec/fixtures/vcr_cassettes/data_sources_object.yml
223
+ - spec/fixtures/vcr_cassettes/person_object.yml
224
+ - spec/query_and_parse_spec.rb
225
+ - spec/ripe_db_client_spec.rb
226
+ - spec/spec_helper.rb
227
+ has_rdoc: