textme-jtj 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/textme-jtj.rb +308 -0
  3. metadata +72 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: efd3fad619042756034c858c54525da5cb78c31d
4
+ data.tar.gz: 7902a3c58b792831d24f7dddef9d5f8ab772833d
5
+ SHA512:
6
+ metadata.gz: 69ce99cff5ba49a80a6dc290894307b3adaa71c98f19c3f609222abc3ccabaeed90a092f7dd4576843db2cface2d66a3e73098e2ee71a42a2050288d8d1223ce
7
+ data.tar.gz: 6b42f2c21262ce06995c7f9e596dec7f40cc3591e6ee946ffaba9af90366e34e8b620f1b1bd0439e43ef97d85a9cf0d5b77b1de1f0c20e08d60f9fcc07c4631b
data/lib/textme-jtj.rb ADDED
@@ -0,0 +1,308 @@
1
+ #
2
+ #Initialize once with the credentials
3
+ #Keep texting 'send_message' method to the number entered in the argument
4
+ #
5
+ #Dependencies -> 'twilio-ruby', 'metainspector'
6
+ #
7
+
8
+ require 'twilio-ruby' #The Twilio gem
9
+ require 'metainspector' #Gem to help extract the open graph data
10
+
11
+ module TextMe
12
+ class Core
13
+ #Constructor
14
+ #What: Initialize Twilio with credentials and save the from number
15
+ #Input: account_sid, auth_token => From twilio dashbaord
16
+ # 'from' number, 'to' number => from your twilio settings
17
+ #Output: No output
18
+ def initialize(account_sid, auth_token, sender_number, reciever_number)
19
+ #Initialize the twilio client
20
+ @client = Twilio::REST::Client.new account_sid, auth_token
21
+
22
+ #Save the 'from' and 'to' number as private variable
23
+ @sender_number = sender_number
24
+ @reciever_number = reciever_number
25
+ end
26
+
27
+ #Helper Method
28
+ #What: Take a youversion url and return the verse and the verse image from the open graph data
29
+ #Input: You version url of the verse
30
+ #Output: A hash with the (always) 'verse' => (verse name + verse text),
31
+ # (optional) 'image_url' => image verse
32
+ def meta_extractor(verse_id)
33
+ jtj = TextMe::JTJVerseExtractor.new
34
+ raw_data = jtj.extract_data(verse_id)
35
+
36
+ bible_extractor = TextMe::BibleExtractor.new
37
+ url = bible_extractor.verse_url_generator(raw_data["verse"])
38
+ #Use a Hash to store the verse and image url
39
+ metadata = Hash.new
40
+
41
+ page = MetaInspector.new(url)
42
+
43
+ #Get the verse name and the verse
44
+ metadata['verse'] = page.meta['og:title']
45
+
46
+ #If the page contains an opengraph image
47
+ if not raw_data['image']
48
+ if page.meta['og:image']
49
+ if page.meta['og:image'].include? 'http'
50
+ metadata['image_url'] = page.meta['og:image']
51
+ end
52
+ end
53
+ else
54
+ metadata['image_url'] = raw_data["image"]
55
+ end
56
+
57
+ return metadata
58
+ end
59
+
60
+ #What: Take the recievers number and the verse url. Calls the meta_extractor helper method
61
+ #Input: 'To' number, You version url of the verse
62
+ #Output: No actual output. Send's a text containing verse name(always), verse text(always) and verse image(optional) to the 'To' number
63
+ def send_message(verse_id)
64
+ #A call to the meta_extractor to get the verse name, verse text and verse image(optional)
65
+ verse_data = meta_extractor(verse_id)
66
+
67
+ #If: There is a verse image for the verse
68
+ #Else: There is no image
69
+ if verse_data['image_url']
70
+ #Sending a text with the twilio client
71
+ @client.api.account.messages.create(
72
+ from: @sender_number,
73
+ to: @reciever_number,
74
+ body: verse_data['verse'],
75
+ media_url: verse_data['image_url']
76
+ )
77
+ else
78
+ #Sending a text with the twilio client
79
+ @client.api.account.messages.create(
80
+ from: @sender_number,
81
+ to: @reciever_number,
82
+ body: verse_data['verse']
83
+ )
84
+
85
+ end
86
+ end
87
+ end
88
+
89
+ #Helper Class to generate the url from a verse name
90
+ class BibleExtractor
91
+ #Helper Method
92
+ #What: Take in the verse name and return the metadata as a Hash.
93
+ #Input: Verse name, for example 'Proverbs 3:5-6'.
94
+ # Can also accept chapter names eg. 'Romans 3' (not recommended due to the length of the chapters)
95
+ #Output: Returns the book, chapter number and the specfic verse (optional) rfom the verse name
96
+ def verse_meta_extractor(verse_name)
97
+ book_list =["Genesis", "Exodus", "Leviticus", "Numbers", "Deuteronomy", "Joshua", "Judges", "Ruth", "1 Samuel", "2 Samuel", "1 Kings", "2 Kings", "1 Chronicles", "2 Chronicles", "Ezra", "Nehemiah", "Esther", "Job", "Psalms", "Proverbs", "Ecclesiastes", "Song of Songs", "Isaiah", "Jeremiah", "Lamentations", "Ezekiel", "Daniel", "Hosea", "Joel", "Amos", "Obadiah", "Jonah", "Micah", "Nahum", "Habakkuk", "Zephaniah", "Haggai", "Zechariah", "Malachi", "Matthew", "Mark", "Luke", "John", "Acts", "Romans", "1 Corinthians", "2 Corinthians", "Galatians", "Ephesians", "Philippians", "Colossians", "1 Thessalonians", "2 Thessalonians", "1 Timothy", "2 Timothy", "Titus", "Philemon", "Hebrews", "James", "1 Peter", "2 Peter", "1 John", "2 John", "3 John", "Jude", "Revelation"]
98
+ verse_meta = {}
99
+
100
+ #Loop through the book_list to see which book verse name contains
101
+ for book in book_list
102
+ if verse_name.downcase.include? book.downcase
103
+ verse_meta["book"] = book
104
+
105
+ #Split the rest of the verse name into list (chapter number + verse number)
106
+ verse_number = verse_name.split(book)[1].strip
107
+
108
+ #To check if the whole chapter is requested or specific verses
109
+ if verse_number.include? ':'
110
+ verse_meta['chapter_number'] = verse_number.split(':')[0].strip
111
+ verse_meta['specific_verse'] = verse_number.split(':')[1].strip
112
+ else
113
+ verse_meta['chapter_number'] = verse_number
114
+ end
115
+ end
116
+ end
117
+ return verse_meta
118
+ end
119
+
120
+ #What: Is called from the Core class. Gets the verse name and calls verse_meta_extractor.
121
+ # Uses the meta data and book_name_formatter to generate th You Version url
122
+ #Input: Verse name, for example 'Proverbs 3:5-6'.
123
+ # Can also accept chapter names eg. 'Romans 3' (not recommended due to the length of the chapters)
124
+ #Output: You version url of the verse
125
+ def verse_url_generator(verse_name)
126
+ verse_meta = verse_meta_extractor(verse_name)
127
+ url = 'https://bible.com/bible/59/' #base url
128
+ url = url + book_name_formatter(verse_meta['book']) + '/' #book name
129
+ url = url + verse_meta["chapter_number"] + '/' #chapter number
130
+ #add verse number only if not just book name
131
+ if verse_meta['specific_verse']
132
+ url = url + verse_meta['specific_verse']
133
+ end
134
+ return url
135
+ end
136
+
137
+ #Helper Method
138
+ #What: It is a very long switch statement (order maintained) that transform the bible book name
139
+ #Input: Name of the specific book of the bible - eg. 'Psalms'
140
+ #Output: The You Version url specific book name
141
+ def book_name_formatter(book_name)
142
+ transformed_name = nil
143
+
144
+ case book_name
145
+ when"Genesis"
146
+ transformed_name = "gen"
147
+ when"Exodus"
148
+ transformed_name = "exo"
149
+ when"Leviticus"
150
+ transformed_name = "lev"
151
+ when"Numbers"
152
+ transformed_name = "num"
153
+ when"Deuteronomy"
154
+ transformed_name = "deu"
155
+ when"Joshua"
156
+ transformed_name = "jos"
157
+ when"Judges"
158
+ transformed_name = "jdg"
159
+ when"Ruth"
160
+ transformed_name = "rut"
161
+ when"1 Samuel"
162
+ transformed_name = "1sa"
163
+ when"2 Samuel"
164
+ transformed_name = "2sa"
165
+ when"1 Kings"
166
+ transformed_name = "1ki"
167
+ when"2 Kings"
168
+ transformed_name = "2ki"
169
+ when"1 Chronicles"
170
+ transformed_name = "1ch"
171
+ when"2 Chronicles"
172
+ transformed_name = "2ch"
173
+ when"Ezra"
174
+ transformed_name = "ezr"
175
+ when"Nehemiah"
176
+ transformed_name = "neh"
177
+ when"Esther"
178
+ transformed_name = "est"
179
+ when "Job"
180
+ transformed_name = "job"
181
+ when "Psalms"
182
+ transformed_name = "psa"
183
+ when "Proverbs"
184
+ transformed_name = "pro"
185
+ when "Ecclesiastes"
186
+ transformed_name = "ecc"
187
+ when "Song of Songs"
188
+ transformed_name = "sng"
189
+ when "Isaiah"
190
+ transformed_name = "isa"
191
+ when "Jeremiah"
192
+ transformed_name = "jer"
193
+ when "Lamentations"
194
+ transformed_name = "lam"
195
+ when "Ezekiel"
196
+ transformed_name = "ezk"
197
+ when "Daniel"
198
+ transformed_name = "dan"
199
+ when "Hosea"
200
+ transformed_name = "hos"
201
+ when "Joel"
202
+ transformed_name = "jol"
203
+ when "Amos"
204
+ transformed_name = "amo"
205
+ when "Obadiah"
206
+ transformed_name = "oba"
207
+ when "Jonah"
208
+ transformed_name = "jon"
209
+ when "Micah"
210
+ transformed_name = "mic"
211
+ when "Nahum"
212
+ transformed_name = "nam"
213
+ when "Habakkuk"
214
+ transformed_name = "hab"
215
+ when "Zephaniah"
216
+ transformed_name = "zep"
217
+ when "Haggai"
218
+ transformed_name = "hag"
219
+ when "Zechariah"
220
+ transformed_name = "zec"
221
+ when "Malachi"
222
+ transformed_name = "mal"
223
+ when "Matthew"
224
+ transformed_name = "mat"
225
+ when "Mark"
226
+ transformed_name = "mek"
227
+ when "Luke"
228
+ transformed_name = "luk"
229
+ when "John"
230
+ transformed_name = "jhn"
231
+ when "Acts"
232
+ transformed_name = "act"
233
+ when "Romans"
234
+ transformed_name = "rom"
235
+ when "1 Corinthians"
236
+ transformed_name = "1co"
237
+ when "2 Corinthians"
238
+ transformed_name = "2co"
239
+ when "Galatians"
240
+ transformed_name = "gal"
241
+ when "Ephesians"
242
+ transformed_name = "eph"
243
+ when "Philippians"
244
+ transformed_name = "php"
245
+ when "Colossians"
246
+ transformed_name = "col"
247
+ when "1 Thessalonians"
248
+ transformed_name = "1th"
249
+ when "2 Thessalonians"
250
+ transformed_name = "2th"
251
+ when "1 Timothy"
252
+ transformed_name = "1ti"
253
+ when "2 Timothy"
254
+ transformed_name = "2ti"
255
+ when "Titus"
256
+ transformed_name = "tit"
257
+ when "Philemon"
258
+ transformed_name = "phm"
259
+ when "Hebrews"
260
+ transformed_name = "heb"
261
+ when "James"
262
+ transformed_name = "jas"
263
+ when "1 Peter"
264
+ transformed_name = "1pe"
265
+ when "2 Peter"
266
+ transformed_name = "2pe"
267
+ when "1 John"
268
+ transformed_name = "1jn"
269
+ when "2 John"
270
+ transformed_name = "2jn"
271
+ when "3 John"
272
+ transformed_name = "3jn"
273
+ when "Jude"
274
+ transformed_name = "jud"
275
+ when "Revelation"
276
+ transformed_name = "rev"
277
+ end
278
+ end
279
+ end
280
+
281
+ class JTJVerseExtractor
282
+ def get_verse(entry_id)
283
+ url = 'https://jtj.watermark.org/api/entries/' + entry_id.to_s
284
+ result = Net::HTTP.get(URI.parse(url))
285
+ return JSON.parse(result)
286
+ end
287
+
288
+ def extract_data(entry_id)
289
+ data = get_verse(entry_id)
290
+ result = Hash.new
291
+
292
+ if data["entry"]["links"]["lock_screen"]
293
+ image_link = data["entry"]["links"]["lock_screen"]
294
+ result["image"] = image_link
295
+ end
296
+
297
+ if data["entry"]["memory_verse"]["reference"]
298
+ verse_name = data["entry"]["memory_verse"]["reference"]
299
+ result["verse"] = verse_name
300
+ end
301
+
302
+ return result
303
+ end
304
+ end
305
+ end
306
+
307
+ twil = TextMe::Core.new('ACa9011dd6fa6cabf225303edd1bdb71be', 'a426a2ba3deca28af4f6b17a91aacb5f', '+16197730346', '+14696551861')
308
+ twil.send_message(376)
metadata ADDED
@@ -0,0 +1,72 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: textme-jtj
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Harsh Gosar
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-03-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: twilio-ruby
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 5.7.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 5.7.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: metainspector
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 5.4.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 5.4.1
41
+ description: Text memory verse and image to user
42
+ email: harsh.g1218@gmail.com
43
+ executables: []
44
+ extensions: []
45
+ extra_rdoc_files: []
46
+ files:
47
+ - lib/textme-jtj.rb
48
+ homepage: http://rubygems.org/gems/textme-jtj
49
+ licenses:
50
+ - MIT
51
+ metadata: {}
52
+ post_install_message:
53
+ rdoc_options: []
54
+ require_paths:
55
+ - lib
56
+ required_ruby_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ required_rubygems_version: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ requirements: []
67
+ rubyforge_project:
68
+ rubygems_version: 2.6.13
69
+ signing_key:
70
+ specification_version: 4
71
+ summary: JTJ verse texting
72
+ test_files: []