meminator 0.0.1 → 0.0.2

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.
data/README.md CHANGED
@@ -12,8 +12,13 @@ stupid things that it shouldn't. I intend to fix them at some point.
12
12
 
13
13
  ```ruby
14
14
 
15
- meme_generator = Meminator::Meminator.new
16
- meme_generator.get_url("I_WOLF", "Patient stubbed toe", "Put him down") # => returns a url for the new meme
15
+ require 'meminator'
16
+ Meminator.username = 'richo' # USERNAME GOES HERE
17
+ Meminator.password = 'password' # PASSWORD GOES HERE
18
+
19
+ memer = Meminator::Meminator.new
20
+
21
+ puts memer.get_url("I_WOLF", "Patient stubbed his toe", "Had to put him down")
17
22
 
18
23
  ```
19
24
 
data/demo.rb ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ require 'meminator'
4
+ Meminator.username = 'richo' # USERNAME GOES HERE
5
+ Meminator.password = 'password' # PASSWORD GOES HERE
6
+
7
+ memer = Meminator::Meminator.new
8
+
9
+ puts memer.get_url("I_WOLF", "Patient stubbed his toe", "Had to put him down")
data/lib/meminator.rb CHANGED
@@ -1,13 +1,14 @@
1
1
  require 'net/http'
2
- require 'nokogiri'
3
2
  require 'cgi'
3
+ require 'json'
4
4
 
5
5
  ##
6
6
  # Generate memes using http://memegenerator.net
7
7
 
8
8
  module Meminator
9
- VERSION = '0.0.1'
10
- GENERATOR_URL = 'http://memegenerator.net/Instance/CreateOrEdit'
9
+ VERSION = '0.0.2'
10
+ GENERATOR_URL = 'http://version1.api.memegenerator.net/Instance_Create'
11
+ DISPLAY_URL = 'http://cdn.memegenerator.net'
11
12
  class Error < Exception; end
12
13
  class Meminator
13
14
 
@@ -20,53 +21,47 @@ module Meminator
20
21
 
21
22
  url = URI.parse(GENERATOR_URL)
22
23
 
23
- post_data = { 'templateType' => template_type,
24
- 'templateID' => template_id,
25
- 'generatorName' => generator_name }
24
+ params = { 'username' => ::Meminator.username,
25
+ 'password' => ::Meminator.password,
26
+ 'templateType' => template_type,
27
+ 'generatorID' => template_id,
28
+ 'imageID' => 20, # TODO infer from generatorID
29
+ 'generatorName' => generator_name }
26
30
 
27
31
  [default_line, *text].compact.each_with_index do |item, idx|
28
- post_data.merge! "text#{idx}" => item
32
+ params.merge! "text#{idx}" => item
29
33
  end
30
34
 
31
35
  begin
32
- return fetch(url, post_data)
36
+ return fetch(url, params)
33
37
  rescue Error => e
34
38
  return e.message
35
39
  end
36
40
  end
37
41
 
38
- def fetch(url, post_data)
42
+ def fetch(url, params)
43
+ params = params.collect { |k,v| "#{k}=#{CGI::escape(v.to_s)}" }.join('&')
39
44
  Net::HTTP.start url.host do |http|
40
- post = Net::HTTP::Post.new url.path
41
- post['User-Agent'] = ::Meminator.user_agent
42
- post.set_form_data post_data
45
+ get = Net::HTTP::Get.new url.path + "?#{params}"
46
+ get['User-Agent'] = ::Meminator.user_agent
43
47
 
44
- res = http.request post
48
+ res = http.request get
45
49
 
46
50
  unless Net::HTTPSuccess === res
47
51
  raise Error, "memegenerator.net appears to be down, got #{res.code}"
48
52
  end
49
53
 
50
- location = res['Location']
51
- redirect = url + location
52
-
53
- get = Net::HTTP::Get.new redirect.request_uri
54
- get['User-Agent'] = ::Meminator.user_agent
55
-
56
- res = http.request get
57
- end
54
+ ret = JSON.load(res.body)
58
55
 
59
- if Net::HTTPSuccess === res
60
- doc = Nokogiri.HTML res.body
61
- doc.css("a[href=\"#{location}\"] img").first['src']
62
- else
63
- raise Error, "memegenerator.net appears to be down, got #{res.code}"
56
+ if ret["success"]
57
+ return "#{DISPLAY_URL}#{ret["result"]["instanceImageUrl"]}"
58
+ end
64
59
  end
65
60
  end
66
61
 
67
62
  end
68
63
  end
69
64
 
70
- %w[list user_agent].each do |filename|
65
+ %w[list user_agent auth].each do |filename|
71
66
  require "meminator/#{filename}"
72
67
  end
@@ -0,0 +1,34 @@
1
+ module Meminator
2
+ extend self
3
+
4
+ @@username = nil
5
+ @@password = nil
6
+
7
+ def username
8
+ if @@username
9
+ @@username
10
+ else
11
+ raise NotAuthorized
12
+ end
13
+ end
14
+
15
+ def password
16
+ if @@password
17
+ @@password
18
+ else
19
+ raise NotAuthorized
20
+ end
21
+ end
22
+
23
+ def username=(uname)
24
+ @@username = uname
25
+ end
26
+
27
+ def password=(pword)
28
+ @@password = pword
29
+ end
30
+ end
31
+
32
+ module Meminator
33
+ class NotAuthorized < Exception; end
34
+ end
@@ -34,7 +34,7 @@ module Meminator
34
34
  advice_dog 'G_GRANDPA', 185650, 'Grumpy-Grandpa'
35
35
  advice_dog 'H_MERMAID', 405224, 'Hipster-Mermaid'
36
36
  advice_dog 'I_DONT_ALWAYS', 38926, 'The-Most-Interesting-Man-in-the-World'
37
- advice_dog 'I_WOLF', 926, 'Insanity-Wolf'
37
+ advice_dog 'I_WOLF', 45, 'Insanity-Wolf'
38
38
  advice_dog 'JESUS', 1281, 'jesus-says'
39
39
  advice_dog 'J_DUCREUX', 1356, 'Joseph-Ducreux'
40
40
  advice_dog 'KANYE', 622033, 'kanyee'
data/meminator.gemspec CHANGED
@@ -1,17 +1,15 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "meminator"
3
- s.version = "0.0.1"
3
+ s.version = "0.0.2"
4
4
  s.authors = ["Eric Hodel", "Rich Healey"]
5
5
  s.email = ["richo@psych0tik.net"]
6
6
  s.homepage = "http://github.com/richoH/meminator"
7
7
  s.summary = "API to retrieve urls for memes"
8
8
  s.description = s.summary
9
9
 
10
- s.add_dependency "nokogiri"
11
10
  s.add_development_dependency "mocha"
12
11
  s.add_development_dependency "rspec"
13
12
 
14
13
  s.files = `git ls-files`.split("\n")
15
- # s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
16
14
  s.require_paths = ["lib"]
17
15
  end
@@ -0,0 +1,29 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Meminator do
4
+
5
+ it "Should raise an exception when no username set" do
6
+ ::Meminator.username = nil
7
+ lambda {
8
+ ::Meminator.username
9
+ }.should raise_error ::Meminator::NotAuthorized
10
+ end
11
+
12
+ it "Should raise an exception when no password set" do
13
+ ::Meminator.password = nil
14
+ lambda {
15
+ ::Meminator.password
16
+ }.should raise_error ::Meminator::NotAuthorized
17
+ end
18
+
19
+ it "Should return the set username" do
20
+ ::Meminator.username = "richo"
21
+ ::Meminator.username.should == "richo"
22
+ end
23
+
24
+ it "Should return the set password" do
25
+ ::Meminator.password = "rawk"
26
+ ::Meminator.password.should == "rawk"
27
+ end
28
+
29
+ end
@@ -4,10 +4,11 @@ describe Meminator do
4
4
 
5
5
  it "Should serialize it's arguments" do
6
6
  meminator = Meminator::Meminator.new
7
-
7
+ Meminator.username = "richo2"
8
+ Meminator.password = "richo3"
8
9
 
9
10
  meminator.expects(:fetch).with(URI.parse(Meminator::GENERATOR_URL),
10
- {'templateType' => 'AdviceDogSpinoff', 'templateID' => 926, 'generatorName' => 'Insanity-Wolf', 'text0' => 'First line', 'text1' => 'Second line'}
11
+ {'username' => 'richo2', 'password' => 'richo3', 'templateType' => 'AdviceDogSpinoff', 'generatorID' => 45, 'imageID' => 20, 'generatorName' => 'Insanity-Wolf', 'text0' => 'First line', 'text1' => 'Second line'}
11
12
  )
12
13
 
13
14
  meminator.get_url("I_WOLF", "First line", "Second line")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: meminator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,24 +10,8 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-05-07 00:00:00.000000000 Z
13
+ date: 2012-05-08 00:00:00.000000000 Z
14
14
  dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: nokogiri
17
- requirement: !ruby/object:Gem::Requirement
18
- none: false
19
- requirements:
20
- - - ! '>='
21
- - !ruby/object:Gem::Version
22
- version: '0'
23
- type: :runtime
24
- prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
- requirements:
28
- - - ! '>='
29
- - !ruby/object:Gem::Version
30
- version: '0'
31
15
  - !ruby/object:Gem::Dependency
32
16
  name: mocha
33
17
  requirement: !ruby/object:Gem::Requirement
@@ -75,10 +59,13 @@ files:
75
59
  - Manifest.txt
76
60
  - README.md
77
61
  - Rakefile
62
+ - demo.rb
78
63
  - lib/meminator.rb
64
+ - lib/meminator/auth.rb
79
65
  - lib/meminator/list.rb
80
66
  - lib/meminator/user_agent.rb
81
67
  - meminator.gemspec
68
+ - spec/meminator/auth_spec.rb
82
69
  - spec/meminator/list_spec.rb
83
70
  - spec/meminator/user_agent_spec.rb
84
71
  - spec/meminator_spec.rb