dad_jokes 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6458e7c7dea8b3f11a0781a7c001bcca45c25784
4
- data.tar.gz: fbb508013a6343ab5f5ae3b4eb12b1bdec296b29
3
+ metadata.gz: 1a1ca86fccc05f9065e9b065c7669e0034661554
4
+ data.tar.gz: bb45121a2a6acf3ea48a7c673ea67e69881b9948
5
5
  SHA512:
6
- metadata.gz: 4ed3ca953555fab8d47375cc1e60e425d1814ceb20037d1e9fa228dd53565b1c9627cd0b402876c96653211b024fd65788b6dc3ed5559afdf4161c256cfd7048
7
- data.tar.gz: 5425d892c8398142888c50d991419ba910b9b9698efabe1229db83b3c72c4f6c10e881cda338d7c9eb833aec89d6d74ab33c30499d7b9f984df4232813efd2de
6
+ metadata.gz: baa66da84ea54254ea6ae94c65024e925f664e681b90ec5bc157a5faedba9bbebccdfcdd17a55ac09774b4ceec67b622e40710741dad5d2d41f877248aad6a65
7
+ data.tar.gz: 8e247ae1fdc2d7901917317c548cb524f11f869e22b31225de2cdc837c45785e2c5f93a408d03502c0bc96145dd798a3fab26eaa78bf2a3868da0fef512202b7
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ *.gem
data/README.md CHANGED
@@ -5,56 +5,91 @@
5
5
  <br/>
6
6
 
7
7
  Welcome to <b>Dad Jokes</b>! <br/>
8
+ _( Wait, [what's a Dad joke?](https://en.wikipedia.org/wiki/Dad_joke) )_ <br/>
9
+
8
10
  Generate random dad jokes using this gem.
9
11
 
10
12
  ## Installation
11
13
 
12
- Add this line to your application's Gemfile:
14
+ <b>1.</b> Add this line to your application's Gemfile:
13
15
 
14
16
  ``` ruby
15
17
  gem 'dad_jokes'
16
18
  ```
17
19
 
18
- And then execute:
20
+ and then execute:
19
21
 
20
22
  $ bundle
21
23
 
22
- Or install it yourself as:
24
+ <b>OR,</b>
25
+
26
+ <b>2.</b> Install it yourself as:
23
27
 
24
28
  $ gem install dad_jokes
25
29
 
30
+ and require in your script as :
31
+ ```ruby
32
+ require 'dad_jokes'
33
+ ```
34
+
26
35
  ## Usage
27
36
 
28
- #### #1 Generate a random Dad joke
37
+ #### 1. Get a random Dad joke
29
38
 
30
39
  ``` ruby
40
+ # Get a random joke
31
41
  DadJokes.random
32
42
  ```
33
43
 
34
- Sample Output #1 : ``"Dad, I'm hungry." "Hello, Hungry. I'm Dad."``
44
+ Sample Output #1 : ``'"Dad, I'm hungry." "Hello, Hungry. I'm Dad."'``
35
45
 
36
- Sample Output #2 : ``Why didn’t the skeleton cross the road? Because he had no guts.``
46
+ Sample Output #2 : ``'My dog used to chase people on a bike a lot. It got so bad I had to take his bike away.'``
37
47
 
38
- #### #2 Search for Dad jokes
48
+ #### 2. Search for Dad jokes
39
49
 
40
50
  ``` ruby
41
- DadJokes.search(term:, limit:)
51
+ # Get array of jokes by passing a search term ; and setting limit(optional)
52
+ DadJokes.search(term: "cannibal", limit: 1)
42
53
  ```
43
54
 
44
- * _term:_
55
+ Output : ``["A cannibal is someone who is fed up with people."]``
56
+
57
+ * _term :_
45
58
  - (**required*)
46
59
  - Search term goes here
47
- * _limit:_
60
+ * _limit :_
48
61
  - (**optional*)
49
62
  - Set limit for the number of jokes (because, obviously you're tired of laughing!).
50
- - Default : <b>5 jokes</b>
63
+ - By default : <b>5 jokes</b>
64
+
65
+ #### 3. Generate & save a random joke as image (in .png format)
66
+
67
+ ```ruby
68
+ # Saves a random joke in png format
69
+ DadJokes.random_image
70
+ ```
51
71
 
72
+ _Sample Vector image :_ <br>
73
+ ![Random Joke](./img/joke_vX8MeFdUDlb.png)
74
+
75
+ _Output to console :_ <br>
76
+ ``"Dad died because he couldn't remember his blood type. I will never forget his last words. Be positive. ( Saved as image in location: joke_vX8MeFdUDlb.png !)"``
77
+
78
+
79
+ <b>NOTE:</b> If you're inside a Rails project, image will be saved to root of the directory. Otherwise, if you're running the method in a ruby script, the image will be saved in the relative directory.
80
+
52
81
  ## Contributing
53
82
 
54
- Bug reports and pull requests are welcome on GitHub at https://github.com/aswinsanakan/dad_jokes. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
83
+ [Bug reports](https://github.com/aswinsanakan/dad_jokes/issues) and pull requests are welcome on GitHub at https://github.com/aswinsanakan/dad_jokes. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
55
84
 
85
+ Thanks to [icanhazdadjoke](https://icanhazdadjoke.com/) for the free API.
86
+ You can submit new jokes [here](https://icanhazdadjoke.com/submit).
56
87
 
57
88
  ## License
58
89
 
59
90
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
60
91
 
92
+
93
+
94
+
95
+
@@ -6,11 +6,11 @@ require 'dad_jokes/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "dad_jokes"
8
8
  spec.version = DadJokes::VERSION
9
- spec.authors = ["aswinsanakan"]
9
+ spec.authors = ["Aswin Sanakan"]
10
10
  spec.email = ["aswinsanakan@gmail.com"]
11
11
 
12
12
  spec.summary = %q{Gem to generate random popular Dad Jokes.}
13
- spec.description = %q{Gem to generate random popular Dad Jokes.}
13
+ spec.description = %q{Gem to generate random popular Dad Jokes. Features include: Generating jokes, Search for jokes, Save a random joke as image (as .png), etc}
14
14
  spec.homepage = "https://github.com/aswinsanakan/dad_jokes"
15
15
  spec.license = "MIT"
16
16
 
@@ -34,8 +34,7 @@ Gem::Specification.new do |spec|
34
34
  spec.add_development_dependency "rake", "~> 10.0"
35
35
  spec.add_development_dependency "minitest", "~> 5.0"
36
36
 
37
- spec.add_dependency "json"
38
- spec.add_dependency "faraday"
39
- spec.add_dependency "faraday_middleware"
40
- spec.add_dependency "pry"
37
+ spec.add_dependency "json", '~> 1.8'
38
+ spec.add_dependency "faraday", '~> 0.13.1'
39
+ spec.add_dependency "faraday_middleware", '~> 0.12.2'
41
40
  end
@@ -2,11 +2,11 @@ require "dad_jokes/version"
2
2
  require "faraday"
3
3
  require "faraday_middleware"
4
4
  require "json"
5
- require 'pry'
5
+ require 'open-uri'
6
6
 
7
7
  module DadJokes
8
8
 
9
- API_URL = "https://icanhazdadjoke.com/".freeze
9
+ API_URL = "https://icanhazdadjoke.com".freeze
10
10
  API_HEADERS = {"Accept": "application/json"}
11
11
  DEFAULT_LIMIT = 5
12
12
 
@@ -16,6 +16,18 @@ module DadJokes
16
16
  get_joke(joke_object)
17
17
  end
18
18
 
19
+ def self.random_image
20
+ uri = "/"
21
+ joke_object = parse_response(uri)
22
+ joke_id = get_id(joke_object)
23
+ image_uri = "/j/#{joke_id}.png"
24
+ url = File.join(API_URL, image_uri).to_s
25
+ download = open(url)
26
+ path = get_image_save_path(joke_id)
27
+ IO.copy_stream(download, path)
28
+ "#{get_joke(joke_object)} ( Saved as image in location: #{path} !)"
29
+ end
30
+
19
31
  def self.fetch(joke_id:)
20
32
  uri = "/j/#{joke_id}"
21
33
  joke_object = parse_response(uri)
@@ -41,9 +53,12 @@ module DadJokes
41
53
  joke_object['joke']
42
54
  end
43
55
 
56
+ def self.get_id(joke_object)
57
+ joke_object['id']
58
+ end
59
+
44
60
  def self.filter_jokes(jokes_hash)
45
- # binding.pry
46
- jokes_arr = jokes_hash['results']
61
+ jokes_arr = jokes_hash['results'] || []
47
62
  jokes = []
48
63
  jokes_arr.each do |joke|
49
64
  jokes << joke['joke']
@@ -55,8 +70,19 @@ module DadJokes
55
70
  Faraday.new(url: API_URL, headers: API_HEADERS)
56
71
  end
57
72
 
58
- def self.parse_response(body)
59
-
73
+ def self.get_image_save_path(joke_id)
74
+ if in_rails_app?
75
+ File.join(Rails.root,"public","dadjokes","joke_#{joke_id}.png")
76
+ else
77
+ "joke_#{joke_id}.png"
78
+ end
79
+ end
80
+
81
+ def self.in_rails_app?
82
+ klass = Module.const_get("Rails")
83
+ return klass.is_a?(Module)
84
+ rescue NameError
85
+ return false
60
86
  end
61
87
 
62
88
  end
@@ -1,3 +1,3 @@
1
1
  module DadJokes
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dad_jokes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
- - aswinsanakan
7
+ - Aswin Sanakan
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-10-26 00:00:00.000000000 Z
11
+ date: 2017-11-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -56,59 +56,46 @@ dependencies:
56
56
  name: json
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: '1.8'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: '1.8'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: faraday
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: 0.13.1
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: 0.13.1
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: faraday_middleware
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: pry
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
87
+ - - "~>"
102
88
  - !ruby/object:Gem::Version
103
- version: '0'
89
+ version: 0.12.2
104
90
  type: :runtime
105
91
  prerelease: false
106
92
  version_requirements: !ruby/object:Gem::Requirement
107
93
  requirements:
108
- - - ">="
94
+ - - "~>"
109
95
  - !ruby/object:Gem::Version
110
- version: '0'
111
- description: Gem to generate random popular Dad Jokes.
96
+ version: 0.12.2
97
+ description: 'Gem to generate random popular Dad Jokes. Features include: Generating
98
+ jokes, Search for jokes, Save a random joke as image (as .png), etc'
112
99
  email:
113
100
  - aswinsanakan@gmail.com
114
101
  executables: []