clever-api 0.0.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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/clever-api.rb +89 -0
  3. metadata +58 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8417babc21a9737b56bd723899d23be797dcd1c6
4
+ data.tar.gz: 4da164b94ec76fa6e251b18f1b4552e5a77ab6e5
5
+ SHA512:
6
+ metadata.gz: 6a21f58a305a5849145732e718e16bcfb94a4bc613e94ba7111ec345370f7fe7089ecd23952e2dc73c47ac5919a9795ca312a083be251d043caf0c4b77f60ab8
7
+ data.tar.gz: e322a8da2b1b96f2b0b039d06c4a53c3ed66032564f8cb106037a62bd543a8afd11d1bfc3ae749b2e7a926831def5c884e1e58a7bca11fe0c1952b4176d79b3f
@@ -0,0 +1,89 @@
1
+ require 'rest-client'
2
+ require 'digest/md5'
3
+
4
+ class CleverBot
5
+ def initialize
6
+ @service_uri = 'http://www.cleverbot.com/webservicemin'
7
+ @post_params = {
8
+ start: 'y',
9
+ icognoid: 'wsf',
10
+ fno: '0',
11
+ sub: 'Say',
12
+ islearning: '1',
13
+ cleanslate: 'false'
14
+ }
15
+ @backlog = []
16
+ end
17
+
18
+ def think thought
19
+ @post_params['stimulus'] = thought
20
+ response_data = make_request
21
+ save_post response_data
22
+ response = CleverBotResponse.new response_data
23
+ @backlog.push response
24
+ response.answer
25
+ end
26
+
27
+ def backlog
28
+ @backlog.map(&:dup)
29
+ end
30
+
31
+ private
32
+ def build_query
33
+ current_query = @post_params.to_querystring
34
+ @post_params['icognocheck'] = Digest::MD5.hexdigest current_query[9..34]
35
+ @post_params.to_querystring
36
+ end
37
+
38
+ def make_request
39
+ query_string = build_query
40
+ result = RestClient.post @service_uri, query_string
41
+ return result.body.split "\r"
42
+ end
43
+
44
+ def save_post response
45
+ {
46
+ sessionid: 1,
47
+ logurl: 2,
48
+ vText8: 3,
49
+ vText7: 4,
50
+ vText6: 5,
51
+ vText5: 6,
52
+ vText4: 7,
53
+ vText3: 8,
54
+ vText2: 9,
55
+ prevref: 10,
56
+ emotionalhistory: 12,
57
+ ttsLocMP3: 13,
58
+ ttsLocTXT: 14,
59
+ ttsLocTXT3: 15,
60
+ ttsText: 16,
61
+ lineRef: 17,
62
+ lineURL: 18,
63
+ linePOST: 19,
64
+ lineChoices: 20,
65
+ lineChoicesAbbrev: 21,
66
+ typingData: 22,
67
+ divert: 23
68
+ }.each_pair do |key, value|
69
+ @post_params[key] = response[value]
70
+ end
71
+ end
72
+ end
73
+
74
+ class CleverBotResponse
75
+ attr_reader :question, :answer
76
+
77
+ def initialize response_data
78
+ @question = response_data[8]
79
+ @answer = response_data[16]
80
+ end
81
+ end
82
+
83
+
84
+ class Hash
85
+ def to_querystring
86
+ self.map { |pair| "#{URI::encode pair.first.to_s}=#{URI::encode pair.last.to_s}" }
87
+ .join '&'
88
+ end
89
+ end
metadata ADDED
@@ -0,0 +1,58 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: clever-api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Francis Hinson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-02-21 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
+ description: CleverBot API for Ruby
28
+ email: francis@chesscademy.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - lib/clever-api.rb
34
+ homepage: https://github.com/fhinson/clever-api
35
+ licenses:
36
+ - MIT
37
+ metadata: {}
38
+ post_install_message:
39
+ rdoc_options: []
40
+ require_paths:
41
+ - lib
42
+ required_ruby_version: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ required_rubygems_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
52
+ requirements: []
53
+ rubyforge_project:
54
+ rubygems_version: 2.4.5
55
+ signing_key:
56
+ specification_version: 4
57
+ summary: CleverBot API for Ruby
58
+ test_files: []