meaning-cloud 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8bb476db659b7be477042c9e8133214fc865b74e
4
+ data.tar.gz: a9144be6636c66e2d119fdb4c730746f79c40e50
5
+ SHA512:
6
+ metadata.gz: b3d95976bed9d3d776bdb45c352fc37680a417e1f0d07249ac283ffef1d7f0a517e7bc828cdcf9ad97802cb0b0eaca47085c32d465c5cfc85194085f7e14f8f1
7
+ data.tar.gz: e6931227a23276dc5a0f5c72382f3b39edbb23f5d109e9c585ef1d06541c337bbec57a41ffe84e8648b077592ae330fa524612da930e970341a87cad154dd1f5
@@ -0,0 +1,14 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ $:.unshift 'lib'
5
+
6
+ desc 'Default: run unit tests.'
7
+ task :default => [:spec]
8
+
9
+ require 'rspec/core/rake_task'
10
+
11
+ desc 'Run specs'
12
+ RSpec::Core::RakeTask.new do |t|
13
+ t.pattern = './spec/**/*_spec.rb'
14
+ end
@@ -0,0 +1,26 @@
1
+ require 'json'
2
+ require 'rest_client'
3
+ require 'meaning_cloud/topics'
4
+
5
+ # Top level name space for the entire Gem.
6
+ module MeaningCloud
7
+ API_BASE = 'https://api.meaningcloud.com/topics-1.2.php'
8
+
9
+ def self.configuration
10
+ @configuration ||= Configuration.new
11
+ end
12
+
13
+ def self.configure
14
+ self.configuration ||= Configuration.new
15
+ yield(configuration) if block_given?
16
+ end
17
+
18
+ # Main configuration class.
19
+ class Configuration
20
+ attr_accessor :key
21
+
22
+ def initialize
23
+ @key = nil
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,23 @@
1
+ module MeaningCloud
2
+ # A class to hold all topic extraction related code.
3
+ class Topics
4
+ def self.extract_topics(options = nil)
5
+ fail(Exception, 'Missing key') if MeaningCloud.configuration.key.nil?
6
+
7
+ options ||= {}
8
+
9
+ options = {
10
+ of: :json,
11
+ key: MeaningCloud.configuration.key,
12
+ lang: :en,
13
+ tt: 'ec',
14
+ uw: 'y'
15
+ }.merge(options)
16
+
17
+ query = URI.encode_www_form(options)
18
+
19
+ result = RestClient.post("#{API_BASE}?#{query}", {})
20
+ JSON.parse(result)
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe MeaningCloud::Topics do
4
+ after :each do
5
+ MeaningCloud.configuration.key = nil
6
+ end
7
+
8
+ it 'raises an error on empty key' do
9
+ MeaningCloud.configuration.key = nil
10
+ expect { MeaningCloud::Topics.extract_topics(txt: Faker::Company.bs) }.to raise_error(Exception)
11
+ end
12
+
13
+ it 'sends a proper request' do
14
+ result = "{\"status\":{\"code\":\"0\",\"msg\":\"OK\",\"credits\":\"1\",\"remaining_credits\":\"39993\"},\"entity_list\":[],\"concept_list\":[]}"
15
+ key = SecureRandom.uuid
16
+ MeaningCloud.configuration.key = key
17
+
18
+ txt = Faker::Company.bs
19
+
20
+ expect(RestClient).to receive(
21
+ :post
22
+ ).with(
23
+ "https://api.meaningcloud.com/topics-1.2.php?of=json&key=#{key}&lang=en&tt=ec&uw=y&txt=#{txt.gsub(' ', '+')}", {}
24
+ ).and_return(
25
+ result
26
+ )
27
+
28
+ expect(MeaningCloud::Topics.extract_topics(txt: txt)).to eq(JSON.parse(result))
29
+ end
30
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe MeaningCloud do
4
+ after :each do
5
+ MeaningCloud.configuration.key = nil
6
+ end
7
+
8
+ it 'has the correct default' do
9
+ expect(MeaningCloud.configuration.key).to be nil
10
+ end
11
+
12
+ it 'sets the correct configuration' do
13
+ expect(MeaningCloud.configuration.key).to be nil
14
+
15
+ key = SecureRandom.uuid
16
+ MeaningCloud.configure do |config|
17
+ config.key = key
18
+ end
19
+
20
+ expect(MeaningCloud.configuration.key).to equal(key)
21
+ end
22
+ end
@@ -0,0 +1,16 @@
1
+ require 'codeclimate-test-reporter'
2
+ CodeClimate::TestReporter.start
3
+
4
+ require 'bundler/setup'
5
+ require 'meaning_cloud'
6
+ require 'pry'
7
+ require 'faker'
8
+ require 'json'
9
+
10
+ # require_relative 'support/fakes'
11
+
12
+ RSpec.configure do |config|
13
+ config.disable_monkey_patching!
14
+ config.formatter = 'documentation'
15
+ config.color = true
16
+ end
metadata ADDED
@@ -0,0 +1,128 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: meaning-cloud
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Nadav Shatz
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-03-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rest-client
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.1'
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: 3.1.0
51
+ type: :development
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - "~>"
56
+ - !ruby/object:Gem::Version
57
+ version: '3.1'
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 3.1.0
61
+ - !ruby/object:Gem::Dependency
62
+ name: faker
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: semver
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ description: A Gem to expose a wrapping API for the Meaning Cloud API's
90
+ email: nadav@tailorbrands.com
91
+ executables: []
92
+ extensions: []
93
+ extra_rdoc_files: []
94
+ files:
95
+ - Rakefile
96
+ - lib/meaning_cloud.rb
97
+ - lib/meaning_cloud/topics.rb
98
+ - spec/lib/meaning_cloud/topics_spec.rb
99
+ - spec/lib/meaning_cloud_spec.rb
100
+ - spec/spec_helper.rb
101
+ homepage: https://github.com/TailorBrands/meaning-cloud
102
+ licenses:
103
+ - MIT
104
+ metadata: {}
105
+ post_install_message:
106
+ rdoc_options: []
107
+ require_paths:
108
+ - lib
109
+ required_ruby_version: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ required_rubygems_version: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ requirements: []
120
+ rubyforge_project:
121
+ rubygems_version: 2.4.5
122
+ signing_key:
123
+ specification_version: 4
124
+ summary: An API wrapper for Meaning Cloud API's
125
+ test_files:
126
+ - spec/lib/meaning_cloud/topics_spec.rb
127
+ - spec/lib/meaning_cloud_spec.rb
128
+ - spec/spec_helper.rb