clever-api 0.0.1

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