liblab_the_one 0.1.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -7
- data/README.md +17 -6
- data/design.md +19 -0
- data/lib/liblab/quote/guess_the_quote.rb +34 -0
- data/lib/liblab/version.rb +1 -1
- data/lib/liblab.rb +1 -1
- metadata +3 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 26956ba91f4879a09844057d5b0738c308793845c10bf181d2f0772ad534743a
|
4
|
+
data.tar.gz: ffacc57af7e65676ed63a5ec1723273b7134ae4d3a8c9b16c9f46875651b4d7a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e98bdb3e2251d0233407bc2738c62ecebc50455fdde8cf37e6bd195f132692ce269df0be97f565c34d4cfa20e8af2ab04331fc3734b0cd0d872cc2fcf70a8d5b
|
7
|
+
data.tar.gz: e461d819b73aaa5faf06888b96891ba4231eac84435b6d92f68086b8828a0b68e131e7f12547061036efa4b1202e7176e81fa778ab173f750e4c8df253ab7fc5
|
data/Gemfile.lock
CHANGED
@@ -1,15 +1,13 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
liblab_the_one (0.
|
5
|
-
pry (~> 0.14.2)
|
4
|
+
liblab_the_one (0.3.0)
|
6
5
|
rest-client (~> 2.1.0)
|
7
6
|
|
8
7
|
GEM
|
9
8
|
remote: https://rubygems.org/
|
10
9
|
specs:
|
11
10
|
ast (2.4.2)
|
12
|
-
coderay (1.1.3)
|
13
11
|
diff-lcs (1.5.0)
|
14
12
|
domain_name (0.5.20190701)
|
15
13
|
unf (>= 0.0.5, < 1.0.0)
|
@@ -17,7 +15,6 @@ GEM
|
|
17
15
|
http-cookie (1.0.5)
|
18
16
|
domain_name (~> 0.5)
|
19
17
|
json (2.6.3)
|
20
|
-
method_source (1.0.0)
|
21
18
|
mime-types (3.4.1)
|
22
19
|
mime-types-data (~> 3.2015)
|
23
20
|
mime-types-data (3.2023.0218.1)
|
@@ -25,9 +22,6 @@ GEM
|
|
25
22
|
parallel (1.23.0)
|
26
23
|
parser (3.2.2.1)
|
27
24
|
ast (~> 2.4.1)
|
28
|
-
pry (0.14.2)
|
29
|
-
coderay (~> 1.1)
|
30
|
-
method_source (~> 1.0)
|
31
25
|
rainbow (3.1.1)
|
32
26
|
rake (13.0.6)
|
33
27
|
regexp_parser (2.8.0)
|
data/README.md
CHANGED
@@ -4,6 +4,14 @@ This gem is an API wrapper for (the one api)[https://the-one-api.dev/].
|
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
7
|
+
Install `ruby` and `bundler`
|
8
|
+
|
9
|
+
Add the following environment variables. You can request an `access_token` at https://the-one-api.dev/.
|
10
|
+
|
11
|
+
```
|
12
|
+
LIBLAB_ACCESS_TOKEN=
|
13
|
+
```
|
14
|
+
|
7
15
|
Add this line to your application's Gemfile:
|
8
16
|
|
9
17
|
```ruby
|
@@ -17,6 +25,8 @@ And then execute:
|
|
17
25
|
Or install it yourself as:
|
18
26
|
|
19
27
|
$ gem install pex_api
|
28
|
+
|
29
|
+
After installing you can test by running `irb`, then `require "liblab"` and then running `Liblab::Movie::List.call()` This should return a list of movies.
|
20
30
|
|
21
31
|
## Usage
|
22
32
|
`Liblab::Movie::List.call()` will get a list of movies
|
@@ -31,15 +41,16 @@ Or install it yourself as:
|
|
31
41
|
|
32
42
|
`Liblab::Quote::Get.call(quote_id)` will retrieve an individual quote
|
33
43
|
|
34
|
-
Each class/method will have it's own parameters depending on the type of request and it's expected input parameters.
|
35
44
|
|
36
|
-
|
45
|
+
## Bonus Game: Guess the quote!
|
37
46
|
|
38
|
-
|
47
|
+
Help test and build your Lord of The Rings knowledge.
|
39
48
|
|
40
|
-
|
41
|
-
|
42
|
-
|
49
|
+
Use `Liblab::Quote::GuessTheQuote.call()` to return a random quote with a movie name.
|
50
|
+
|
51
|
+
You can tell people the quote and they have to guess the movie.
|
52
|
+
|
53
|
+
Example response is `{:quote=>"Your bodyguard?", :movie_name=>"The Two Towers"}`
|
43
54
|
|
44
55
|
## Development
|
45
56
|
|
data/design.md
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# Liblab one API SDK design
|
2
|
+
|
3
|
+
This is a `ruby gem` implementation. The gem was bootstrapped with `Bundler`.
|
4
|
+
|
5
|
+
The file structure follows standard file structure design stated by https://guides.rubygems.org/make-your-own-gem/. and https://bundler.io/guides/creating_gem.html
|
6
|
+
|
7
|
+
There is an `https helper class` to help with error handling.
|
8
|
+
|
9
|
+
`client/base` handles the actual api request preparation and calling.
|
10
|
+
|
11
|
+
There is a configuration file to allow for the `access token` to be added via an environment variable.
|
12
|
+
|
13
|
+
There is a custom `logging` system to debug requests.
|
14
|
+
|
15
|
+
`Rspec` was used for automated testing and tests all implemented endpoints and possible failures.
|
16
|
+
|
17
|
+
Each class contains a command for an endpoint request. This follows a `service object` approach with a `call` method to trigger the request. https://www.toptal.com/ruby-on-rails/rails-service-objects-tutorial
|
18
|
+
|
19
|
+
`Pagination` was also implemented for quotes list.
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Liblab
|
2
|
+
module Quote
|
3
|
+
class GuessTheQuote
|
4
|
+
|
5
|
+
# Example returns {:quote=>"Your bodyguard?", :movie_name=>"The Two Towers"}
|
6
|
+
|
7
|
+
def self.call()
|
8
|
+
page = rand(2)
|
9
|
+
_path = "quote?page=#{page}"
|
10
|
+
|
11
|
+
# Get a random page of quotes
|
12
|
+
quote_result = ::Liblab::Client::Base.new.get(_path)
|
13
|
+
|
14
|
+
if quote_result.code == 200
|
15
|
+
# Get a random quote from returned quotes
|
16
|
+
index = rand(999)
|
17
|
+
quote = JSON.parse(quote_result.body)["docs"][index]
|
18
|
+
movie_result = ::Liblab::Movie::Get.call(quote["movie"])
|
19
|
+
|
20
|
+
if movie_result.code == 200
|
21
|
+
# Get movie name for the selected quote
|
22
|
+
movie = JSON.parse(movie_result.body)["docs"][0]
|
23
|
+
|
24
|
+
return { quote: quote["dialog"], movie_name: movie["name"] }
|
25
|
+
else
|
26
|
+
return { error: "Could not get movie_result", message: movie_result.body }
|
27
|
+
end
|
28
|
+
else
|
29
|
+
return { error: "Could not get quote", message: quote_result.body }
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/lib/liblab/version.rb
CHANGED
data/lib/liblab.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "pry"
|
4
3
|
require_relative "liblab/version"
|
5
4
|
require_relative "liblab/configuration"
|
6
5
|
require_relative "liblab/https"
|
@@ -11,6 +10,7 @@ require_relative "liblab/movie/get"
|
|
11
10
|
require_relative "liblab/movie/get_quotes"
|
12
11
|
require_relative "liblab/quote/list"
|
13
12
|
require_relative "liblab/quote/get"
|
13
|
+
require_relative "liblab/quote/guess_the_quote"
|
14
14
|
|
15
15
|
module Liblab
|
16
16
|
class Error < StandardError; end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: liblab_the_one
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Monty Lennie
|
@@ -24,20 +24,6 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 2.1.0
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: pry
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 0.14.2
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: 0.14.2
|
41
27
|
description: Allows easy connection to liblab API
|
42
28
|
email:
|
43
29
|
- montylennie@gmail.com
|
@@ -54,6 +40,7 @@ files:
|
|
54
40
|
- LICENSE.txt
|
55
41
|
- README.md
|
56
42
|
- Rakefile
|
43
|
+
- design.md
|
57
44
|
- lib/liblab.rb
|
58
45
|
- lib/liblab/client/base.rb
|
59
46
|
- lib/liblab/configuration.rb
|
@@ -63,6 +50,7 @@ files:
|
|
63
50
|
- lib/liblab/movie/get_quotes.rb
|
64
51
|
- lib/liblab/movie/list.rb
|
65
52
|
- lib/liblab/quote/get.rb
|
53
|
+
- lib/liblab/quote/guess_the_quote.rb
|
66
54
|
- lib/liblab/quote/list.rb
|
67
55
|
- lib/liblab/version.rb
|
68
56
|
- sig/liblab.rbs
|