ruby_cleverbot 0.1.0

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/ruby_cleverbot.rb +115 -0
  3. metadata +87 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: edebe61e86b1008c506588c15157e32ee02af03c
4
+ data.tar.gz: 50caa547fa1c7a68a565c647bde842a2319670c6
5
+ SHA512:
6
+ metadata.gz: 2a3e12772fdde02118ed2eca49668d15b053a7ecc7cb4e64d66e6e8bbf49f720391d6f40730a67f683df859a8ca49ec62e32d2288cab07c0168642bc80a2b4ec
7
+ data.tar.gz: 67924a5d94aaf533f48a7036fd710af4cbc8f64512b70861ecc00ee8f99455424fb3dd7547218eb7a29bbd85b5a878fc58be5daf8290c0b6331385df6addcd1b
@@ -0,0 +1,115 @@
1
+ require 'rest-client'
2
+ require 'open-uri'
3
+ require 'digest'
4
+ require 'htmlentities'
5
+
6
+ # for debug -> mitmproxy
7
+ # PROXY = 'http://127.0.0.1:8080'
8
+ # RestClient.proxy = PROXY
9
+
10
+ # cleverbot api
11
+ class RubyCleverbot
12
+
13
+ HOST = 'http://www.cleverbot.com'.freeze
14
+ RESOURCE = '/webservicemin'.freeze
15
+ API_URL = HOST + RESOURCE
16
+
17
+ HEADERS = {
18
+ 'user_agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36',
19
+ 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
20
+ 'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.7',
21
+ 'Accept-Language': 'en-us,en;q=0.8,en-us;q=0.5,en;q=0.3',
22
+ 'Cache-Control': 'no-cache',
23
+ 'Pragma': 'no-cache'
24
+ }
25
+
26
+ attr_reader :cookies
27
+ attr_reader :data
28
+ attr_reader :conversation
29
+ attr_reader :coder
30
+
31
+ def initialize
32
+ @coder = HTMLEntities.new
33
+ @data = {
34
+ 'stimulus': '',
35
+ 'start': 'y',
36
+ 'sessionid': '',
37
+ 'vText8': '',
38
+ 'vText7': '',
39
+ 'vText6': '',
40
+ 'vText5': '',
41
+ 'vText4': '',
42
+ 'vText3': '',
43
+ 'vText2': '',
44
+ 'icognoid': 'wsf',
45
+ 'icognocheck': '',
46
+ 'fno': 0,
47
+ 'prevref': '',
48
+ 'cb_settings_language': 'es',
49
+ 'emotionaloutput': '',
50
+ 'emotionalhistory': '',
51
+ 'asbotname': '',
52
+ 'ttsvoice': '',
53
+ 'typing': '',
54
+ 'lineref': '',
55
+ 'sub': 'Say',
56
+ 'islearning': 1,
57
+ 'cleanslate': 'False',
58
+ }
59
+ #get the cookies
60
+ response = make_get(HOST)
61
+ @cookies = response.cookies
62
+ @conversation = []
63
+ end
64
+
65
+ # call a get method
66
+ def make_get(url)
67
+ RestClient::Request.execute method: :get, url: url, headers: HEADERS, cookies: cookies
68
+ end
69
+
70
+ # call a post method
71
+ def make_post(url, json)
72
+ # RestClient.post url, json, headers
73
+ RestClient::Request.execute method: :post, url: url,payload: URI.encode_www_form(json), headers: HEADERS, cookies: cookies
74
+ end
75
+
76
+ def send_message(question)
77
+ # the current question
78
+ data[:stimulus] = question
79
+
80
+ # set data, for the conversation
81
+ set_conversation
82
+
83
+ # we need the token
84
+ enc_data = URI.encode_www_form(data)
85
+ token = Digest::MD5.hexdigest enc_data[9..34]
86
+ data[:icognocheck] = token
87
+ # puts "the token is #{data[:icognocheck]}"
88
+
89
+ response = make_post(API_URL, data)
90
+
91
+ clever_response = response.to_str.split(/[\r]+/)
92
+
93
+ # see HTML encoding of foreign language characters
94
+ clever_response[0] = coder.decode(clever_response[0])
95
+
96
+ # add the log
97
+ conversation << question
98
+ # add response from cleverbot to conversation
99
+ conversation << clever_response[0]
100
+
101
+ # return the response
102
+ clever_response[0]
103
+ end
104
+
105
+ def set_conversation
106
+ unless conversation.empty?
107
+ count = 1
108
+ conversation.first(8).reverse_each do |line|
109
+ count += 1
110
+ data[('vText' + count.to_s).to_sym] = line
111
+ end
112
+ end
113
+ end
114
+
115
+ end
metadata ADDED
@@ -0,0 +1,87 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ruby_cleverbot
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Radagast
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-04-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.10'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.10'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rest-client
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.6'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.6'
41
+ - !ruby/object:Gem::Dependency
42
+ name: htmlentities
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '4.3'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '4.3'
55
+ description: This gem is to send messages to cleverbot a get the responses.
56
+ email:
57
+ - radagast@openmailbox.org
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - lib/ruby_cleverbot.rb
63
+ homepage: https://github.com/radthebrown/ruby_cleverbot
64
+ licenses:
65
+ - MIT
66
+ metadata: {}
67
+ post_install_message:
68
+ rdoc_options: []
69
+ require_paths:
70
+ - lib
71
+ required_ruby_version: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: 1.9.3
76
+ required_rubygems_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ requirements: []
82
+ rubyforge_project:
83
+ rubygems_version: 2.2.2
84
+ signing_key:
85
+ specification_version: 4
86
+ summary: A simple gem to talk with CleverBot
87
+ test_files: []