knodes 0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/.env +14 -0
- data/.gitignore +6 -0
- data/Gemfile +21 -0
- data/Gemfile.lock +59 -0
- data/Guardfile +16 -0
- data/README.md +81 -0
- data/knodes.gemspec +35 -0
- data/lib/faraday/knodes_errors.rb +23 -0
- data/lib/knodes.rb +29 -0
- data/lib/knodes/client.rb +35 -0
- data/lib/knodes/client/companies.rb +17 -0
- data/lib/knodes/client/customers.rb +17 -0
- data/lib/knodes/client/documents.rb +21 -0
- data/lib/knodes/client/locations.rb +21 -0
- data/lib/knodes/client/people.rb +35 -0
- data/lib/knodes/client/schools.rb +17 -0
- data/lib/knodes/client/users.rb +41 -0
- data/lib/knodes/configuration.rb +67 -0
- data/lib/knodes/connection.rb +23 -0
- data/lib/knodes/error.rb +10 -0
- data/lib/knodes/request.rb +46 -0
- data/lib/version.rb +3 -0
- data/spec/lib/.github +0 -0
- data/spec/lib/knodes_spec.rb +378 -0
- data/spec/spec_helper.rb +8 -0
- metadata +129 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
NTc2YjYwYzJjNzA1NzQyNWFjODEwMGE5M2Y1YTY5OGRjMjVmMGYxZA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
OGZmMDFmNTdmN2QxYjIzZjBjODBiNjAwMWY5NDRlZDdjYTFkMjBkMw==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
OTU1ZmMxNjkwNTc4ZmExZWRmYmMzOTdkNjZiZDQwY2FjNzA3NmE4YWE1Yzc5
|
10
|
+
MDU2NmU4ZjU2NDkwZDhiNjJlNGRmODFjZmMwYjZiY2UxMDJlYWNiNTA0NDcz
|
11
|
+
ZjJhMGY0MWY5NDcyMDc4MzBkMWRjOGFiYWNiNjRjM2Y2MzU3NTE=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
ZjM2NGY5YWQ2N2ZkZGQ5NWRjNzE0ZDgxNWY2YzQ0NjA5YzZkNmY3MGMyMTM5
|
14
|
+
NGVhMGY2YzkyOWVmNzA2ZjE1YTU3MmQ2MjdlYTcyYzMwNzE2ZmRlZGNjYmY2
|
15
|
+
ZTlmZjZhMTMxZjI5MzM1NmE2MDk5N2FhZjQzODM3MWJhZDdmMzc=
|
data/.env
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
# EXAMPLE ENV FILE
|
2
|
+
|
3
|
+
CUSTOMER_ID=customer_id
|
4
|
+
CUSTOMER_SECRET=customer_secret
|
5
|
+
TEST_APP_ID=test_app_id
|
6
|
+
TEST_APP_SECRET=test_app_secret
|
7
|
+
TEST_USER_ID=test_user_id
|
8
|
+
TEST_NETWORK_ID=test_network_id
|
9
|
+
TEST_NETWORK_TOKEN=test_network_token
|
10
|
+
TEST_PERSON_ID=test_person_id
|
11
|
+
TEST_DOC_ID=test_doc_id
|
12
|
+
TEST_LOCATION_ID=test_location_id
|
13
|
+
TEST_COMPANY_ID=test_company_id
|
14
|
+
TEST_SCHOOL_ID=test_school_id
|
data/Gemfile
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
source :rubygems
|
2
|
+
|
3
|
+
gem 'faraday'
|
4
|
+
gem 'faraday_middleware'
|
5
|
+
gem 'hashie'
|
6
|
+
|
7
|
+
group :development do
|
8
|
+
gem 'guard'
|
9
|
+
gem 'rb-fsevent'
|
10
|
+
gem 'growl'
|
11
|
+
gem 'guard-bundler'
|
12
|
+
gem 'guard-rspec'
|
13
|
+
gem 'guard-cucumber'
|
14
|
+
end
|
15
|
+
|
16
|
+
group :development, :test do
|
17
|
+
gem 'cucumber'
|
18
|
+
gem 'rspec'
|
19
|
+
gem 'dotenv'
|
20
|
+
end
|
21
|
+
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
builder (3.1.4)
|
5
|
+
cucumber (1.2.1)
|
6
|
+
builder (>= 2.1.2)
|
7
|
+
diff-lcs (>= 1.1.3)
|
8
|
+
gherkin (~> 2.11.0)
|
9
|
+
json (>= 1.4.6)
|
10
|
+
diff-lcs (1.1.3)
|
11
|
+
faraday (0.8.4)
|
12
|
+
multipart-post (~> 1.1)
|
13
|
+
faraday_middleware (0.8.8)
|
14
|
+
faraday (>= 0.7.4, < 0.9)
|
15
|
+
gherkin (2.11.5)
|
16
|
+
json (>= 1.4.6)
|
17
|
+
growl (1.0.3)
|
18
|
+
guard (1.4.0)
|
19
|
+
listen (>= 0.4.2)
|
20
|
+
thor (>= 0.14.6)
|
21
|
+
guard-bundler (1.0.0)
|
22
|
+
bundler (~> 1.0)
|
23
|
+
guard (~> 1.1)
|
24
|
+
guard-cucumber (1.2.0)
|
25
|
+
cucumber (>= 1.2.0)
|
26
|
+
guard (>= 1.1.0)
|
27
|
+
guard-rspec (2.1.0)
|
28
|
+
guard (>= 1.1)
|
29
|
+
rspec (~> 2.11)
|
30
|
+
hashie (1.2.0)
|
31
|
+
json (1.7.5)
|
32
|
+
listen (0.5.3)
|
33
|
+
multipart-post (1.1.5)
|
34
|
+
rb-fsevent (0.9.2)
|
35
|
+
rspec (2.11.0)
|
36
|
+
rspec-core (~> 2.11.0)
|
37
|
+
rspec-expectations (~> 2.11.0)
|
38
|
+
rspec-mocks (~> 2.11.0)
|
39
|
+
rspec-core (2.11.1)
|
40
|
+
rspec-expectations (2.11.3)
|
41
|
+
diff-lcs (~> 1.1.3)
|
42
|
+
rspec-mocks (2.11.3)
|
43
|
+
thor (0.16.0)
|
44
|
+
|
45
|
+
PLATFORMS
|
46
|
+
ruby
|
47
|
+
|
48
|
+
DEPENDENCIES
|
49
|
+
cucumber
|
50
|
+
faraday
|
51
|
+
faraday_middleware
|
52
|
+
growl
|
53
|
+
guard
|
54
|
+
guard-bundler
|
55
|
+
guard-cucumber
|
56
|
+
guard-rspec
|
57
|
+
hashie
|
58
|
+
rb-fsevent
|
59
|
+
rspec
|
data/Guardfile
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# A sample Guardfile
|
2
|
+
# More info at https://github.com/guard/guard#readme
|
3
|
+
|
4
|
+
guard 'bundler' do
|
5
|
+
watch('Gemfile')
|
6
|
+
# Uncomment next line if Gemfile contain `gemspec' command
|
7
|
+
# watch(/^.+\.gemspec/)
|
8
|
+
end
|
9
|
+
|
10
|
+
guard 'rspec', :cli => "--color --format doc" do
|
11
|
+
watch(%r{^spec/.+_spec\.rb$})
|
12
|
+
#watch(%r{^lib/(.+)\.rb$}) { |m| puts m.inspect }
|
13
|
+
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
14
|
+
watch('spec/spec_helper.rb') { "spec/" }
|
15
|
+
watch('lib/knodes.rb.') { "spec/" }
|
16
|
+
end
|
data/README.md
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
#Knodes Ruby Client Library
|
2
|
+
|
3
|
+
A ruby client library for the Knodes API
|
4
|
+
See full API documentation at http://developer.kno.des/
|
5
|
+
|
6
|
+
## Usage
|
7
|
+
|
8
|
+
### Installation
|
9
|
+
|
10
|
+
Install the gem:
|
11
|
+
```gem install knodes-client```
|
12
|
+
or, add it to your Gemfile:
|
13
|
+
```gem 'knodes-client'```
|
14
|
+
```bundle install```
|
15
|
+
|
16
|
+
###Configuration
|
17
|
+
```ruby
|
18
|
+
Knodes.configure do |config|
|
19
|
+
config.customer_id = "foo"
|
20
|
+
config.customer_secret = "bar"
|
21
|
+
end
|
22
|
+
```
|
23
|
+
|
24
|
+
###Examples
|
25
|
+
|
26
|
+
Get the customer details
|
27
|
+
```response = Knodes.customer```
|
28
|
+
|
29
|
+
Search for a person
|
30
|
+
```response = Knodes.people_search(:user_id=>user_id, :person_id=>"self", :q=>"Joe Schmoe")```
|
31
|
+
|
32
|
+
Get a person's details
|
33
|
+
```response = Knodes.person(:user_id=>user_id, :person_id=>person_id)```
|
34
|
+
|
35
|
+
Search for a location
|
36
|
+
```response = Knodes.locations_search(:user_id=>user_id, :q=>"New York")```
|
37
|
+
|
38
|
+
## Motivation
|
39
|
+
|
40
|
+
Discovered Knodes at the 2012 TechCrunch Hackathon, won the API prize for the YourQ project. After changing the name to Que.io, we discovered that we needed a better client library, so I built it. Gained inspiration from the client libraries for Podio and Instagram.
|
41
|
+
|
42
|
+
## Knodes API Reference
|
43
|
+
|
44
|
+
View the getting started guide here:
|
45
|
+
http://developer.knod.es/getting_started
|
46
|
+
|
47
|
+
View the API docs here:
|
48
|
+
http://developer.knod.es/docs
|
49
|
+
|
50
|
+
## Tests
|
51
|
+
|
52
|
+
The tests rely on sample data from your social networks.
|
53
|
+
Sign up for an account here:
|
54
|
+
https://api.knod.es/portal/signup
|
55
|
+
|
56
|
+
Then, use the test harness to get your customer data. From there you can use this client to get the rest of the sample data.
|
57
|
+
Put your sample data into .env (sample file provided)
|
58
|
+
Then, to run the tests, you can use Guard for autotesting, or just vanilla Rspec:
|
59
|
+
|
60
|
+
```bundle exec guard```
|
61
|
+
|
62
|
+
## Contributors
|
63
|
+
|
64
|
+
If you discover a bug or want to contribute extra functionality:
|
65
|
+
|
66
|
+
1. Fork it.
|
67
|
+
2. Create a branch (`git checkout -b feature_or_bug_branch`)
|
68
|
+
3. Commit your changes (`git commit -am "Added feature, fixed bug"`)
|
69
|
+
4. Push to the branch (`git push origin feature_or_bug_branch`)
|
70
|
+
5. Open a Pull Request
|
71
|
+
6. ...
|
72
|
+
7. Profit
|
73
|
+
|
74
|
+
## License
|
75
|
+
|
76
|
+
This client library is released under the Apache license, Version 2.0
|
77
|
+
http://www.apache.org/licenses/LICENSE-2.0.html
|
78
|
+
|
79
|
+
Knodes and all other trademarks are © 2013 SnapGoods, Inc. All Rights Reserved.
|
80
|
+
http://knod.es/content/tos.pdf
|
81
|
+
http://knod.es/content/customer_agreement.pdf
|
data/knodes.gemspec
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path('../lib/version', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = "knodes"
|
6
|
+
s.rubyforge_project = s.name
|
7
|
+
s.version = Knodes::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Matt Anderson"]
|
10
|
+
s.email = ["matthewrossanderson@gmail.com"]
|
11
|
+
s.homepage = "http://developer.knod.es/"
|
12
|
+
s.summary = %q{A ruby client library for the Knodes API}
|
13
|
+
s.description = %q{See API documentation at http://developer.knod.es/}
|
14
|
+
s.license = "Apache 2.0"
|
15
|
+
s.post_install_message =<<eos
|
16
|
+
********************************************************************************
|
17
|
+
|
18
|
+
Thanks for installing the Knodes client library!
|
19
|
+
|
20
|
+
See API documentation at http://developer.knod.es/
|
21
|
+
|
22
|
+
There's always money in the banana stand.
|
23
|
+
|
24
|
+
********************************************************************************
|
25
|
+
eos
|
26
|
+
|
27
|
+
s.add_development_dependency "rspec", "~>2.5.0"
|
28
|
+
s.add_runtime_dependency "faraday"
|
29
|
+
s.add_runtime_dependency "faraday_middleware"
|
30
|
+
|
31
|
+
s.files = `git ls-files`.split("\n")
|
32
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
33
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
34
|
+
s.require_paths = ["lib"]
|
35
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
require File.expand_path('../../knodes/error', __FILE__)
|
3
|
+
|
4
|
+
module FaradayMiddleware
|
5
|
+
class KnodesErrors < Faraday::Middleware
|
6
|
+
def call(env)
|
7
|
+
@app.call(env).on_complete do |response|
|
8
|
+
case response[:status].to_i
|
9
|
+
when 400
|
10
|
+
raise Knodes::BadRequest, response[:body]
|
11
|
+
#puts "#{finished_env[:body] if finished_env[:body]}"
|
12
|
+
when 404
|
13
|
+
raise Knodes::NotFound, response[:body]
|
14
|
+
#puts "#{finished_env if finished_env[:body]}"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
def initialize(app)
|
19
|
+
super app
|
20
|
+
@parser = nil
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/knodes.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
require 'faraday_middleware'
|
3
|
+
|
4
|
+
require File.expand_path('../knodes/configuration', __FILE__)
|
5
|
+
require File.expand_path('../knodes/connection', __FILE__)
|
6
|
+
require File.expand_path('../knodes/request', __FILE__)
|
7
|
+
require File.expand_path('../knodes/client', __FILE__)
|
8
|
+
|
9
|
+
module Knodes
|
10
|
+
extend Configuration
|
11
|
+
|
12
|
+
#Knodes module methods#
|
13
|
+
|
14
|
+
# Alias for Knodes::Client.new
|
15
|
+
def self.client(options={})
|
16
|
+
Knodes::Client.new(options)
|
17
|
+
end
|
18
|
+
|
19
|
+
# Delegate to Knodes::Client
|
20
|
+
def self.method_missing(method, *args, &block)
|
21
|
+
return super unless client.respond_to?(method)
|
22
|
+
client.send(method, *args, &block)
|
23
|
+
end
|
24
|
+
|
25
|
+
# Delegate to Knodes::Client
|
26
|
+
def self.respond_to?(method)
|
27
|
+
return client.respond_to?(method) || super
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Knodes
|
2
|
+
class Client
|
3
|
+
|
4
|
+
Dir[File.expand_path('../client/*.rb', __FILE__)].each{|f| require f}
|
5
|
+
|
6
|
+
# Creates a new client and sets configuration to passed options or their default values
|
7
|
+
def initialize(options={})
|
8
|
+
options = Knodes.options.merge(options)
|
9
|
+
Configuration::VALID_OPTIONS_KEYS.each do |key|
|
10
|
+
send("#{key}=", options[key])
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
attr_accessor *Configuration::VALID_OPTIONS_KEYS
|
15
|
+
|
16
|
+
#convenience method for returning id/secret
|
17
|
+
def creds
|
18
|
+
Hash["customer_id" => customer_id, "customer_secret" => customer_secret]
|
19
|
+
end
|
20
|
+
|
21
|
+
include Connection
|
22
|
+
include Request
|
23
|
+
|
24
|
+
#here comes the good stuff.
|
25
|
+
#these refer to modules separated by Knodes resources, containing methods for each api call
|
26
|
+
|
27
|
+
include Customers
|
28
|
+
include Users
|
29
|
+
include People
|
30
|
+
include Documents
|
31
|
+
include Locations
|
32
|
+
include Companies
|
33
|
+
include Schools
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Knodes
|
2
|
+
class Client
|
3
|
+
module Companies
|
4
|
+
def company(options={})
|
5
|
+
response = get("companies/#{options[:company_id]}", options.merge(creds))
|
6
|
+
end
|
7
|
+
|
8
|
+
def companies_search(options={})
|
9
|
+
response = get("companies/search", options.merge(creds))
|
10
|
+
end
|
11
|
+
|
12
|
+
def company_people(options={})
|
13
|
+
response = get("companies/#{options[:company_id]}/people", options.merge(creds))
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Knodes
|
2
|
+
class Client
|
3
|
+
module Customers
|
4
|
+
def customer
|
5
|
+
response = get("customers", creds)
|
6
|
+
end
|
7
|
+
|
8
|
+
def customer_connect(options={})
|
9
|
+
response = post("customers/#{options[:customer_id]}/connect", options = options.merge(creds))
|
10
|
+
end
|
11
|
+
|
12
|
+
def customer_disconnect(options={})
|
13
|
+
response = post("customers/#{options[:customer_id]}/disconnect", options = options.merge(creds))
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Knodes
|
2
|
+
class Client
|
3
|
+
module Documents
|
4
|
+
def document(options={})
|
5
|
+
response = get("documents/#{options[:doc_id]}", options.merge(creds))
|
6
|
+
end
|
7
|
+
|
8
|
+
def documents_search(options={})
|
9
|
+
response = get("documents/search", options.merge(creds))
|
10
|
+
end
|
11
|
+
|
12
|
+
def document_people(options={})
|
13
|
+
response = get("documents/#{options[:doc_id]}/people", options.merge(creds))
|
14
|
+
end
|
15
|
+
|
16
|
+
def document_locations(options={})
|
17
|
+
response = get("documents/#{options[:doc_id]}/locations", options.merge(creds))
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Knodes
|
2
|
+
class Client
|
3
|
+
module Locations
|
4
|
+
def location(options={})
|
5
|
+
response = get("locations/#{options[:location_id]}", options.merge(creds))
|
6
|
+
end
|
7
|
+
|
8
|
+
def locations_search(options={})
|
9
|
+
response = get("locations/search", options.merge(creds))
|
10
|
+
end
|
11
|
+
|
12
|
+
def location_people(options={})
|
13
|
+
response = get("locations/#{options[:location_id]}/people", options.merge(creds))
|
14
|
+
end
|
15
|
+
|
16
|
+
def location_documents(options={})
|
17
|
+
response = get("locations/#{options[:location_id]}/documents", options.merge(creds))
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Knodes
|
2
|
+
class Client
|
3
|
+
module People
|
4
|
+
def person(options={})
|
5
|
+
response = get("people/#{options[:person_id]}", options.merge(creds))
|
6
|
+
end
|
7
|
+
|
8
|
+
def people_search(options={})
|
9
|
+
options.merge!({ :type=> "people" })
|
10
|
+
response = get("people/search", options.merge(creds))
|
11
|
+
end
|
12
|
+
|
13
|
+
def person_people(options={})
|
14
|
+
options.merge!({:type=>"people", :q=>""})
|
15
|
+
response = get("search", options.merge(creds))
|
16
|
+
end
|
17
|
+
|
18
|
+
def person_documents(options={})
|
19
|
+
response = get("people/#{options[:person_id]}/documents", options.merge(creds))
|
20
|
+
end
|
21
|
+
|
22
|
+
def person_locations(options={})
|
23
|
+
response = get("people/#{options[:person_id]}/locations", options.merge(creds))
|
24
|
+
end
|
25
|
+
|
26
|
+
def person_companies(options={})
|
27
|
+
response = get("people/#{options[:person_id]}/documents", options.merge(creds))
|
28
|
+
end
|
29
|
+
|
30
|
+
def person_schools(options={})
|
31
|
+
response = get("people/#{options[:person_id]}/documents", options.merge(creds))
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Knodes
|
2
|
+
class Client
|
3
|
+
module Schools
|
4
|
+
def school(options={})
|
5
|
+
response = get("schools/#{options[:school_id]}", options.merge(creds))
|
6
|
+
end
|
7
|
+
|
8
|
+
def schools_search(options={})
|
9
|
+
response = get("schools/search", options.merge(creds))
|
10
|
+
end
|
11
|
+
|
12
|
+
def school_people(options={})
|
13
|
+
response = get("schools/#{options[:school_id]}/people", options.merge(creds))
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Knodes
|
2
|
+
class Client
|
3
|
+
module Users
|
4
|
+
def user(options={})
|
5
|
+
response = get("users/#{options[:user_id]}", options.merge(creds))
|
6
|
+
end
|
7
|
+
|
8
|
+
def user_connect(options={})
|
9
|
+
response = post("users/connect", options.merge(creds))
|
10
|
+
end
|
11
|
+
|
12
|
+
def user_disconnect(options={})
|
13
|
+
response = post("users/disconnect", options.merge(creds))
|
14
|
+
end
|
15
|
+
|
16
|
+
def user_update(options={})
|
17
|
+
response = post("users/#{options[:user_id]}", options.merge(creds))
|
18
|
+
end
|
19
|
+
|
20
|
+
def user_notify_active(options={})
|
21
|
+
response = post("users/notify_active", options.merge(creds))
|
22
|
+
end
|
23
|
+
|
24
|
+
def user_notify_inactive(options={})
|
25
|
+
#do a raw request/response (don't parse), as this method only returns an http status
|
26
|
+
response = post("users/notify_inactive", options.merge(creds), true)
|
27
|
+
status = response.env[:status]
|
28
|
+
end
|
29
|
+
|
30
|
+
def user_ready(options={})
|
31
|
+
response = get("users/#{options[:user_id]}/ready", options.merge(creds), true)
|
32
|
+
body = response.env[:body]
|
33
|
+
end
|
34
|
+
|
35
|
+
def user_do_index(options={})
|
36
|
+
response = post("users/#{options[:user_id]}/do_index", options.merge(creds), true)
|
37
|
+
status = response.env[:status]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
module Knodes
|
2
|
+
module Configuration
|
3
|
+
VALID_OPTIONS_KEYS = [
|
4
|
+
:customer_id,
|
5
|
+
:customer_secret,
|
6
|
+
:endpoint,
|
7
|
+
:adapter,
|
8
|
+
:format,
|
9
|
+
:proxy,
|
10
|
+
:user_agent
|
11
|
+
].freeze
|
12
|
+
|
13
|
+
attr_accessor *VALID_OPTIONS_KEYS
|
14
|
+
|
15
|
+
##DEFAULT CONSTANTS##
|
16
|
+
|
17
|
+
# The adapter that will be used to connect if none is set
|
18
|
+
# The default faraday adapter is Net::HTTP.
|
19
|
+
DEFAULT_ADAPTER = Faraday.default_adapter
|
20
|
+
|
21
|
+
# By default, don't set a customer ID
|
22
|
+
DEFAULT_CUSTOMER_ID = nil
|
23
|
+
|
24
|
+
# By default, don't set a customer secret
|
25
|
+
DEFAULT_CUSTOMER_SECRET = nil
|
26
|
+
|
27
|
+
# The endpoint that will be used to connect if none is set
|
28
|
+
DEFAULT_ENDPOINT = 'https://api.knod.es/'
|
29
|
+
|
30
|
+
# By default, don't use a proxy server
|
31
|
+
DEFAULT_PROXY = nil
|
32
|
+
|
33
|
+
# The response format appended to the path and sent in the 'Accept' header if none is set
|
34
|
+
# JSON is the only available format at this time
|
35
|
+
DEFAULT_FORMAT = :json
|
36
|
+
|
37
|
+
# The user agent that will be sent to the API endpoint if none is set
|
38
|
+
DEFAULT_USER_AGENT = 'KnodesRubyClient/1.0'
|
39
|
+
|
40
|
+
#allow config values to be set in a block
|
41
|
+
def configure
|
42
|
+
yield self
|
43
|
+
end
|
44
|
+
|
45
|
+
#return hash of options
|
46
|
+
def options
|
47
|
+
VALID_OPTIONS_KEYS.inject({}) do |option, key|
|
48
|
+
option.merge!(key => send(key))
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
# When this module is extended, set all configuration options to their default values
|
53
|
+
def self.extended(base)
|
54
|
+
base.reset
|
55
|
+
end
|
56
|
+
|
57
|
+
def reset
|
58
|
+
self.adapter = DEFAULT_ADAPTER
|
59
|
+
self.customer_id = DEFAULT_CUSTOMER_ID
|
60
|
+
self.customer_secret = DEFAULT_CUSTOMER_SECRET
|
61
|
+
self.endpoint = DEFAULT_ENDPOINT
|
62
|
+
self.format = DEFAULT_FORMAT
|
63
|
+
self.proxy = DEFAULT_PROXY
|
64
|
+
self.user_agent = DEFAULT_USER_AGENT
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
#require the shiny custom middleware
|
2
|
+
Dir[File.expand_path('../../faraday/*.rb', __FILE__)].each{|f| require f}
|
3
|
+
|
4
|
+
module Knodes
|
5
|
+
module Connection
|
6
|
+
def connection(raw=false)
|
7
|
+
options = {
|
8
|
+
:headers => {'Accept' => "application/#{format}; charset=utf-8", 'User-Agent' => user_agent},
|
9
|
+
:proxy => proxy,
|
10
|
+
:ssl => {:verify => false},
|
11
|
+
:url => endpoint,
|
12
|
+
}
|
13
|
+
|
14
|
+
Faraday::Connection.new(options) do |connection|
|
15
|
+
connection.request :url_encoded
|
16
|
+
connection.response :mashify unless raw
|
17
|
+
connection.response :json, content_type: 'application/json' unless raw
|
18
|
+
connection.use FaradayMiddleware::KnodesErrors
|
19
|
+
connection.adapter(adapter)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/knodes/error.rb
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
module Knodes
|
2
|
+
# Custom error class for rescuing from all Knodes errors
|
3
|
+
class Error < StandardError; end
|
4
|
+
|
5
|
+
# Raised when Knodes returns the HTTP status code 400
|
6
|
+
class BadRequest < Error; end
|
7
|
+
|
8
|
+
# Raised when Knodes returns the HTTP status code 404
|
9
|
+
class NotFound < Error; end
|
10
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Knodes
|
2
|
+
module Request
|
3
|
+
# Perform an HTTP GET request
|
4
|
+
def get(path, options={}, raw=false, unformatted=false, debug=false)
|
5
|
+
request(:get, path, options, raw, unformatted, debug)
|
6
|
+
end
|
7
|
+
|
8
|
+
# Perform an HTTP POST request
|
9
|
+
def post(path, options={}, raw=false, unformatted=false, debug=false)
|
10
|
+
request(:post, path, options, raw, unformatted, debug)
|
11
|
+
end
|
12
|
+
|
13
|
+
# Perform an HTTP PUT request
|
14
|
+
def put(path, options={}, raw=false, unformatted=false, debug=false)
|
15
|
+
request(:put, path, options, raw, unformatted, debug)
|
16
|
+
end
|
17
|
+
|
18
|
+
# Perform an HTTP DELETE request
|
19
|
+
def delete(path, options={}, raw=false, unformatted=false, debug=false)
|
20
|
+
request(:delete, path, options, raw, unformatted, debug)
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
# Perform an HTTP request
|
26
|
+
def request(method, path, options, raw=false, unformatted=false, debug=false)
|
27
|
+
response = connection(raw).send(method) do |request|
|
28
|
+
path = formatted_path(path) unless unformatted
|
29
|
+
case method
|
30
|
+
when :get, :delete
|
31
|
+
request.url(path, options)
|
32
|
+
when :post, :put
|
33
|
+
request.path = path
|
34
|
+
request.body = options unless options.empty?
|
35
|
+
end
|
36
|
+
|
37
|
+
puts response.inspect if debug
|
38
|
+
end
|
39
|
+
raw ? response : response.body
|
40
|
+
end
|
41
|
+
|
42
|
+
def formatted_path(path)
|
43
|
+
[path, format].compact.join('.')
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/lib/version.rb
ADDED
data/spec/lib/.github
ADDED
File without changes
|
@@ -0,0 +1,378 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Knodes::Client do
|
4
|
+
before do
|
5
|
+
Knodes.configure do |config|
|
6
|
+
config.customer_id = ENV['CUSTOMER_ID']
|
7
|
+
config.customer_secret = ENV['CUSTOMER_SECRET']
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
context "Client" do
|
12
|
+
it "should make a client" do
|
13
|
+
c = Knodes.client
|
14
|
+
c.should be_an_instance_of (Knodes::Client)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should allow me to set configuration in a block " do
|
18
|
+
Knodes.configure do |config|
|
19
|
+
config.customer_id = "foo"
|
20
|
+
config.customer_secret = "bar"
|
21
|
+
end
|
22
|
+
#puts Knodes.customer_id
|
23
|
+
Knodes.customer_id.should == "foo"
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should instantiate using default configuration values" do
|
27
|
+
c = Knodes::Client.new
|
28
|
+
c.endpoint.should == "https://api.knod.es/"
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should instantiate using specified configuration values" do
|
32
|
+
c = Knodes.client(:customer_id=>"foo", :customer_secret=>"bar")
|
33
|
+
c.customer_id.should == "foo"
|
34
|
+
c.customer_secret.should == "bar"
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
context "Customers" do
|
40
|
+
before do
|
41
|
+
@test_app_id = ENV['TEST_APP_ID']
|
42
|
+
@test_app_secret = ENV['TEST_APP_SECRET']
|
43
|
+
#Knodes = Knodes.client(:customer_id=>@test_customer_id, :customer_secret=>@test_customer_secret)
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should connect to the customer endpoint" do
|
47
|
+
response = Knodes.customer
|
48
|
+
#puts response
|
49
|
+
#puts "\nCustomer App Name: #{response.name}\n"
|
50
|
+
response.should have_key(:name)
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should disconnect a customer network app" do
|
54
|
+
#response = Knodes.customer_disconnect(:network=>"facebook")
|
55
|
+
#puts response.network_apps
|
56
|
+
pending("don't want to run this every time")
|
57
|
+
#response.network_apps.should_not have_key(:facebook)
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should connect a customer network app" do
|
61
|
+
#response = Knodes.customer_connect(:network=>"facebook", :id=>@test_app_id, :secret=>@test_app_secret)
|
62
|
+
#puts response.network_apps
|
63
|
+
pending("don't want to run this every time")
|
64
|
+
#response.network_apps.should have_key(:facebook)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
context "Users" do
|
69
|
+
before do
|
70
|
+
@test_user_id = ENV['TEST_USER_ID']
|
71
|
+
@test_network_id = ENV['TEST_NETWORK_ID']
|
72
|
+
@test_network_token = ENV['TEST_NETWORK_TOKEN']
|
73
|
+
#@c = Knodes.client(:customer_id=>@test_customer_id, :customer_secret=>@test_customer_secret)
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should return a user" do
|
77
|
+
response = Knodes.user(:user_id=>@test_user_id)
|
78
|
+
#puts "\nUser Name: #{response.name}"
|
79
|
+
#puts response.inspect
|
80
|
+
response.should have_key(:name)
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should fail gracefully with an incorrect id" do
|
84
|
+
lambda {
|
85
|
+
Knodes.user(:user_id=>"yo_i_got_a_fake_id")
|
86
|
+
}.should raise_error(Knodes::NotFound, "invalid action")
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should disconnect a user's network account" do
|
90
|
+
#response = Knodes.user_disconnect(:user_id=>@test_user_id, :network=>"facebook", :network_id=>@test_network_id)
|
91
|
+
#puts "User networks: #{response.networks}"
|
92
|
+
#pending("don't want to run this every time")
|
93
|
+
response.networks.should_not have_key(:facebook)
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should connect a user's network account" do
|
97
|
+
response = Knodes.user_connect(:network=>"facebook", :network_id=>@test_network_id, :token=>@test_network_token)
|
98
|
+
puts response.inspect
|
99
|
+
#pending("don't want to run this every time")
|
100
|
+
response.networks.should have_key(:facebook)
|
101
|
+
end
|
102
|
+
|
103
|
+
it "should notify_inactive" do
|
104
|
+
response = Knodes.user_notify_inactive(:user_id=>@test_user_id)
|
105
|
+
#puts "\nNotify inactive status: #{response}"
|
106
|
+
response.should == 200
|
107
|
+
end
|
108
|
+
|
109
|
+
it "should notify_active" do
|
110
|
+
response = Knodes.user_notify_active(:user_id=>@test_user_id)
|
111
|
+
#puts "\nNotify active user name: #{response.name}"
|
112
|
+
#puts "\nNotify active ready status: #{response.ready}"
|
113
|
+
response.should have_key(:name)
|
114
|
+
response.ready.should == "ok" || response.ready.should == "indexing"
|
115
|
+
end
|
116
|
+
|
117
|
+
it "should return ready status" do
|
118
|
+
response = Knodes.user_ready(:user_id=>@test_user_id)
|
119
|
+
#puts "\nReady status: #{response}"
|
120
|
+
response.should == "ok" || response.ready.should == "indexing"
|
121
|
+
end
|
122
|
+
|
123
|
+
it "should initiate a user index" do
|
124
|
+
#response = Knodes.user_do_index(:user_id=>@test_user_id)
|
125
|
+
#puts "\nUser index status: #{response}"
|
126
|
+
#response.should == 200
|
127
|
+
pending ("dont want to hit knodes too hard")
|
128
|
+
end
|
129
|
+
|
130
|
+
it "should update a users email address" do
|
131
|
+
response = Knodes.user_update(:user_id=>@test_user_id, :email=>"test@example.com")
|
132
|
+
response.email.should == "test@example.com"
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
context "People" do
|
137
|
+
before do
|
138
|
+
@test_user_id = ENV['TEST_USER_ID']
|
139
|
+
@test_person_id = ENV['TEST_PERSON_ID']
|
140
|
+
#@c = Knodes.client(:customer_id=>@test_customer_id, :customer_secret=>@test_customer_secret)
|
141
|
+
end
|
142
|
+
|
143
|
+
it "should return a person" do
|
144
|
+
response = Knodes.person(:user_id=>@test_user_id, :person_id=>@test_person_id)
|
145
|
+
#puts response.inspect
|
146
|
+
response.should have_key(:name)
|
147
|
+
end
|
148
|
+
|
149
|
+
it "should search for people" do
|
150
|
+
response = Knodes.people_search(:user_id=>@test_user_id, :person_id=>"self", :q=>"Person")
|
151
|
+
#puts response.results
|
152
|
+
response.results.should_not be_empty
|
153
|
+
end
|
154
|
+
|
155
|
+
it "should search for people and fail gracefully" do
|
156
|
+
response = Knodes.people_search(:user_id=>@test_user_id, :q=>"Unknown")
|
157
|
+
#puts response
|
158
|
+
response.should have_key(:total)
|
159
|
+
end
|
160
|
+
|
161
|
+
it "should find people associated with self" do
|
162
|
+
response = Knodes.person_people(:user_id=>@test_user_id, :person_id=>"self")
|
163
|
+
#puts response.inspect
|
164
|
+
response.results.should_not be_empty
|
165
|
+
end
|
166
|
+
|
167
|
+
it "should find people associated with a person" do
|
168
|
+
response = Knodes.person_people(:user_id=>@test_user_id, :person_id=>@test_person_id)
|
169
|
+
#puts response.inspect
|
170
|
+
#response.results.should_not be_empty
|
171
|
+
pending "further testing"
|
172
|
+
end
|
173
|
+
|
174
|
+
it "should find documents associated with a person" do
|
175
|
+
response = Knodes.person_documents(:user_id=>@test_user_id, :person_id=>@test_person_id, :q=>"")
|
176
|
+
response.should have_key(:total)
|
177
|
+
end
|
178
|
+
|
179
|
+
it "should find locations associated with a person" do
|
180
|
+
response = Knodes.person_locations(:user_id=>@test_user_id, :person_id=>@test_person_id, :q=>"")
|
181
|
+
response.should have_key(:total)
|
182
|
+
end
|
183
|
+
|
184
|
+
it "should find companies associated with a person" do
|
185
|
+
response = Knodes.person_companies(:user_id=>@test_user_id, :person_id=>@test_person_id, :q=>"")
|
186
|
+
response.should have_key(:total)
|
187
|
+
end
|
188
|
+
|
189
|
+
it "should find schools associated with a person" do
|
190
|
+
response = Knodes.person_schools(:user_id=>@test_user_id, :person_id=>@test_person_id, :q=>"")
|
191
|
+
response.should have_key(:total)
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
context "Documents" do
|
196
|
+
before do
|
197
|
+
@test_user_id = ENV['TEST_USER_ID']
|
198
|
+
@test_person_id = ENV['TEST_PERSON_ID']
|
199
|
+
@test_doc_id = ENV['TEST_DOC_ID']
|
200
|
+
#@c = Knodes.client(:customer_id=>@test_customer_id, :customer_secret=>@test_customer_secret)
|
201
|
+
end
|
202
|
+
|
203
|
+
it "should return a document" do
|
204
|
+
response = Knodes.document(:user_id=>@test_user_id, :doc_id=>@test_doc_id)
|
205
|
+
#puts response.inspect
|
206
|
+
response.should have_key(:id)
|
207
|
+
end
|
208
|
+
|
209
|
+
it "should search for documents" do
|
210
|
+
response = Knodes.documents_search(:user_id=>@test_user_id, :q=>"profile")
|
211
|
+
#puts response.results
|
212
|
+
response.total.should > 0
|
213
|
+
end
|
214
|
+
|
215
|
+
it "should search for documents and fail gracefully" do
|
216
|
+
response = Knodes.documents_search(:user_id=>@test_user_id, :type=> "document", :q=>"Unknown")
|
217
|
+
#puts response
|
218
|
+
response.should have_key(:total)
|
219
|
+
end
|
220
|
+
|
221
|
+
it "should find documents associated with self" do
|
222
|
+
response = Knodes.documents_search(:user_id=>@test_user_id, :q=>"")
|
223
|
+
#puts response.inspect
|
224
|
+
response.total.should > 0
|
225
|
+
end
|
226
|
+
|
227
|
+
it "should find people associated with a document" do
|
228
|
+
response = Knodes.document_people(:user_id=>@test_user_id, :doc_id=>@test_doc_id)
|
229
|
+
#puts response.inspect
|
230
|
+
pending "finding a document with associated people"
|
231
|
+
response.total.should > 0
|
232
|
+
end
|
233
|
+
|
234
|
+
it "should find locations associated with a document" do
|
235
|
+
response = Knodes.document_locations(:user_id=>@test_user_id, :doc_id=>@test_doc_id)
|
236
|
+
#puts response.inspect
|
237
|
+
pending "finding a document with a location"
|
238
|
+
response.total.should > 0
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
242
|
+
context "Locations" do
|
243
|
+
before do
|
244
|
+
@test_user_id = ENV['TEST_USER_ID']
|
245
|
+
@test_person_id = ENV['TEST_PERSON_ID']
|
246
|
+
@test_location_id = ENV['TEST_LOCATION_ID']
|
247
|
+
#@c = Knodes.client(:customer_id=>@test_customer_id, :customer_secret=>@test_customer_secret)
|
248
|
+
end
|
249
|
+
|
250
|
+
it "should return a location" do
|
251
|
+
response = Knodes.location(:user_id=>@test_user_id, :location_id=>@test_location_id)
|
252
|
+
#puts response.inspect
|
253
|
+
response.should have_key(:id)
|
254
|
+
end
|
255
|
+
|
256
|
+
it "should search for locations" do
|
257
|
+
response = Knodes.locations_search(:user_id=>@test_user_id, :q=>"New York")
|
258
|
+
#puts response.results
|
259
|
+
response.total.should > 0
|
260
|
+
end
|
261
|
+
|
262
|
+
it "should search for locations and fail gracefully" do
|
263
|
+
response = Knodes.locations_search(:user_id=>@test_user_id, :type=> "location", :q=>"Unknown")
|
264
|
+
#puts response
|
265
|
+
response.should have_key(:total)
|
266
|
+
end
|
267
|
+
|
268
|
+
it "should find locations associated with self" do
|
269
|
+
response = Knodes.locations_search(:user_id=>@test_user_id, :q=>"")
|
270
|
+
#puts response.inspect
|
271
|
+
response.total.should > 0
|
272
|
+
end
|
273
|
+
|
274
|
+
it "should find people associated with a location" do
|
275
|
+
response = Knodes.location_people(:user_id=>@test_user_id, :location_id=>@test_location_id)
|
276
|
+
#puts response.inspect
|
277
|
+
#response.total.should > 0
|
278
|
+
pending "finding a location with people"
|
279
|
+
end
|
280
|
+
|
281
|
+
it "should find documents associated with a location" do
|
282
|
+
response = Knodes.location_documents(:user_id=>@test_user_id, :location_id=>@test_location_id)
|
283
|
+
#puts response.inspect
|
284
|
+
#response.total.should > 0
|
285
|
+
pending "finding a location with documents"
|
286
|
+
end
|
287
|
+
end
|
288
|
+
|
289
|
+
context "Companies" do
|
290
|
+
before do
|
291
|
+
@test_user_id = ENV['TEST_USER_ID']
|
292
|
+
@test_person_id = ENV['TEST_PERSON_ID']
|
293
|
+
@test_company_id = ENV['TEST_COMPANY_ID']
|
294
|
+
#@c = Knodes.client(:customer_id=>@test_customer_id, :customer_secret=>@test_customer_secret)
|
295
|
+
end
|
296
|
+
|
297
|
+
it "should return a company" do
|
298
|
+
pending "finding a company"
|
299
|
+
response = Knodes.company(:user_id=>@test_user_id, :company_id=>@test_company_id)
|
300
|
+
#puts response.inspect
|
301
|
+
#response.should have_key(:id)
|
302
|
+
|
303
|
+
end
|
304
|
+
|
305
|
+
it "should search for companies" do
|
306
|
+
pending "finding a company"
|
307
|
+
response = Knodes.companies_search(:user_id=>@test_user_id, :q=>"New York")
|
308
|
+
#puts response.results
|
309
|
+
#response.total.should > 0
|
310
|
+
end
|
311
|
+
|
312
|
+
it "should search for companies and fail gracefully" do
|
313
|
+
response = Knodes.companies_search(:user_id=>@test_user_id, :type=> "company", :q=>"Unknown")
|
314
|
+
#puts response
|
315
|
+
response.should have_key(:total)
|
316
|
+
end
|
317
|
+
|
318
|
+
it "should find companies associated with self" do
|
319
|
+
pending "finding a company"
|
320
|
+
response = Knodes.companies_search(:user_id=>@test_user_id, :q=>"")
|
321
|
+
#puts response.inspect
|
322
|
+
#response.total.should > 0
|
323
|
+
end
|
324
|
+
|
325
|
+
it "should find people associated with a company" do
|
326
|
+
pending "finding a company"
|
327
|
+
response = Knodes.company_people(:user_id=>@test_user_id, :company_id=>@test_company_id)
|
328
|
+
#puts response.inspect
|
329
|
+
#response.total.should > 0
|
330
|
+
end
|
331
|
+
end
|
332
|
+
|
333
|
+
context "Schools" do
|
334
|
+
before do
|
335
|
+
@test_user_id = ENV['TEST_USER_ID'] #
|
336
|
+
@test_person_id = ENV['TEST_PERSON_ID']
|
337
|
+
@test_school_id = ENV['TEST_SCHOOL_ID']
|
338
|
+
#@c = Knodes.client(:customer_id=>@test_customer_id, :customer_secret=>@test_customer_secret)
|
339
|
+
end
|
340
|
+
|
341
|
+
it "should return a school" do
|
342
|
+
response = Knodes.school(:user_id=>@test_user_id, :school_id=>@test_school_id)
|
343
|
+
# puts response.inspect
|
344
|
+
response.should have_key(:id)
|
345
|
+
|
346
|
+
end
|
347
|
+
|
348
|
+
it "should search for schools" do
|
349
|
+
response = Knodes.schools_search(:user_id=>@test_user_id, :q=>"Rensselaer")
|
350
|
+
#puts response.results
|
351
|
+
response.total.should > 0
|
352
|
+
end
|
353
|
+
|
354
|
+
it "should search for schools and fail gracefully" do
|
355
|
+
response = Knodes.schools_search(:user_id=>@test_user_id, :type=> "school", :q=>"Unknown")
|
356
|
+
#puts response
|
357
|
+
response.should have_key(:total)
|
358
|
+
end
|
359
|
+
|
360
|
+
it "should find schools associated with self" do
|
361
|
+
response = Knodes.schools_search(:user_id=>@test_user_id, :q=>"")
|
362
|
+
#puts response.inspect
|
363
|
+
response.total.should > 0
|
364
|
+
end
|
365
|
+
|
366
|
+
it "should find people associated with a school" do
|
367
|
+
response = Knodes.school_people(:user_id=>@test_user_id, :school_id=>@test_school_id)
|
368
|
+
#puts response.inspect
|
369
|
+
response.total.should > 0
|
370
|
+
end
|
371
|
+
end
|
372
|
+
|
373
|
+
end
|
374
|
+
|
375
|
+
|
376
|
+
|
377
|
+
|
378
|
+
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,129 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: knodes
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.3'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Matt Anderson
|
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: rspec
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 2.5.0
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 2.5.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: faraday
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: faraday_middleware
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ! '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description: See API documentation at http://developer.knod.es/
|
56
|
+
email:
|
57
|
+
- matthewrossanderson@gmail.com
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- .env
|
63
|
+
- .gitignore
|
64
|
+
- Gemfile
|
65
|
+
- Gemfile.lock
|
66
|
+
- Guardfile
|
67
|
+
- README.md
|
68
|
+
- knodes.gemspec
|
69
|
+
- lib/.DS_Store
|
70
|
+
- lib/faraday/knodes_errors.rb
|
71
|
+
- lib/knodes.rb
|
72
|
+
- lib/knodes/client.rb
|
73
|
+
- lib/knodes/client/companies.rb
|
74
|
+
- lib/knodes/client/customers.rb
|
75
|
+
- lib/knodes/client/documents.rb
|
76
|
+
- lib/knodes/client/locations.rb
|
77
|
+
- lib/knodes/client/people.rb
|
78
|
+
- lib/knodes/client/schools.rb
|
79
|
+
- lib/knodes/client/users.rb
|
80
|
+
- lib/knodes/configuration.rb
|
81
|
+
- lib/knodes/connection.rb
|
82
|
+
- lib/knodes/error.rb
|
83
|
+
- lib/knodes/request.rb
|
84
|
+
- lib/version.rb
|
85
|
+
- spec/lib/.github
|
86
|
+
- spec/lib/knodes_spec.rb
|
87
|
+
- spec/spec_helper.rb
|
88
|
+
homepage: http://developer.knod.es/
|
89
|
+
licenses:
|
90
|
+
- Apache 2.0
|
91
|
+
metadata: {}
|
92
|
+
post_install_message: ! '********************************************************************************
|
93
|
+
|
94
|
+
|
95
|
+
Thanks for installing the Knodes client library!
|
96
|
+
|
97
|
+
|
98
|
+
See API documentation at http://developer.knod.es/
|
99
|
+
|
100
|
+
|
101
|
+
There''s always money in the banana stand.
|
102
|
+
|
103
|
+
|
104
|
+
********************************************************************************
|
105
|
+
|
106
|
+
'
|
107
|
+
rdoc_options: []
|
108
|
+
require_paths:
|
109
|
+
- lib
|
110
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
111
|
+
requirements:
|
112
|
+
- - ! '>='
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: '0'
|
115
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - ! '>='
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0'
|
120
|
+
requirements: []
|
121
|
+
rubyforge_project: knodes
|
122
|
+
rubygems_version: 2.0.3
|
123
|
+
signing_key:
|
124
|
+
specification_version: 4
|
125
|
+
summary: A ruby client library for the Knodes API
|
126
|
+
test_files:
|
127
|
+
- spec/lib/.github
|
128
|
+
- spec/lib/knodes_spec.rb
|
129
|
+
- spec/spec_helper.rb
|