iprofiler 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []