zendesk-populator 0.0.2 → 0.0.3

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/bin/zdpop CHANGED
@@ -60,7 +60,7 @@ end
60
60
 
61
61
  begin
62
62
  optparse.parse!
63
- Zdpop::Populator.new(options[:cfile],options[:dfile])
63
+ Zdpop::Populator.new(options)
64
64
  rescue OptionParser::InvalidArgument, OptionParser::InvalidOption, OptionParser::MissingArgument
65
65
  puts $!.to_s
66
66
  puts optparse
@@ -1,5 +1,6 @@
1
1
  require 'yaml'
2
2
  require 'csv'
3
+ require 'uri'
3
4
 
4
5
  begin
5
6
  require 'httparty'
@@ -10,12 +11,16 @@ end
10
11
  module Zdpop
11
12
  class Populator
12
13
 
13
- def initialize(configfile,datafile)
14
+ def initialize(options)
14
15
  begin
16
+ # Process options
17
+ configfile = options[:cfile]
18
+ datafile = options[:dfile]
19
+
15
20
  # Set configuration
16
21
  raise "Configuration file #{configfile} missing" unless File.file? configfile
17
22
  config = YAML.load_file(configfile)
18
- @site = config[:zendesk_site]
23
+ @site = valid_site(config[:zendesk_site])
19
24
  @user = config[:zendesk_user]
20
25
  @password = config[:zendesk_password]
21
26
  raise "Missing Zendesk site, user or password" if [ @site, @user, @password ].include?(nil)
@@ -49,8 +54,7 @@ module Zdpop
49
54
 
50
55
  def list_orgs
51
56
  orglist = []
52
- organizations = HTTParty.get("#{@site}api/v1/organizations.json", :basic_auth => {:username=>"#{@user}", :password=> "#{@password}" } )
53
-
57
+ organizations = get_orgs
54
58
  organizations.each { |o|
55
59
  orglist << o["name"]
56
60
  }
@@ -59,7 +63,7 @@ module Zdpop
59
63
 
60
64
  def lookup_org_id(org)
61
65
  orgtable = {}
62
- organizations = HTTParty.get("#{@site}api/v1/organizations.json", :basic_auth => {:username=>"#{@user}", :password=> "#{@password}" } )
66
+ organizations = get_orgs
63
67
  organizations.each { |o|
64
68
  orgtable["#{o["name"]}"] = o["id"]
65
69
  }
@@ -67,9 +71,13 @@ module Zdpop
67
71
  return id
68
72
  end
69
73
 
74
+ def get_orgs
75
+ HTTParty.get("#{@site}/api/v1/organizations.json", :basic_auth => {:username=>"#{@user}", :password=> "#{@password}" } )
76
+ end
77
+
70
78
  def list_users
71
79
  userlist = []
72
- users = HTTParty.get("#{@site}users.json", :basic_auth => {:username=>"#{@user}", :password=> "#{@password}" } )
80
+ users = HTTParty.get("#{@site}/users.json", :basic_auth => {:username=>"#{@user}", :password=> "#{@password}" } )
73
81
  users.each { |u|
74
82
  userlist << u["name"]
75
83
  }
@@ -78,7 +86,7 @@ module Zdpop
78
86
 
79
87
  def create_org(org,domain)
80
88
  payload = { :organization => { :name => org, :is_shared => 'true', :is_shared_comments => 'true', :default => domain } }
81
- response = HTTParty.post("#{@site}api/v1/organizations.json", :basic_auth => {:username=>"#{@user}", :password=> "#{@password}" }, :body => payload )
89
+ response = HTTParty.post("#{@site}/api/v1/organizations.json", :basic_auth => {:username=>"#{@user}", :password=> "#{@password}" }, :body => payload )
82
90
  if response.code == 201
83
91
  puts "Created organization #{org}"
84
92
  else
@@ -89,12 +97,24 @@ module Zdpop
89
97
  def create_user(name,email,org)
90
98
  id = lookup_org_id(org)
91
99
  payload = { :user => { :name => name, :email => email, :roles => '0', :restriction_id => '2', :organization_id => id } }
92
- response = HTTParty.post("#{@site}users.json", :basic_auth => {:username=>"#{@user}", :password=> "#{@password}" }, :body => payload )
100
+ response = HTTParty.post("#{@site}/users.json", :basic_auth => {:username=>"#{@user}", :password=> "#{@password}" }, :body => payload )
93
101
  if response.code == 200
94
102
  puts "Created user #{name}"
95
103
  else
96
104
  puts "Response code: #{response.code} - #{response.body}"
97
105
  end
98
106
  end
107
+
108
+ def valid_site(site)
109
+ begin
110
+ uri = URI.parse(site.gsub(/\/*$/,''))
111
+ if uri.class != URI::HTTPS
112
+ puts "Only HTTPS protocol addresses can be used"
113
+ end
114
+ return uri
115
+ rescue URI::InvalidURIError
116
+ puts "The site: #{site} is not a valid URL"
117
+ end
118
+ end
99
119
  end
100
120
  end
data/lib/zdpop/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Zdpop
2
2
  module Version
3
- VERSION = '0.0.2'
3
+ VERSION = '0.0.3'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zendesk-populator
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 2
10
- version: 0.0.2
9
+ - 3
10
+ version: 0.0.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - James Turnbull
@@ -15,8 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-08-14 00:00:00 +10:00
19
- default_executable: zdpop
18
+ date: 2012-02-01 00:00:00 Z
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
21
  name: httparty
@@ -48,7 +47,6 @@ files:
48
47
  - bin/zdpop
49
48
  - lib/zdpop/populator.rb
50
49
  - lib/zdpop/version.rb
51
- has_rdoc: true
52
50
  homepage: http://github.com/jamtur01/zendesk-populator/
53
51
  licenses:
54
52
  - APL2
@@ -78,9 +76,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
78
76
  requirements: []
79
77
 
80
78
  rubyforge_project:
81
- rubygems_version: 1.6.2
79
+ rubygems_version: 1.8.11
82
80
  signing_key:
83
81
  specification_version: 3
84
82
  summary: A command line tool to generate Zendesk orgs and users from CSV.
85
83
  test_files: []
86
84
 
85
+ has_rdoc: