smmrize 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 64c6cad01218d71976d7d4ccc34e7d60b530b7be
4
+ data.tar.gz: 32416a8aace3df1f13ff4e14f452fc29149d9fcc
5
+ SHA512:
6
+ metadata.gz: 1e2edd3e97a03ec26e4b0bb2d8851c2b6343745828e36984b036ffefb1ec4878aa4d43dc6bda503e65bbdac78bb91aa51a59e027de9dcaf45bc4f05701dd802d
7
+ data.tar.gz: 89586bdd8cd59bb5459c5c2a324ececdadb441138b285fb2d2e130a3962c5010a966a53e54bf3f09d5be5608da5b89dcb0c61758a6ea2a189c1c7b204aba2066
data/lib/smmrize.rb ADDED
@@ -0,0 +1,23 @@
1
+ require "CGI"
2
+ require "net/http"
3
+ require "JSON"
4
+
5
+ require "smmrize/version"
6
+ require "smmrize/request_types/webpage"
7
+ require "smmrize/request_types/document"
8
+
9
+ module Smmrize
10
+ class Defaults
11
+ class << self
12
+ attr_writer :api_key, :client_name
13
+
14
+ def api_key
15
+ @api_key or raise Exception.new "Smmrize::Defaults API Key is not set"
16
+ end
17
+
18
+ def api_url
19
+ 'http://api.smmry.com/'
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,46 @@
1
+ module Smmrize
2
+ def self.document(options={})
3
+ raise ArgumentError, "Options should be a hash" unless options.is_a?(Hash)
4
+ raise ArgumentError, "Maximum number of options are #{document_option_defaults.size}" unless options.size <= document_option_defaults.size
5
+
6
+ send_document_request(options)
7
+ end
8
+
9
+ def self.send_document_request(options)
10
+ uri = URI(prepare_document_options(options))
11
+ response = Net::HTTP.post_form(uri, 'sm_api_input': options[:input])
12
+ JSON.parse(response.body)
13
+ end
14
+
15
+ def self.prepare_document_options(options)
16
+ raise ArgumentError, "Options must contain an `input` parameter" unless options.keys.include?(:input)
17
+ raise ArgumentError, "Options must not contain a URl - Did you mean to use `Smmrize.webpage?`" if options.keys.include?(:url)
18
+ options = document_option_defaults.merge(options)
19
+ create_document_query_string(options)
20
+ end
21
+
22
+ def self.create_document_query_string(options)
23
+ raise ArgumentError, "Unknown key in `options`" unless options.keys == document_option_defaults.keys
24
+ query_string = "&SM_API_KEY=#{Smmrize::Defaults.api_key}&SM_LENGTH=#{options[:length]}&SM_KEYWORD_COUNT=#{options[:keywords]}"
25
+
26
+ if options[:avoid_quotes]
27
+ query_string += "&SM_QUOTE_AVOID"
28
+ end
29
+
30
+ if options[:with_break]
31
+ query_string += "&SM_WITH_BREAK"
32
+ end
33
+
34
+ Smmrize::Defaults.api_url + query_string
35
+ end
36
+
37
+ def self.document_option_defaults
38
+ {
39
+ input: nil,
40
+ length: 7,
41
+ keywords: 0,
42
+ avoid_quotes: false,
43
+ with_break: false
44
+ }
45
+ end
46
+ end
@@ -0,0 +1,45 @@
1
+ module Smmrize
2
+ def self.webpage(options={})
3
+ raise ArgumentError, "Options should be a hash" unless options.is_a?(Hash)
4
+ raise ArgumentError, "Maximum number of options are #{webpage_option_defaults.size}" unless options.size <= webpage_option_defaults.size
5
+
6
+ send_webpage_request(options)
7
+ end
8
+
9
+ def self.send_webpage_request(options)
10
+ url = prepare_webpage_options(options)
11
+ response = Net::HTTP.get_response(URI(url))
12
+ JSON.parse(response.body)
13
+ end
14
+
15
+ def self.prepare_webpage_options(options)
16
+ raise ArgumentError, "Options must contain a URL" unless options.keys.include?(:url)
17
+ options = webpage_option_defaults.merge(options)
18
+ create_webpage_query_string(options)
19
+ end
20
+
21
+ def self.create_webpage_query_string(options)
22
+ raise ArgumentError, "Unknown key in `options`" unless options.keys == webpage_option_defaults.keys
23
+ query_string = "&SM_API_KEY=#{Smmrize::Defaults.api_key}&SM_LENGTH=#{options[:length]}&SM_KEYWORD_COUNT=#{options[:keywords]}"
24
+
25
+ if options[:avoid_quotes]
26
+ query_string += "&SM_QUOTE_AVOID"
27
+ end
28
+
29
+ if options[:with_break]
30
+ query_string += "&SM_WITH_BREAK"
31
+ end
32
+
33
+ Smmrize::Defaults.api_url + query_string + "&SM_URL=#{CGI::escape(options[:url])}"
34
+ end
35
+
36
+ def self.webpage_option_defaults
37
+ {
38
+ url: nil,
39
+ length: 7,
40
+ keywords: 0,
41
+ avoid_quotes: false,
42
+ with_break: false
43
+ }
44
+ end
45
+ end
@@ -0,0 +1,3 @@
1
+ module Smmrize
2
+ VERSION = "0.1.1"
3
+ end
metadata ADDED
@@ -0,0 +1,47 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: smmrize
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Kieran Eglin
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-04-26 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A dead-simple way to communicate with the SMMRY API
14
+ email: kieran.eglin@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/smmrize.rb
20
+ - lib/smmrize/request_types/document.rb
21
+ - lib/smmrize/request_types/webpage.rb
22
+ - lib/smmrize/version.rb
23
+ homepage: https://github.com/kieraneglin/smmrize
24
+ licenses:
25
+ - MIT
26
+ metadata: {}
27
+ post_install_message:
28
+ rdoc_options: []
29
+ require_paths:
30
+ - lib
31
+ required_ruby_version: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ required_rubygems_version: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ requirements: []
42
+ rubyforge_project:
43
+ rubygems_version: 2.6.2
44
+ signing_key:
45
+ specification_version: 4
46
+ summary: Smmrize
47
+ test_files: []