cadburybot 0.1.3 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8c17493616fddf011b5fe64a0aa58d6ab0f2833dd6a2dcc4d584d39991b89104
4
- data.tar.gz: ce03d500a7b8f749b2a998e8ff6c8f9af09a1ab81bc2ab0dccbe7bcd6d16b22f
3
+ metadata.gz: 2c371c8182fbcbea0a95fba155932c49773f1369ece5f872aa029140b69749d5
4
+ data.tar.gz: fba23894de55ff18063b000afc7e58ccdadedf9ecf3a5e731922f2ce4f8015e5
5
5
  SHA512:
6
- metadata.gz: 0f4efe37c186b55fa2532dfd35d3018809d6bcc717cd0f2051e7e4ac8efefdff42d86d6cdfe40bfe563b56531eeb04c2b6d8032d56a1a4ee671af6bdd621b44b
7
- data.tar.gz: 02f4ff4ceb778af74686d4449b3920e7b4c7978aeeb447e0e302be73da1592b2801a0ce8e464b5c727fa29508523d3fe8a41c857e6fd012cfe3a8f3b8044cdae
6
+ metadata.gz: 70fef744a7aedcdbd74d3588105c1afac2b9c3596a64d8d0b8f992f515a6e8d92560f636ca24230ddb76955091f2324c76f59320424d82647750830c96f89646
7
+ data.tar.gz: c998b25201a0b1423289efa4604110636f7f5393a364cd3c587bd781f9688931934ac5592753f5cde6b90e42a50c989aaa6e93324e9350af2baddb40538c6d3c
data/README.md CHANGED
@@ -1,24 +1,24 @@
1
1
  # CadburyBot :man_in_tuxedo:
2
2
 
3
- CadburyBot is an API client CLI which helps you manage multiple api environments like `dev/qa/local/prod`. Just simply define your environment by running `cadburybot env set <environment-name>`.
3
+ ## Under development 🚧
4
4
 
5
- ## Command list
5
+ ## Usage
6
6
 
7
7
  ```bash
8
- cadburybot env get # lists all the environments
9
- cadburybot env get <env-name> # lists the asked envrironment
10
- cadburybot env set <environment-name> # Creates or updates environment by asking questions to you.
11
- cadburybot env delete <environment-name>
12
- cadburybot env default <environment-name> # sets the default environment
13
-
14
- cadburybot request get # lists all the request for the default environment
15
- cadburybot request get <request-name> # lists the asked request
16
- cadburybot request set <request-name> # add/update request to the default environment by answering the questions like request endpoint, http method etc.,
17
- cadburybot request delete <request-name>
18
-
19
- cadburybot send <request-name> #uses default environment
8
+ cb env get # lists all the environments
9
+ cb env get <env-name> # lists the asked envrironment
10
+ cb env set <environment-name> # Creates or updates environment by asking questions to you.
11
+ cb env delete <environment-name>
12
+ cb env default <environment-name> # sets the default environment
13
+
14
+ cb request get # lists all the request for the default environment
15
+ cb request get <request-name> # lists the asked request
16
+ cb request set <request-name> # add/update request to the default environment by answering the questions like request endpoint, http method etc.,
17
+ cb request delete <request-name>
18
+
19
+ cb send <request-name> #uses default environment
20
20
  or
21
- cadburybot send <request-name> --env <env-name>
21
+ cb send <request-name> --env <env-name>
22
22
  ```
23
23
 
24
24
  > Pro tip: CadburyBot saves all these configurations as JSON file under `~/cadburybot` directory. Instead of using `request` or `env` command, You can also manually update them.
@@ -39,20 +39,6 @@ Or install it yourself as:
39
39
 
40
40
  $ gem install cadburybot
41
41
 
42
- ## Usage
43
-
44
- TODO: Write usage instructions here
45
-
46
- ## Development
47
-
48
- After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
49
-
50
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
51
-
52
- ## Contributing
53
-
54
- Bug reports and pull requests are welcome on GitHub at https://github.com/sharran-murali/cadburybot. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/[USERNAME]/cadburybot/blob/master/CODE_OF_CONDUCT.md).
55
-
56
42
  ## License
57
43
 
58
44
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
File without changes
@@ -1,22 +1,26 @@
1
1
  require "thor"
2
2
  require "json"
3
3
  require_relative "./helpers/environment_builder"
4
- require_relative "./helpers/loader"
5
4
 
6
5
  module Cadbury
7
6
  class Env < Thor
8
7
  desc "set [environment-name]", "Creates a new environment or updates the existing environment"
9
8
  def set(name)
10
- EnvironmentBuilder.create_environment name
9
+ EnvironmentBuilder.new.create_environment name
11
10
  end
12
11
 
13
12
  desc "get 'or' get [environment-name]", "Gets all environments or the asked environment"
14
13
  def get(name = nil)
15
14
  if name.nil?
16
- puts JSON.pretty_generate EnvironmentBuilder.read_configs
15
+ puts JSON.pretty_generate EnvironmentBuilder.new.list_environments
17
16
  else
18
- puts JSON.pretty_generate EnvironmentBuilder.get_config(env: name)
17
+ puts JSON.pretty_generate EnvironmentBuilder.new.get_environment(name: name)
19
18
  end
20
19
  end
20
+
21
+ desc "delete [environment-name]", "Deletes the environment"
22
+ def delete(name)
23
+ EnvironmentBuilder.new.delete_environment name
24
+ end
21
25
  end
22
26
  end
@@ -0,0 +1,32 @@
1
+ require "json"
2
+ require "fileutils"
3
+ require_relative "./global"
4
+
5
+ class ConfigManager
6
+ def get_all
7
+ config = File.open Global::ENV_FILE_PATH
8
+ config_json = JSON.load config
9
+ config.close
10
+ config_json
11
+ rescue StandardError => e
12
+ if e.message.include? "No such file or directory"
13
+ puts "Error: No Environment file found at #{ENV_FILE_PATH}."
14
+ puts "Please run 'cadburybot env set <env-name>' command to create a new environment"
15
+ else
16
+ puts "Error: #{e.message}"
17
+ end
18
+ exit
19
+ end
20
+
21
+ def get_by_env(env:)
22
+ get_all[env]
23
+ end
24
+
25
+ def save(configs)
26
+ FileUtils.mkdir_p Global::APIBOT_DIR
27
+ File.open(Global::ENV_FILE_PATH, "w") do |f|
28
+ f.write(JSON.pretty_generate(configs))
29
+ puts "Config updated successfully in #{Global::ENV_FILE_PATH}"
30
+ end
31
+ end
32
+ end
@@ -2,57 +2,55 @@
2
2
 
3
3
  require "json"
4
4
  require "fileutils"
5
+ require_relative "./config_manager"
5
6
 
6
7
  class EnvironmentBuilder
7
- APIBOT_DIR = "#{Dir.home}/apibot".freeze
8
- ENV_FILE_PATH = "#{APIBOT_DIR}/environment.json".freeze
9
-
10
8
  attr_accessor :configs
11
9
 
12
- def self.create_environment(name)
13
- config_util = EnvironmentBuilder.new
14
- config_util.set_environment name
15
- config_util.get_base_url
16
- config_util.get_auth_token_header_key
17
- config_util.get_auth_token_header_value
18
- config_util.save_config_as_json
19
- end
20
-
21
10
  def initialize
22
- puts "Hi, I am ApiBot!"
23
- print "You can have multiple environments of API requests and easily switch between them. "
24
- puts "To create an environment please follow the steps,\n"
25
- puts "Note: I have created some default values for easily getting started."
26
- puts "Press enter for using default value."
27
-
28
- @configs = File.exist?(ENV_FILE_PATH) ? EnvironmentBuilder.read_configs : {}
11
+ @config_manager = ConfigManager.new
12
+ @configs = {}
29
13
  @env = "dev"
30
14
  end
31
15
 
32
- def self.read_configs
33
- config = File.open ENV_FILE_PATH
34
- config_json = JSON.load config
35
- config.close
36
- config_json
37
- rescue StandardError => e
38
- if e.message.include? "No such file or directory"
39
- puts "Error: No Environment file found at #{ENV_FILE_PATH}. Please run 'init' command to create a new environment"
40
- else
41
- puts "Error: #{e.message}"
16
+ def create_environment(name, silent: false)
17
+ unless silent
18
+ puts "Hi, I am ApiBot!"
19
+ print "You can have multiple environments of API requests and easily switch between them. "
20
+ puts "To create an environment please follow the steps,\n"
21
+ puts "Note: I have created some default values for easily getting started."
22
+ puts "Press enter for using default value."
42
23
  end
43
- exit
24
+
25
+ @configs = @config_manager.get_all if File.exist?(Global::ENV_FILE_PATH)
26
+ set_environment name
27
+ get_base_url
28
+ get_auth_token_header_key
29
+ get_auth_token_header_value
30
+ save_config_as_json
44
31
  end
45
32
 
46
- def self.get_config(env:)
47
- EnvironmentBuilder.read_configs[env]
33
+ def list_environments
34
+ @config_manager.get_all
48
35
  end
49
36
 
50
- # Instance methods
37
+ def get_environment(name:)
38
+ @config_manager.get_by_env(env: name)
39
+ end
40
+
41
+ def delete_environment(name)
42
+ environments = @config_manager.get_all
43
+ environments.delete(name)
44
+ @config_manager.save environments
45
+ end
46
+
47
+ private
51
48
 
52
49
  def set_environment(name)
53
50
  env = name
54
51
  @env = env unless env.empty?
55
52
  @configs[@env] = {} unless @configs.key?(@env)
53
+ @configs[@env]["requests"] = {}
56
54
  end
57
55
 
58
56
  def get_base_url
@@ -74,10 +72,6 @@ class EnvironmentBuilder
74
72
  end
75
73
 
76
74
  def save_config_as_json
77
- FileUtils.mkdir_p APIBOT_DIR
78
- File.open(ENV_FILE_PATH, "w") do |config|
79
- config.write(JSON.pretty_generate(@configs))
80
- puts "Config saved successfully in #{ENV_FILE_PATH}"
81
- end
75
+ @config_manager.save(@configs)
82
76
  end
83
77
  end
@@ -3,4 +3,6 @@
3
3
  class Global
4
4
  OPTIONS = { env: "dev", headers: {} }.freeze
5
5
  DIVIDER = "-" * 50
6
+ APIBOT_DIR = "#{Dir.home}/apibot".freeze
7
+ ENV_FILE_PATH = "#{APIBOT_DIR}/environment.json".freeze
6
8
  end
@@ -0,0 +1,83 @@
1
+ require "json"
2
+ require "fileutils"
3
+ require_relative "./global"
4
+ require_relative "./config_manager"
5
+
6
+ class RequestBuilder
7
+ def initialize(name: "", env: "dev")
8
+ @env = env
9
+ @name = name
10
+ @endpoint = ""
11
+ @headers = {}
12
+ @method = "get"
13
+ @body = {}
14
+ @request = {}
15
+ @config_manager = ConfigManager.new
16
+ end
17
+
18
+ def create_request
19
+ get_endpoint
20
+ get_headers
21
+ get_method
22
+ get_body
23
+ self
24
+ end
25
+
26
+ def get_all
27
+ @config_manager.get_all[@env]["requests"]
28
+ end
29
+
30
+ def get_by_name(name)
31
+ @config_manager.get_all[@env]["requests"][name]
32
+ end
33
+
34
+ def save
35
+ configs = @config_manager.get_all
36
+ if configs.nil? || configs == {}
37
+ puts "Error: No Environments detected."
38
+ puts "Please run 'cadburybot env set <env-name>' command to create a new environment"
39
+ exit
40
+ end
41
+ configs[@env]["requests"][@name] = build_request
42
+ @config_manager.save configs
43
+ end
44
+
45
+ private
46
+
47
+ def get_endpoint
48
+ puts "Endpoint: eg., /api/check-weather"
49
+ @endpoint = $stdin.gets.chomp
50
+ end
51
+
52
+ def get_headers
53
+ loop do
54
+ puts "Headers: [headerKey:headerValue] ---> Type value or press <Enter> to skip"
55
+ key, value = $stdin.gets.chomp.split ":"
56
+ break if key.nil? || value.nil?
57
+
58
+ @headers[key] = value
59
+ end
60
+ rescue StandardError => e
61
+ puts "Error: #{e.message}"
62
+ exit
63
+ end
64
+
65
+ def get_method
66
+ puts "Method: [GET]"
67
+ @method = $stdin.gets.chomp.upcase
68
+ end
69
+
70
+ def get_body
71
+ puts "Body: []"
72
+ body = $stdin.gets.chomp
73
+ @body = JSON.parse body unless body.empty?
74
+ end
75
+
76
+ def build_request
77
+ {
78
+ method: @method,
79
+ headers: @headers,
80
+ body: @body
81
+ }
82
+ end
83
+ end
@@ -0,0 +1,29 @@
1
+ require "thor"
2
+ require "json"
3
+ require_relative "./helpers/request_builder"
4
+
5
+ module Cadbury
6
+ class Request < Thor
7
+ desc "set [request-name]", "Creates a new request or updates the existing request"
8
+ def set(name)
9
+ RequestBuilder
10
+ .new(name: name, env: options[:env])
11
+ .create_request
12
+ .save
13
+ end
14
+
15
+ desc "get 'or' get [environment-name]", "Gets all environments or the asked environment"
16
+ def get(name = nil)
17
+ if name.nil?
18
+ puts JSON.pretty_generate RequestBuilder.new(env: options[:env]).get_all
19
+ else
20
+ puts JSON.pretty_generate RequestBuilder.new(name: name).get_by_name name
21
+ end
22
+ end
23
+
24
+ desc "delete [environment-name]", "Deletes the environment"
25
+ def delete(name)
26
+ # EnvironmentBuilder.delete_environment(name)
27
+ end
28
+ end
29
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Cadbury
4
- VERSION = "0.1.3"
4
+ VERSION = "0.2.0"
5
5
  end
data/lib/cadbury.rb CHANGED
@@ -1,9 +1,17 @@
1
1
  require "cadbury/environment"
2
+ require "cadbury/request"
2
3
  require "thor"
3
4
 
4
5
  module Cadbury
5
6
  class CLI < Thor
7
+ shared_options = [:env, { type: :string, required: true }]
8
+
6
9
  desc "env [command]", "CRUD operations for environment"
10
+ method_option(*shared_options)
7
11
  subcommand "env", Cadbury::Env
12
+
13
+ desc "request [command]", "CRUD operations for request"
14
+ method_option(*shared_options)
15
+ subcommand "request", Cadbury::Request
8
16
  end
9
17
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cadburybot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sharran
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-30 00:00:00.000000000 Z
11
+ date: 2021-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -126,20 +126,23 @@ description: Write a longer description or delete this line.
126
126
  email:
127
127
  - sharran.murali@gmail.com
128
128
  executables:
129
- - cadburybot
129
+ - cb
130
130
  extensions: []
131
131
  extra_rdoc_files: []
132
132
  files:
133
133
  - README.md
134
- - bin/cadburybot
134
+ - bin/cb
135
135
  - bin/console
136
136
  - bin/setup
137
137
  - lib/cadbury.rb
138
138
  - lib/cadbury/environment.rb
139
+ - lib/cadbury/helpers/config_manager.rb
139
140
  - lib/cadbury/helpers/environment_builder.rb
140
141
  - lib/cadbury/helpers/global.rb
141
142
  - lib/cadbury/helpers/http_client.rb
142
143
  - lib/cadbury/helpers/loader.rb
144
+ - lib/cadbury/helpers/request_builder.rb
145
+ - lib/cadbury/request.rb
143
146
  - lib/cadbury/version.rb
144
147
  homepage: https://github.com/sharran-murali/cadbury
145
148
  licenses:
@@ -157,7 +160,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
157
160
  requirements:
158
161
  - - ">="
159
162
  - !ruby/object:Gem::Version
160
- version: 2.6.0
163
+ version: '3.0'
161
164
  required_rubygems_version: !ruby/object:Gem::Requirement
162
165
  requirements:
163
166
  - - ">="