iprofiler 0.1.0

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.
@@ -0,0 +1,14 @@
1
+ Autotest.add_hook(:initialize) do |at|
2
+ at.add_exception(".git")
3
+ end
4
+
5
+ Autotest.add_hook(:initialize) do |at|
6
+ at.clear_mappings
7
+
8
+ at.add_mapping %r%/^lib/(.*)\.rb$% do |_, m|
9
+ possible = File.basename(m[1])
10
+ files_matching %r%^test/.*(#{possible}_test|test_#{possible})\.rb$%
11
+ end
12
+
13
+ at.add_mapping(%r%^test/.*\.rb$%) {|filename, _| filename }
14
+ end
@@ -0,0 +1,5 @@
1
+ README.rdoc
2
+ lib/**/*.rb
3
+ bin/*
4
+ features/**/*.feature
5
+ LICENSE
File without changes
@@ -0,0 +1,41 @@
1
+ *.gem
2
+ *.rbc
3
+ *.sw[a-p]
4
+ *.tmproj
5
+ *.tmproject
6
+ *.un~
7
+ *~
8
+ .DS_Store
9
+ .Spotlight-V100
10
+ .Trashes
11
+ ._*
12
+ .bundle
13
+ .config
14
+ .directory
15
+ .elc
16
+ .redcar
17
+ .yardoc
18
+ .rvmrc
19
+ /.emacs.desktop
20
+ /.emacs.desktop.lock
21
+ Desktop.ini
22
+ Gemfile.lock
23
+ Icon?
24
+ InstalledFiles
25
+ Session.vim
26
+ Thumbs.db
27
+ \#*\#
28
+ _yardoc
29
+ auto-save-list
30
+ coverage
31
+ doc/
32
+ lib/bundler/man
33
+ pkg
34
+ pkg/*
35
+ rdoc
36
+ spec/reports
37
+ test/tmp
38
+ test/version_tmp
39
+ tmp
40
+ tmtags
41
+ tramp
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
@@ -0,0 +1,5 @@
1
+ rvm:
2
+ - 1.8.7
3
+ - 1.9.2
4
+ - 1.9.3
5
+ - ree
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source 'http://rubygems.org'
2
+
3
+ platforms :jruby do
4
+ gem 'jruby-openssl', '~> 0.7'
5
+ end
6
+
7
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 Wynn Netherland
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,45 @@
1
+ # Iprofiler
2
+
3
+ Ruby wrapper for the [Iprofile API](http://www.iprofile.net/developer). Heavily inspired by [Wynn Netherland's](https://github.com/pengwynn) [LinkedIn gem](https://github.com/pengwynn/linkedin).
4
+
5
+ Travis CI : [![Build Status](https://secure.travis-ci.org/kandadaboggu/iprofiler.png)](http://travis-ci.org/kandadaboggu/iprofiler)
6
+
7
+ ## Installation
8
+
9
+ [sudo] gem install iprofiler
10
+
11
+ ## Usage
12
+
13
+ require 'rubygems'
14
+ require 'iprofiler'
15
+
16
+ # get your api keys at https://www.linkedin.com/secure/developer
17
+ client = Iprofiler::Client.new('your_consumer_key', 'your_consumer_secret')
18
+ reply = client.company_lookup(:ip_address => "10.10.20.30")
19
+ if reply.status == :found
20
+ company = reply.company
21
+ if company.type == :isp
22
+ else
23
+ end
24
+ else
25
+ reply.code
26
+ reply.message
27
+ end
28
+
29
+ ## TODO
30
+
31
+
32
+ ## Note on Patches/Pull Requests
33
+
34
+ * Fork the project.
35
+ * Make your feature addition or bug fix.
36
+ * Add tests for it. This is important so I don't break it in a
37
+ future version unintentionally.
38
+ * Commit, do not mess with rakefile, version, or history.
39
+ (if you want to have your own version, that is fine but
40
+ bump version in a commit by itself I can ignore when I pull)
41
+ * Send me a pull request. Bonus points for topic branches.
42
+
43
+ ## Copyright
44
+
45
+ Copyright (c) 2013 [Harish Shetty](http://kandadaboggu.com). See LICENSE for details.
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env rake
2
+
3
+ require 'bundler'
4
+ Bundler::GemHelper.install_tasks
5
+
6
+ require 'rspec/core/rake_task'
7
+ RSpec::Core::RakeTask.new(:spec)
8
+
9
+ task :test => :spec
10
+ task :default => :spec
11
+
12
+ require 'rdoc/task'
13
+ require File.expand_path('../lib/iprofiler/version', __FILE__)
14
+ RDoc::Task.new do |rdoc|
15
+ rdoc.rdoc_dir = 'rdoc'
16
+ rdoc.title = "iprofiler #{Iprofiler::VERSION::STRING}"
17
+ rdoc.rdoc_files.include('README*')
18
+ rdoc.rdoc_files.include('lib/**/*.rb')
19
+ end
@@ -0,0 +1,5 @@
1
+ # Changelog
2
+
3
+ ## 0.0.1 - March 05, 2013
4
+
5
+ * Initial release
@@ -0,0 +1,24 @@
1
+ # encoding: utf-8
2
+ require File.expand_path('../lib/iprofiler/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.add_dependency 'hashie', '~> 1.2'
6
+ gem.add_dependency 'multi_json', '~> 1.0'
7
+ gem.add_development_dependency 'json', '~> 1.6'
8
+ gem.add_development_dependency 'rake', '~> 0.9'
9
+ gem.add_development_dependency 'rdoc', '~> 3.8'
10
+ gem.add_development_dependency 'rspec', '~> 2.6'
11
+ gem.add_development_dependency 'simplecov', '~> 0.5'
12
+ gem.add_development_dependency 'vcr', '~> 1.10'
13
+ gem.add_development_dependency 'webmock', '~> 1.7'
14
+ gem.authors = ["Harish Shetty"]
15
+ gem.description = %q{Ruby wrapper for the iProfile API}
16
+ gem.email = ['kandada.boggu@gmail.com']
17
+ gem.files = `git ls-files`.split("\n")
18
+ gem.homepage = 'http://github.com/kandadaboggu/iprofiler'
19
+ gem.name = 'iprofiler'
20
+ gem.require_paths = ['lib']
21
+ gem.summary = gem.description
22
+ gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
23
+ gem.version = Iprofiler::VERSION::STRING
24
+ end
@@ -0,0 +1,27 @@
1
+ module Iprofiler
2
+
3
+ class << self
4
+ attr_accessor :api_key, :api_secret, :api_host
5
+
6
+ # config/initializers/iprofiler.rb (for instance)
7
+ #
8
+ # Iprofiler.configure do |config|
9
+ # config.api_key = 'consumer_key'
10
+ # config.api_secret = 'consumer_secret'
11
+ # config.api_host = 'http://visitoriq2.iprofile.net'
12
+ # end
13
+ #
14
+ # elsewhere
15
+ #
16
+ # client = Iprofiler::Client.new
17
+ def configure
18
+ yield self
19
+ true
20
+ end
21
+ end
22
+
23
+ autoload :Api, "iprofiler/api"
24
+ autoload :Client, "iprofiler/client"
25
+ autoload :Mash, "iprofiler/mash"
26
+ autoload :Version, "iprofiler/version"
27
+ end
@@ -0,0 +1,5 @@
1
+ module Iprofiler
2
+ module Api
3
+ autoload :QueryMethods, "iprofiler/api/query_methods"
4
+ end
5
+ end
@@ -0,0 +1,19 @@
1
+ module Iprofiler
2
+ module Api
3
+
4
+ module QueryMethods
5
+
6
+ def company_lookup(options={})
7
+ get(company_lookup_path, options)
8
+ end
9
+
10
+ private
11
+
12
+ def company_lookup_path
13
+ "/ip.json"
14
+ end
15
+
16
+ end
17
+
18
+ end
19
+ end
@@ -0,0 +1,69 @@
1
+ require 'cgi'
2
+ require 'openssl'
3
+ require 'base64'
4
+ require 'net/http'
5
+
6
+
7
+ module Iprofiler
8
+
9
+ class Client
10
+ include Api::QueryMethods
11
+
12
+ attr_accessor :api_key, :api_secret, :api_host
13
+
14
+ def initialize(api_key=Iprofiler.api_key, api_secret=Iprofiler.api_secret, api_host=Iprofiler.api_host)
15
+ @api_key = api_key
16
+ @api_secret = api_secret
17
+ @api_host = api_host
18
+ end
19
+
20
+ def valid_credentials?
21
+ company_lookup({}).code == 200
22
+ end
23
+
24
+ protected
25
+
26
+ def get(api_path, options)
27
+ response = Net::HTTP.get_response(request_uri(api_path, options))
28
+ Mash.from_json(response.body).tap do |reply|
29
+ code = response.code.to_i
30
+ reply.code = code
31
+ if code == 200
32
+ reply.status = reply.status.to_sym
33
+ else
34
+ reply.status = :error
35
+ end
36
+ # email requests are served by Leadiq server
37
+ email = options['email'] || options[:email]
38
+ reply.email = email unless email.nil?
39
+ end
40
+ end
41
+
42
+ private
43
+
44
+ def request_uri api_path, options
45
+ authp = auth_params(api_path)
46
+ requestp = options.map{|k, v| "#{k}=#{CGI.escape(v)}"}.join("&")
47
+ URI("#{api_host}#{api_path}?#{authp}&#{requestp}")
48
+ end
49
+
50
+ def auth_params(api_path, verb="get")
51
+ epoch = Time.now.to_i
52
+ signature = "#{verb.upcase}\n#{epoch}\n#{api_path}"
53
+ "api_key=#{CGI.escape(api_key)}&epoch=#{epoch}&signature=#{sign_data(signature)}"
54
+ end
55
+
56
+ def sign_data(str)
57
+ CGI.escape(
58
+ Base64.encode64(
59
+ OpenSSL::HMAC.digest(
60
+ OpenSSL::Digest::Digest.new('sha1'),
61
+ api_secret, str
62
+ )
63
+ ).chomp.gsub(/\n/,'')
64
+ )
65
+ end
66
+
67
+ end
68
+
69
+ end
@@ -0,0 +1,14 @@
1
+ require 'hashie'
2
+ require 'multi_json'
3
+
4
+ module Iprofiler
5
+ class Mash < ::Hashie::Mash
6
+
7
+ # a simple helper to convert a json string to a Mash
8
+ def self.from_json(json_string)
9
+ result_hash = ::MultiJson.decode(json_string)
10
+ new(result_hash)
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,11 @@
1
+ module Iprofiler
2
+
3
+ module VERSION #:nodoc:
4
+ MAJOR = 0
5
+ MINOR = 1
6
+ PATCH = 0
7
+ PRE = nil
8
+ STRING = [MAJOR, MINOR, PATCH, PRE].compact.join('.')
9
+ end
10
+
11
+ end
@@ -0,0 +1,137 @@
1
+ require 'helper'
2
+
3
+ describe Iprofiler::Api do
4
+ let(:api_key) { "4QNFkKjPTGK2NXAWsQQU" }
5
+ let(:api_secret) { "sAzNf5Dsm5sYweErySxd" }
6
+ let(:api_host) { "http://localhost:3000" }
7
+ let(:client) { Iprofiler::Client.new }
8
+
9
+ before do
10
+ Iprofiler.configure do |config|
11
+ config.api_key = api_key
12
+ config.api_secret = api_secret
13
+ config.api_host = api_host
14
+ end
15
+ end
16
+
17
+ describe "configuration" do
18
+ it "should be able to save the global connection parameters" do
19
+ Iprofiler.api_key.should eq(api_key)
20
+ Iprofiler.api_secret.should eq(api_secret)
21
+ Iprofiler.api_host.should eq(api_host)
22
+ end
23
+
24
+ describe "client" do
25
+
26
+ let(:new_api_key) { "new_key" }
27
+ let(:new_api_secret) { "new_secret" }
28
+ let(:new_api_host) { "new_host" }
29
+
30
+ it "connection parameters should inherit from connection parameters" do
31
+ client = Iprofiler::Client.new
32
+ client.api_key.should eq(api_key)
33
+ client.api_secret.should eq(api_secret)
34
+ client.api_host.should eq(api_host)
35
+ end
36
+
37
+ it "api key should be overridable" do
38
+ client = Iprofiler::Client.new(new_api_key)
39
+ client.api_key.should eq(new_api_key)
40
+ client.api_secret.should eq(api_secret)
41
+ client.api_host.should eq(api_host)
42
+ end
43
+
44
+ it "api secret should be overridable" do
45
+ client = Iprofiler::Client.new(new_api_key, new_api_secret)
46
+ client.api_key.should eq(new_api_key)
47
+ client.api_secret.should eq(new_api_secret)
48
+ client.api_host.should eq(api_host)
49
+ end
50
+
51
+ it "api host should be overridable" do
52
+ client = Iprofiler::Client.new(new_api_key, new_api_secret, new_api_host)
53
+ client.api_key.should eq(new_api_key)
54
+ client.api_secret.should eq(new_api_secret)
55
+ client.api_host.should eq(new_api_host)
56
+ end
57
+
58
+ end
59
+ end
60
+
61
+ describe "authentication" do
62
+
63
+ it "should be able to authenticate" do
64
+ client.valid_credentials?.should eq(true)
65
+ end
66
+
67
+ it "should not be able to authenticate" do
68
+ client.api_key = "DUMMY KEY"
69
+ client.valid_credentials?.should eq(false)
70
+ end
71
+ end
72
+
73
+
74
+ describe "company lookup" do
75
+
76
+ let(:company) {
77
+ Iprofiler::Mash.new(
78
+ :name=>"Bank Of America",
79
+ :type=>:company,
80
+ :industry=>"Financial Services",
81
+ :url=>"bankofamerica.com",
82
+ :employees=>272600,
83
+ :email => "foo@boa.com",
84
+ :ip_address => "12.13.77.156",
85
+ :employee_range=>"More than 50,000"
86
+ )
87
+ }
88
+
89
+ let(:customer_request_id) { "foo bar 28383"}
90
+
91
+ it "should be able to query using company name" do
92
+ reply = client.company_lookup(:company_name => company.name)
93
+ reply.code.should eq(200)
94
+ reply.status.should eq(:found)
95
+ end
96
+
97
+ it "should be able to query using domain name" do
98
+ reply = client.company_lookup(:domain => company.url)
99
+ reply.code.should eq(200)
100
+ reply.status.should eq(:found)
101
+ end
102
+
103
+ it "should be able to query using ip address" do
104
+ reply = client.company_lookup(:ip_address => company.ip_address)
105
+ reply.code.should eq(200)
106
+ reply.status.should eq(:found)
107
+ end
108
+
109
+ it "should be able to query using employee email id" do
110
+ reply = client.company_lookup(:email => company.email)
111
+ reply.code.should eq(200)
112
+ reply.status.should eq(:found)
113
+ end
114
+
115
+ it "should not be able to query using empty parameters" do
116
+ reply = client.company_lookup({})
117
+ reply.code.should eq(200)
118
+ reply.status.should_not eq(:found)
119
+ end
120
+
121
+ it "should return request closures" do
122
+ reply = client.company_lookup(
123
+ :company_name => company.name,
124
+ :domain => company.url,
125
+ :ip_address => company.ip_address,
126
+ :email => company.email,
127
+ :customer_request_id => customer_request_id
128
+ )
129
+ reply.company_name.should eq(company.name)
130
+ reply.domain.should eq(company.url)
131
+ reply.ip_address.should eq(company.ip_address)
132
+ reply.email.should eq(company.email)
133
+ reply.customer_request_id.should eq(customer_request_id)
134
+ end
135
+ end
136
+
137
+ end
@@ -0,0 +1,26 @@
1
+ $:.unshift File.expand_path('..', __FILE__)
2
+ $:.unshift File.expand_path('../../lib', __FILE__)
3
+ require 'simplecov'
4
+ SimpleCov.start
5
+ require 'iprofiler'
6
+ require 'rspec'
7
+ require 'webmock/rspec'
8
+ require 'vcr'
9
+
10
+ VCR.config do |c|
11
+ c.cassette_library_dir = 'spec/fixtures/cassette_library'
12
+ c.stub_with :webmock
13
+ c.ignore_localhost = true
14
+ c.default_cassette_options = { :record => :none }
15
+ end
16
+
17
+ RSpec.configure do |c|
18
+ c.extend VCR::RSpec::Macros
19
+ end
20
+
21
+ def expect_post(url, body, result = nil)
22
+ a_request(:post, url).with({
23
+ :body => fixture(body).read,
24
+ :headers => { :content_type => 'application/xml' }
25
+ }).should have_been_made.once
26
+ end
metadata ADDED
@@ -0,0 +1,210 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: iprofiler
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Harish Shetty
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-03-09 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: hashie
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '1.2'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '1.2'
30
+ - !ruby/object:Gem::Dependency
31
+ name: multi_json
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '1.0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '1.0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: json
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: '1.6'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '1.6'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rake
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: '0.9'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: '0.9'
78
+ - !ruby/object:Gem::Dependency
79
+ name: rdoc
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: '3.8'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: '3.8'
94
+ - !ruby/object:Gem::Dependency
95
+ name: rspec
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: '2.6'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: '2.6'
110
+ - !ruby/object:Gem::Dependency
111
+ name: simplecov
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: '0.5'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: '0.5'
126
+ - !ruby/object:Gem::Dependency
127
+ name: vcr
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ~>
132
+ - !ruby/object:Gem::Version
133
+ version: '1.10'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ~>
140
+ - !ruby/object:Gem::Version
141
+ version: '1.10'
142
+ - !ruby/object:Gem::Dependency
143
+ name: webmock
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ~>
148
+ - !ruby/object:Gem::Version
149
+ version: '1.7'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ~>
156
+ - !ruby/object:Gem::Version
157
+ version: '1.7'
158
+ description: Ruby wrapper for the iProfile API
159
+ email:
160
+ - kandada.boggu@gmail.com
161
+ executables: []
162
+ extensions: []
163
+ extra_rdoc_files: []
164
+ files:
165
+ - .autotest
166
+ - .document
167
+ - .gemtest
168
+ - .gitignore
169
+ - .rspec
170
+ - .travis.yml
171
+ - Gemfile
172
+ - LICENSE
173
+ - README.markdown
174
+ - Rakefile
175
+ - changelog.markdown
176
+ - iprofiler.gemspec
177
+ - lib/iprofiler.rb
178
+ - lib/iprofiler/api.rb
179
+ - lib/iprofiler/api/query_methods.rb
180
+ - lib/iprofiler/client.rb
181
+ - lib/iprofiler/mash.rb
182
+ - lib/iprofiler/version.rb
183
+ - spec/cases/api_spec.rb
184
+ - spec/fixtures/cassette_library/Iprofile_Api/CompanyLookup_API.yml
185
+ - spec/helper.rb
186
+ homepage: http://github.com/kandadaboggu/iprofiler
187
+ licenses: []
188
+ post_install_message:
189
+ rdoc_options: []
190
+ require_paths:
191
+ - lib
192
+ required_ruby_version: !ruby/object:Gem::Requirement
193
+ none: false
194
+ requirements:
195
+ - - ! '>='
196
+ - !ruby/object:Gem::Version
197
+ version: '0'
198
+ required_rubygems_version: !ruby/object:Gem::Requirement
199
+ none: false
200
+ requirements:
201
+ - - ! '>='
202
+ - !ruby/object:Gem::Version
203
+ version: '0'
204
+ requirements: []
205
+ rubyforge_project:
206
+ rubygems_version: 1.8.25
207
+ signing_key:
208
+ specification_version: 3
209
+ summary: Ruby wrapper for the iProfile API
210
+ test_files: []