gobble 0.1.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3a7b24457c04b67cf5c34a0974bfabb707ffb133
4
+ data.tar.gz: 3ad1249167253f45bc5734b32973a834684fea33
5
+ SHA512:
6
+ metadata.gz: c490a03c922803b35a6fc259cc243adde6ced928d7137151f160003d4e7004ca7dae89aa79913387f0f365662cfd8d655e1034a378aab54169b43a0579766eab
7
+ data.tar.gz: dfb7408a258834234040ba66a43c91bd232adf120ad4a74870e54637ed94a09bb8bf7a0324fa9b76527c57a7b478856af7abb4ae833fe4698fb3dc445cf4c85e
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "gobble"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "gobble"
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ bundle install
6
+
7
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,5 @@
1
+ lib_master = File.expand_path('../gobble/tobi', __FILE__)
2
+ $LOAD_PATH.unshift(lib_master) unless $LOAD_PATH.include?(lib_master)
3
+ require 'gobble/tobi/parser'
4
+
5
+ Gobble::Tobi::Parser.new.parse
@@ -0,0 +1,8 @@
1
+ module Gobble
2
+ module Tobi
3
+ module Constants
4
+ FILE_NAME = "gobble_api_key.gb"
5
+ FULL_URL = "http://g-it.herokuapp.com"
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,68 @@
1
+ require "gobble/tobi/constants"
2
+ require "gobble/tobi/server"
3
+
4
+ module Gobble
5
+ module Tobi
6
+ class Process
7
+ include Gobble::Tobi::Constants
8
+
9
+ attr_accessor :options
10
+ attr_accessor :values
11
+
12
+ def initialize(options)
13
+ @options = options
14
+ @values = {}
15
+ end
16
+
17
+ def process
18
+ save_key(options, values)
19
+ store_key(options, values)
20
+ store_url(options, values)
21
+
22
+ puts Gobble::Tobi::ServerGateway.new(values).communicate
23
+ end
24
+
25
+ def save_key(options, values)
26
+ if options[:save]
27
+ if options[:key]
28
+ File.open(FILE_NAME, "w+") { |file| file.write(options[:key]) }
29
+ else
30
+ puts "Save Error. Key argument required! "\
31
+ "Run gobble -h to view options"
32
+ exit
33
+ end
34
+ end
35
+ end
36
+
37
+ def store_key(options, values)
38
+ if options[:key]
39
+ values[:key] = options[:key]
40
+ else
41
+ if File.exist?(FILE_NAME)
42
+ values[:key] = File.open(FILE_NAME, "r") { |file|
43
+ file.read(options[:key])
44
+ }
45
+ else
46
+ puts "No key found! Key argument required. "\
47
+ "Run gobble -h to view options"
48
+ exit
49
+ end
50
+ end
51
+ end
52
+
53
+ def store_url(options, values)
54
+ if options[:full_url]
55
+ values[:full_url] = options[:full_url]
56
+ else
57
+ puts "Full URL argument required. Run gobble -h to view options"
58
+ exit
59
+ end
60
+
61
+ if options[:short_url]
62
+ values[:short_url] = options[:short_url]
63
+ end
64
+ end
65
+
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,59 @@
1
+ require "gobble/tobi/optprocess"
2
+ require "gobble/tobi/server"
3
+ require "gobble/tobi/constants"
4
+ require "optparse"
5
+
6
+ module Gobble
7
+ module Tobi
8
+ class Parser
9
+ def parse(args=ARGV)
10
+ options = {}
11
+ options[:save] = false
12
+ optparse = OptionParser.new do |opts|
13
+ opts.banner = "Usage: gobble -f [full_url] (-s [short_url]) -k "\
14
+ "[api_key] (--save)\n Options in round brackets are optional\n\n"
15
+ details_full = "-f full_url \t(full_url represents full_url to be "\
16
+ "shortened)\n"
17
+ details_short = "-s short_url \t(short_url represents custom short "\
18
+ "link. Optional. If not passed in, a unique one is generated)\n"
19
+ details_key = "-k api_key \t(api_key gotten from user account. Sign "\
20
+ "up on http://gobble-it.heroku.com for yours.)\n"
21
+ details_save = "--save \t\t(to save api key on this PC.)\n"
22
+ details_help = "-h \t\t(to show this message)\n"
23
+
24
+ opts.on('-f full_url') do |full_url|
25
+ options[:full_url] = full_url
26
+ end
27
+
28
+ opts.on('-k key') do |key|
29
+ options[:key] = key
30
+ end
31
+
32
+ opts.on('--save') do
33
+ options[:save] = true
34
+ end
35
+
36
+ opts.on('-s short_url') do |short_url|
37
+ options[:short_url] = short_url
38
+ end
39
+
40
+ opts.on('-h') do
41
+ puts opts.banner << details_full << details_short <<
42
+ details_key << details_save << details_help
43
+ exit
44
+ end
45
+ end
46
+
47
+
48
+ begin
49
+ optparse.parse!(args)
50
+ rescue
51
+ puts "Argument(s) not valid. Run gobble -h for instructions."
52
+ exit
53
+ end
54
+
55
+ Process.new(options).process
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,31 @@
1
+ require "net/http"
2
+ require "gobble/tobi/constants"
3
+
4
+ module Gobble
5
+ module Tobi
6
+ class ServerGateway
7
+ include Gobble::Tobi::Constants
8
+
9
+ attr_accessor :values
10
+
11
+ def initialize(values)
12
+ @values = values
13
+ end
14
+
15
+ def communicate
16
+ actual_response = nil
17
+ uri = URI(FULL_URL + "/api/create")
18
+ uri.query = URI.encode_www_form(values)
19
+
20
+ res = Net::HTTP.get_response(uri)
21
+
22
+ if res.is_a?(Net::HTTPSuccess)
23
+ actual_response = res.body
24
+ end
25
+
26
+ actual_response
27
+ end
28
+ end
29
+
30
+ end
31
+ end
@@ -0,0 +1,3 @@
1
+ module Gobble
2
+ VERSION = "0.1.1"
3
+ end
metadata ADDED
@@ -0,0 +1,97 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gobble
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Tobi Oduah
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-04-01 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: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: For more details, Visit http://gobble-it.herokuapp.com/api for more instructions
56
+ email:
57
+ - tobi.oduah@andela.com
58
+ executables:
59
+ - gobble
60
+ extensions: []
61
+ extra_rdoc_files: []
62
+ files:
63
+ - bin/console
64
+ - bin/gobble
65
+ - bin/setup
66
+ - lib/gobble.rb
67
+ - lib/gobble/tobi/constants.rb
68
+ - lib/gobble/tobi/optprocess.rb
69
+ - lib/gobble/tobi/parser.rb
70
+ - lib/gobble/tobi/server.rb
71
+ - lib/gobble/version.rb
72
+ homepage: http://gobble-it.herokuapp.com
73
+ licenses:
74
+ - MIT
75
+ metadata:
76
+ allowed_push_host: https://rubygems.org
77
+ post_install_message:
78
+ rdoc_options: []
79
+ require_paths:
80
+ - lib
81
+ required_ruby_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ required_rubygems_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ requirements: []
92
+ rubyforge_project:
93
+ rubygems_version: 2.4.5.1
94
+ signing_key:
95
+ specification_version: 4
96
+ summary: Easy-to-use gem to interface with the Gobble-It API
97
+ test_files: []