litmos-client 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +3 -0
- data/Gemfile.lock +49 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +63 -0
- data/Rakefile +53 -0
- data/VERSION +1 -0
- data/lib/litmos-client.rb +1 -0
- data/lib/litmos_client/user.rb +13 -0
- data/lib/litmos_client.rb +85 -0
- data/litmos-client.gemspec +94 -0
- data/test/helper.rb +18 -0
- data/test/test_litmos_client.rb +27 -0
- metadata +294 -0
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
litmos-client (0.0.1)
|
5
|
+
hashugar
|
6
|
+
json
|
7
|
+
litmos-client
|
8
|
+
rest-client
|
9
|
+
|
10
|
+
GEM
|
11
|
+
remote: http://rubygems.org/
|
12
|
+
specs:
|
13
|
+
activesupport (3.2.8)
|
14
|
+
i18n (~> 0.6)
|
15
|
+
multi_json (~> 1.0)
|
16
|
+
git (1.2.5)
|
17
|
+
hashugar (0.0.6)
|
18
|
+
i18n (0.6.0)
|
19
|
+
jeweler (1.5.2)
|
20
|
+
bundler (~> 1.0.0)
|
21
|
+
git (>= 1.2.5)
|
22
|
+
rake
|
23
|
+
json (1.7.4)
|
24
|
+
metaclass (0.0.1)
|
25
|
+
mime-types (1.19)
|
26
|
+
mocha (0.12.3)
|
27
|
+
metaclass (~> 0.0.1)
|
28
|
+
multi_json (1.3.6)
|
29
|
+
rake (0.9.2.2)
|
30
|
+
rcov (1.0.0)
|
31
|
+
rest-client (1.6.7)
|
32
|
+
mime-types (>= 1.16)
|
33
|
+
shoulda (3.1.1)
|
34
|
+
shoulda-context (~> 1.0)
|
35
|
+
shoulda-matchers (~> 1.2)
|
36
|
+
shoulda-context (1.0.0)
|
37
|
+
shoulda-matchers (1.2.0)
|
38
|
+
activesupport (>= 3.0.0)
|
39
|
+
|
40
|
+
PLATFORMS
|
41
|
+
ruby
|
42
|
+
|
43
|
+
DEPENDENCIES
|
44
|
+
bundler (~> 1.0.0)
|
45
|
+
jeweler (~> 1.5.2)
|
46
|
+
litmos-client!
|
47
|
+
mocha (>= 0.9.10)
|
48
|
+
rcov (>= 0.9.9)
|
49
|
+
shoulda (>= 2.11.3)
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2012 Kennon Ballou
|
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.
|
data/README.rdoc
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
= Litmos-client
|
2
|
+
|
3
|
+
Litmos-client is a Ruby gem that provides a wrapper for interacting with the Litmos LMS API[http://help.litmos.com/developer-api/].
|
4
|
+
|
5
|
+
Loosely based on the {Hominid gem}[https://github.com/tatemae-consultancy/hominid] by Brian Getting, thanks Brian!
|
6
|
+
|
7
|
+
== Requirements
|
8
|
+
|
9
|
+
You will need a {Litmos}[http://www.litmos.com] account. Once you have your Litmos account set up, you will need to get your API key.
|
10
|
+
|
11
|
+
== Installation
|
12
|
+
|
13
|
+
(sudo) gem install litmos-client
|
14
|
+
|
15
|
+
== Usage
|
16
|
+
|
17
|
+
Please refer to the {Litmos API Documentation}[http://help.litmos.com/developer-api/] for information about what methods are available, the arguments that can be passed to each method, and the output that the API will return. Start by creating an API object:
|
18
|
+
|
19
|
+
litmos = LitmosClient::API.new('your_api_key', 'your_source_domain')
|
20
|
+
|
21
|
+
You can then query the API for users:
|
22
|
+
|
23
|
+
litmos.users
|
24
|
+
litmos.find_user_by_id(id)
|
25
|
+
|
26
|
+
LitmosClient will automatically convert the result into a ruby object and de-CamelCase the result keys:
|
27
|
+
|
28
|
+
# API returns: {"LastName" => "Ballou", "FirstName" => "Kennon", "Id" => "bS5zBrR3"}
|
29
|
+
user = litmos.find_user_by_id("bS5zBrR3")
|
30
|
+
user.id
|
31
|
+
user.first_name
|
32
|
+
user.last_name
|
33
|
+
|
34
|
+
The Litmos API supports searching and pagination for some methods, so you can pass the options :start, :limit, :sort, :dir, and :search. By default the API returns up to the first 100 records.
|
35
|
+
|
36
|
+
users = litmos.users :limit => 100, :start => 100
|
37
|
+
|
38
|
+
For methods that aren't yet implemented in the gem, you can simply use the *get* method:
|
39
|
+
|
40
|
+
litmos.get "teams"
|
41
|
+
|
42
|
+
== Dependencies
|
43
|
+
|
44
|
+
Litmos-client depends on the Rest-client[https://github.com/archiloque/rest-client], JSON, and Hashugar[https://github.com/jsuchal/hashugar] gems (should be automatically loaded via the gemspec).
|
45
|
+
|
46
|
+
== TODO
|
47
|
+
* Support for retrieving Teams and Courses
|
48
|
+
* Support for creating objects and other http verbs (PUT, POST)
|
49
|
+
|
50
|
+
== Contributing to litmos-client
|
51
|
+
|
52
|
+
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
|
53
|
+
* Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
|
54
|
+
* Fork the project
|
55
|
+
* Start a feature/bugfix branch
|
56
|
+
* Commit and push until you are happy with your contribution
|
57
|
+
* Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
|
58
|
+
* Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
|
59
|
+
|
60
|
+
== Copyright
|
61
|
+
|
62
|
+
Copyright (c) 2012 Kennon Ballou. See LICENSE.txt for further details.
|
63
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
begin
|
4
|
+
Bundler.setup(:default, :development)
|
5
|
+
rescue Bundler::BundlerError => e
|
6
|
+
$stderr.puts e.message
|
7
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
+
exit e.status_code
|
9
|
+
end
|
10
|
+
require 'rake'
|
11
|
+
|
12
|
+
require 'jeweler'
|
13
|
+
Jeweler::Tasks.new do |gem|
|
14
|
+
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
15
|
+
gem.name = "litmos-client"
|
16
|
+
gem.homepage = "http://github.com/kennon/litmos-client"
|
17
|
+
gem.license = "MIT"
|
18
|
+
gem.version = "0.0.2"
|
19
|
+
gem.summary = %Q{Litmos-client is a Ruby wrapper for the Litmos API}
|
20
|
+
gem.description = %Q{Litmos-Client is a Ruby gem that provides a wrapper for interacting with the Litmos Learning Management System API.}
|
21
|
+
gem.email = "kennon@angryturnip.com"
|
22
|
+
gem.authors = ["Kennon Ballou"]
|
23
|
+
gem.add_dependency "rest-client"
|
24
|
+
gem.add_dependency "json"
|
25
|
+
gem.add_dependency "hashugar"
|
26
|
+
end
|
27
|
+
Jeweler::RubygemsDotOrgTasks.new
|
28
|
+
|
29
|
+
require 'rake/testtask'
|
30
|
+
Rake::TestTask.new(:test) do |test|
|
31
|
+
test.libs << 'lib' << 'test'
|
32
|
+
test.pattern = 'test/**/test_*.rb'
|
33
|
+
test.verbose = true
|
34
|
+
end
|
35
|
+
|
36
|
+
require 'rcov/rcovtask'
|
37
|
+
Rcov::RcovTask.new do |test|
|
38
|
+
test.libs << 'test'
|
39
|
+
test.pattern = 'test/**/test_*.rb'
|
40
|
+
test.verbose = true
|
41
|
+
end
|
42
|
+
|
43
|
+
task :default => :test
|
44
|
+
|
45
|
+
require 'rake/rdoctask'
|
46
|
+
Rake::RDocTask.new do |rdoc|
|
47
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
48
|
+
|
49
|
+
rdoc.rdoc_dir = 'rdoc'
|
50
|
+
rdoc.title = "litmos-client #{version}"
|
51
|
+
rdoc.rdoc_files.include('README*')
|
52
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
53
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.0.2
|
@@ -0,0 +1 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/litmos_client'
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require 'rest_client'
|
2
|
+
require 'json'
|
3
|
+
require 'hashugar'
|
4
|
+
|
5
|
+
require File.dirname(__FILE__) + '/litmos_client/user'
|
6
|
+
|
7
|
+
module LitmosClient
|
8
|
+
class NotFound < Exception; end
|
9
|
+
class ApiError < Exception; end
|
10
|
+
|
11
|
+
class API
|
12
|
+
include LitmosClient::User
|
13
|
+
|
14
|
+
# Litmos Developer API Documentation: http://help.litmos.com/developer-api/
|
15
|
+
API_VERSION = "1"
|
16
|
+
|
17
|
+
# Initialize with an API key and config options
|
18
|
+
def initialize(api_key, source, config = {})
|
19
|
+
raise ArgumentError.new('Your need to specify your api key') unless api_key
|
20
|
+
raise ArgumentError.new('You need to specify a source website') unless source
|
21
|
+
|
22
|
+
defaults = {
|
23
|
+
:api_version => API_VERSION
|
24
|
+
}
|
25
|
+
|
26
|
+
@config = defaults.merge(config).freeze
|
27
|
+
@api_key = api_key
|
28
|
+
@source = source
|
29
|
+
@litmosURL = "https://api.litmos.com/v#{@config[:api_version]}.svc/"
|
30
|
+
end
|
31
|
+
|
32
|
+
def get(path, params={})
|
33
|
+
options = {
|
34
|
+
:content_type => :json,
|
35
|
+
:accept => :json,
|
36
|
+
:params => params.merge(:apikey => @api_key, :source => @source)
|
37
|
+
}
|
38
|
+
RestClient.get("#{@litmosURL}/#{path}", options) do |response, request, result|
|
39
|
+
case response.code
|
40
|
+
when 200, 201
|
41
|
+
# 200 Success. User/Course etc updated, deleted or retrieved
|
42
|
+
# 201 Success. User/Course etc created
|
43
|
+
return StringHelpers.convert_hash_keys(JSON.parse(response))
|
44
|
+
when 404 # 404 Not Found. The User/Course etc that you requested does not exist
|
45
|
+
raise NotFound.new(response)
|
46
|
+
else
|
47
|
+
# 400 Bad Request. Check that your Uri and request body is well formed
|
48
|
+
# 403 Forbidden. Check your API key, HTTPS setting, Source parameter etc
|
49
|
+
# 409 Conflict. Often occurs when trying to create an item that already exists
|
50
|
+
raise ApiError.new(response)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
module StringHelpers
|
57
|
+
# for de-camelCasing the result keys
|
58
|
+
# from: http://stackoverflow.com/questions/8706930/converting-nested-hash-keys-from-camelcase-to-snake-case-in-ruby
|
59
|
+
|
60
|
+
def self.underscore(string)
|
61
|
+
string.gsub(/::/, '/').
|
62
|
+
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
|
63
|
+
gsub(/([a-z\d])([A-Z])/,'\1_\2').
|
64
|
+
tr("-", "_").
|
65
|
+
downcase
|
66
|
+
end
|
67
|
+
|
68
|
+
def self.underscore_key(k)
|
69
|
+
underscore(k.to_s).to_sym
|
70
|
+
end
|
71
|
+
|
72
|
+
def self.convert_hash_keys(value)
|
73
|
+
case value
|
74
|
+
when Array
|
75
|
+
value.map { |v| convert_hash_keys(v) }
|
76
|
+
# or `value.map(&method(:convert_hash_keys))`
|
77
|
+
when Hash
|
78
|
+
Hash[value.map { |k, v| [underscore_key(k), convert_hash_keys(v)] }]
|
79
|
+
else
|
80
|
+
value
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "litmos-client"
|
8
|
+
s.version = "0.0.2"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Kennon Ballou"]
|
12
|
+
s.date = "2012-08-16"
|
13
|
+
s.description = "Litmos-Client is a Ruby gem that provides a wrapper for interacting with the Litmos Learning Management System API."
|
14
|
+
s.email = "kennon@angryturnip.com"
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE.txt",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
"Gemfile",
|
21
|
+
"Gemfile.lock",
|
22
|
+
"LICENSE.txt",
|
23
|
+
"README.rdoc",
|
24
|
+
"Rakefile",
|
25
|
+
"VERSION",
|
26
|
+
"lib/litmos-client.rb",
|
27
|
+
"lib/litmos_client.rb",
|
28
|
+
"lib/litmos_client/user.rb",
|
29
|
+
"litmos-client.gemspec",
|
30
|
+
"test/helper.rb",
|
31
|
+
"test/test_litmos_client.rb"
|
32
|
+
]
|
33
|
+
s.homepage = "http://github.com/kennon/litmos-client"
|
34
|
+
s.licenses = ["MIT"]
|
35
|
+
s.require_paths = ["lib"]
|
36
|
+
s.rubygems_version = "1.8.17"
|
37
|
+
s.summary = "Litmos-client is a Ruby wrapper for the Litmos API"
|
38
|
+
s.test_files = [
|
39
|
+
"test/helper.rb",
|
40
|
+
"test/test_litmos_client.rb"
|
41
|
+
]
|
42
|
+
|
43
|
+
if s.respond_to? :specification_version then
|
44
|
+
s.specification_version = 3
|
45
|
+
|
46
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
47
|
+
s.add_runtime_dependency(%q<litmos-client>, [">= 0"])
|
48
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
49
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
50
|
+
s.add_development_dependency(%q<mocha>, [">= 0.9.10"])
|
51
|
+
s.add_development_dependency(%q<rcov>, [">= 0.9.9"])
|
52
|
+
s.add_development_dependency(%q<shoulda>, [">= 2.11.3"])
|
53
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
54
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
55
|
+
s.add_development_dependency(%q<mocha>, [">= 0.9.10"])
|
56
|
+
s.add_development_dependency(%q<rcov>, [">= 0.9.9"])
|
57
|
+
s.add_development_dependency(%q<shoulda>, [">= 2.11.3"])
|
58
|
+
s.add_runtime_dependency(%q<rest-client>, [">= 0"])
|
59
|
+
s.add_runtime_dependency(%q<json>, [">= 0"])
|
60
|
+
s.add_runtime_dependency(%q<hashugar>, [">= 0"])
|
61
|
+
else
|
62
|
+
s.add_dependency(%q<litmos-client>, [">= 0"])
|
63
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
64
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
65
|
+
s.add_dependency(%q<mocha>, [">= 0.9.10"])
|
66
|
+
s.add_dependency(%q<rcov>, [">= 0.9.9"])
|
67
|
+
s.add_dependency(%q<shoulda>, [">= 2.11.3"])
|
68
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
69
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
70
|
+
s.add_dependency(%q<mocha>, [">= 0.9.10"])
|
71
|
+
s.add_dependency(%q<rcov>, [">= 0.9.9"])
|
72
|
+
s.add_dependency(%q<shoulda>, [">= 2.11.3"])
|
73
|
+
s.add_dependency(%q<rest-client>, [">= 0"])
|
74
|
+
s.add_dependency(%q<json>, [">= 0"])
|
75
|
+
s.add_dependency(%q<hashugar>, [">= 0"])
|
76
|
+
end
|
77
|
+
else
|
78
|
+
s.add_dependency(%q<litmos-client>, [">= 0"])
|
79
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
80
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
81
|
+
s.add_dependency(%q<mocha>, [">= 0.9.10"])
|
82
|
+
s.add_dependency(%q<rcov>, [">= 0.9.9"])
|
83
|
+
s.add_dependency(%q<shoulda>, [">= 2.11.3"])
|
84
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
85
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
86
|
+
s.add_dependency(%q<mocha>, [">= 0.9.10"])
|
87
|
+
s.add_dependency(%q<rcov>, [">= 0.9.9"])
|
88
|
+
s.add_dependency(%q<shoulda>, [">= 2.11.3"])
|
89
|
+
s.add_dependency(%q<rest-client>, [">= 0"])
|
90
|
+
s.add_dependency(%q<json>, [">= 0"])
|
91
|
+
s.add_dependency(%q<hashugar>, [">= 0"])
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
data/test/helper.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
begin
|
4
|
+
Bundler.setup(:default, :development)
|
5
|
+
rescue Bundler::BundlerError => e
|
6
|
+
$stderr.puts e.message
|
7
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
+
exit e.status_code
|
9
|
+
end
|
10
|
+
require 'test/unit'
|
11
|
+
require 'shoulda'
|
12
|
+
|
13
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
14
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
15
|
+
require 'litmos-client'
|
16
|
+
|
17
|
+
class Test::Unit::TestCase
|
18
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestLitmosClient < Test::Unit::TestCase
|
4
|
+
|
5
|
+
VALID_API_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
|
6
|
+
INVALID_API_KEY = 'not_a_valid_api_key'
|
7
|
+
|
8
|
+
should "not raise an error if the API key is valid" do
|
9
|
+
assert_nothing_raised do
|
10
|
+
LitmosClient::API.new(VALID_API_KEY)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
should "raise an error if the API key is not provided" do
|
15
|
+
assert_raise(ArgumentError) do
|
16
|
+
LitmosClient::API.new()
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
should "raise an error if the API key is malformed" do
|
21
|
+
assert_raise(ArgumentError) do
|
22
|
+
LitmosClient::API.new(INVALID_API_KEY)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# TODO: Implement tests!
|
27
|
+
end
|
metadata
ADDED
@@ -0,0 +1,294 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: litmos-client
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 27
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Kennon Ballou
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2012-08-16 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: litmos-client
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
version: "0"
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: bundler
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ~>
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
hash: 23
|
43
|
+
segments:
|
44
|
+
- 1
|
45
|
+
- 0
|
46
|
+
- 0
|
47
|
+
version: 1.0.0
|
48
|
+
type: :development
|
49
|
+
version_requirements: *id002
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: jeweler
|
52
|
+
prerelease: false
|
53
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - ~>
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
hash: 7
|
59
|
+
segments:
|
60
|
+
- 1
|
61
|
+
- 5
|
62
|
+
- 2
|
63
|
+
version: 1.5.2
|
64
|
+
type: :development
|
65
|
+
version_requirements: *id003
|
66
|
+
- !ruby/object:Gem::Dependency
|
67
|
+
name: mocha
|
68
|
+
prerelease: false
|
69
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
70
|
+
none: false
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
hash: 47
|
75
|
+
segments:
|
76
|
+
- 0
|
77
|
+
- 9
|
78
|
+
- 10
|
79
|
+
version: 0.9.10
|
80
|
+
type: :development
|
81
|
+
version_requirements: *id004
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
name: rcov
|
84
|
+
prerelease: false
|
85
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
86
|
+
none: false
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
hash: 41
|
91
|
+
segments:
|
92
|
+
- 0
|
93
|
+
- 9
|
94
|
+
- 9
|
95
|
+
version: 0.9.9
|
96
|
+
type: :development
|
97
|
+
version_requirements: *id005
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: shoulda
|
100
|
+
prerelease: false
|
101
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
102
|
+
none: false
|
103
|
+
requirements:
|
104
|
+
- - ">="
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
hash: 37
|
107
|
+
segments:
|
108
|
+
- 2
|
109
|
+
- 11
|
110
|
+
- 3
|
111
|
+
version: 2.11.3
|
112
|
+
type: :development
|
113
|
+
version_requirements: *id006
|
114
|
+
- !ruby/object:Gem::Dependency
|
115
|
+
name: bundler
|
116
|
+
prerelease: false
|
117
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
118
|
+
none: false
|
119
|
+
requirements:
|
120
|
+
- - ~>
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
hash: 23
|
123
|
+
segments:
|
124
|
+
- 1
|
125
|
+
- 0
|
126
|
+
- 0
|
127
|
+
version: 1.0.0
|
128
|
+
type: :development
|
129
|
+
version_requirements: *id007
|
130
|
+
- !ruby/object:Gem::Dependency
|
131
|
+
name: jeweler
|
132
|
+
prerelease: false
|
133
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
134
|
+
none: false
|
135
|
+
requirements:
|
136
|
+
- - ~>
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
hash: 7
|
139
|
+
segments:
|
140
|
+
- 1
|
141
|
+
- 5
|
142
|
+
- 2
|
143
|
+
version: 1.5.2
|
144
|
+
type: :development
|
145
|
+
version_requirements: *id008
|
146
|
+
- !ruby/object:Gem::Dependency
|
147
|
+
name: mocha
|
148
|
+
prerelease: false
|
149
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
150
|
+
none: false
|
151
|
+
requirements:
|
152
|
+
- - ">="
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
hash: 47
|
155
|
+
segments:
|
156
|
+
- 0
|
157
|
+
- 9
|
158
|
+
- 10
|
159
|
+
version: 0.9.10
|
160
|
+
type: :development
|
161
|
+
version_requirements: *id009
|
162
|
+
- !ruby/object:Gem::Dependency
|
163
|
+
name: rcov
|
164
|
+
prerelease: false
|
165
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
166
|
+
none: false
|
167
|
+
requirements:
|
168
|
+
- - ">="
|
169
|
+
- !ruby/object:Gem::Version
|
170
|
+
hash: 41
|
171
|
+
segments:
|
172
|
+
- 0
|
173
|
+
- 9
|
174
|
+
- 9
|
175
|
+
version: 0.9.9
|
176
|
+
type: :development
|
177
|
+
version_requirements: *id010
|
178
|
+
- !ruby/object:Gem::Dependency
|
179
|
+
name: shoulda
|
180
|
+
prerelease: false
|
181
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
182
|
+
none: false
|
183
|
+
requirements:
|
184
|
+
- - ">="
|
185
|
+
- !ruby/object:Gem::Version
|
186
|
+
hash: 37
|
187
|
+
segments:
|
188
|
+
- 2
|
189
|
+
- 11
|
190
|
+
- 3
|
191
|
+
version: 2.11.3
|
192
|
+
type: :development
|
193
|
+
version_requirements: *id011
|
194
|
+
- !ruby/object:Gem::Dependency
|
195
|
+
name: rest-client
|
196
|
+
prerelease: false
|
197
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
198
|
+
none: false
|
199
|
+
requirements:
|
200
|
+
- - ">="
|
201
|
+
- !ruby/object:Gem::Version
|
202
|
+
hash: 3
|
203
|
+
segments:
|
204
|
+
- 0
|
205
|
+
version: "0"
|
206
|
+
type: :runtime
|
207
|
+
version_requirements: *id012
|
208
|
+
- !ruby/object:Gem::Dependency
|
209
|
+
name: json
|
210
|
+
prerelease: false
|
211
|
+
requirement: &id013 !ruby/object:Gem::Requirement
|
212
|
+
none: false
|
213
|
+
requirements:
|
214
|
+
- - ">="
|
215
|
+
- !ruby/object:Gem::Version
|
216
|
+
hash: 3
|
217
|
+
segments:
|
218
|
+
- 0
|
219
|
+
version: "0"
|
220
|
+
type: :runtime
|
221
|
+
version_requirements: *id013
|
222
|
+
- !ruby/object:Gem::Dependency
|
223
|
+
name: hashugar
|
224
|
+
prerelease: false
|
225
|
+
requirement: &id014 !ruby/object:Gem::Requirement
|
226
|
+
none: false
|
227
|
+
requirements:
|
228
|
+
- - ">="
|
229
|
+
- !ruby/object:Gem::Version
|
230
|
+
hash: 3
|
231
|
+
segments:
|
232
|
+
- 0
|
233
|
+
version: "0"
|
234
|
+
type: :runtime
|
235
|
+
version_requirements: *id014
|
236
|
+
description: Litmos-Client is a Ruby gem that provides a wrapper for interacting with the Litmos Learning Management System API.
|
237
|
+
email: kennon@angryturnip.com
|
238
|
+
executables: []
|
239
|
+
|
240
|
+
extensions: []
|
241
|
+
|
242
|
+
extra_rdoc_files:
|
243
|
+
- LICENSE.txt
|
244
|
+
- README.rdoc
|
245
|
+
files:
|
246
|
+
- Gemfile
|
247
|
+
- Gemfile.lock
|
248
|
+
- LICENSE.txt
|
249
|
+
- README.rdoc
|
250
|
+
- Rakefile
|
251
|
+
- VERSION
|
252
|
+
- lib/litmos-client.rb
|
253
|
+
- lib/litmos_client.rb
|
254
|
+
- lib/litmos_client/user.rb
|
255
|
+
- litmos-client.gemspec
|
256
|
+
- test/helper.rb
|
257
|
+
- test/test_litmos_client.rb
|
258
|
+
homepage: http://github.com/kennon/litmos-client
|
259
|
+
licenses:
|
260
|
+
- MIT
|
261
|
+
post_install_message:
|
262
|
+
rdoc_options: []
|
263
|
+
|
264
|
+
require_paths:
|
265
|
+
- lib
|
266
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
267
|
+
none: false
|
268
|
+
requirements:
|
269
|
+
- - ">="
|
270
|
+
- !ruby/object:Gem::Version
|
271
|
+
hash: 3
|
272
|
+
segments:
|
273
|
+
- 0
|
274
|
+
version: "0"
|
275
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
276
|
+
none: false
|
277
|
+
requirements:
|
278
|
+
- - ">="
|
279
|
+
- !ruby/object:Gem::Version
|
280
|
+
hash: 3
|
281
|
+
segments:
|
282
|
+
- 0
|
283
|
+
version: "0"
|
284
|
+
requirements: []
|
285
|
+
|
286
|
+
rubyforge_project:
|
287
|
+
rubygems_version: 1.8.17
|
288
|
+
signing_key:
|
289
|
+
specification_version: 3
|
290
|
+
summary: Litmos-client is a Ruby wrapper for the Litmos API
|
291
|
+
test_files:
|
292
|
+
- test/helper.rb
|
293
|
+
- test/test_litmos_client.rb
|
294
|
+
has_rdoc:
|