smmrize 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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: []