the-city-admin 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
- gem 'typhoeus'
3
+ gem 'typhoeus', '0.4.2'
4
4
  gem 'json'
5
5
 
6
6
  group :development, :test do
data/Gemfile.lock CHANGED
@@ -44,4 +44,4 @@ DEPENDENCIES
44
44
  factory_girl
45
45
  json
46
46
  rspec
47
- typhoeus
47
+ typhoeus (= 0.4.2)
data/index.rb CHANGED
@@ -5,45 +5,89 @@
5
5
  # @authors Robbie Lieb <robbie@onthecity.org>, Wes Hays <wes@onthecity.org>
6
6
  # *******************************************
7
7
 
8
- TCA_ENV = 'development'
9
- THE_CITY_ADMIN_PATH = 'http://api.devthecity.org:9292'
8
+ # TCA_ENV = 'development'
9
+ # THE_CITY_ADMIN_PATH = 'http://api.devthecity.org:9292'
10
+ # key = 'Dev Key'
11
+ # token = 'dev token'
10
12
 
13
+ key = 'YOUR KEY'
14
+ token = 'YOUR TOKEN'
15
+
16
+ require 'open-uri'
17
+ require 'csv'
11
18
  require 'ruby-debug'
12
19
  require File.dirname(__FILE__) + '/lib/the_city_admin.rb'
13
20
 
14
- # key = '66c59e2ee24553e7237259e30b4c17365681b95c'
15
- # token = 'a9ae4af3c3e80102'
21
+ TheCity::AdminApi.connect(key, token)
22
+
23
+ # group_export = TheCity::GroupExport.new
24
+ # group_export.group_id = 73608
25
+ # if group_export.save
26
+ # puts "Export created"
27
+ # else
28
+ # puts "Export failed: #{group_export.error_messages.join(', ')}"
29
+ # end
16
30
 
17
- key = 'cf2903151e3213e66fd8080c7d8b65b1d6ccdd31'
18
- token = '5c88b32edda7653c'
19
31
 
20
- TheCity::AdminApi.connect(key, token)
32
+ # done = false
33
+ # page = 1
34
+ # count = 0
35
+
36
+ # while !done
37
+ # export_list = TheCity::GroupExportList.new({:page => page, :group_id => 73608})
38
+
39
+ # export_list.each do |export|
40
+ # count += 1
41
+ # puts "#{count}) #{export.id} :: #{export.state}"
42
+ # end
43
+
44
+ # if export_list.total_pages <= page
45
+ # done = true
46
+ # else
47
+ # page += 1
48
+ # end
49
+ # end
50
+
51
+ # export_list = TheCity::GroupExportList.new({:page => page, :group_id => 73608})
52
+ # group_export = export_list[0]
53
+ # puts group_export.inspect
21
54
 
22
55
 
23
- puts "-----------------------------"
24
- puts "##### Web Hooks #######"
25
- puts "-----------------------------"
26
56
 
27
- web_hooks = TheCity::WebHookList.new({:page => 1})
28
- web_hooks.each do |hook|
29
- puts hook.inspect
57
+ group_export = TheCity::GroupExport.load_by_id(100996, {:group_id => 73608})
58
+ path = group_export.authenticated_s3_url
59
+
60
+ data = open(path).read()
61
+
62
+ CSV.parse(data, {:headers => true}).each do |row|
63
+ puts [row[2], row[4]].join(' ')
30
64
  end
31
65
 
32
- web_hook1 = TheCity::WebHook.new({:callback_uri => 'https://www.somedomain.com/city/callbacks/fund/create',
33
- :object => TheCity::WebHook::Objects[:fund],
34
- :event => TheCity::WebHook::Events[:create]})
35
66
 
36
- web_hook2 = TheCity::WebHook.new({:callback_uri => 'https://www.somedomain.com/city/callbacks/pledge/create',
37
- :object => TheCity::WebHook::Objects[:pledge],
38
- :event => TheCity::WebHook::Events[:create]})
67
+ # puts "-----------------------------"
68
+ # puts "##### Web Hooks #######"
69
+ # puts "-----------------------------"
70
+
71
+ # web_hooks = TheCity::WebHookList.new({:page => 1})
72
+ # web_hooks.each do |hook|
73
+ # puts hook.inspect
74
+ # end
75
+
76
+ # web_hook1 = TheCity::WebHook.new({:callback_uri => 'https://www.somedomain.com/city/callbacks/fund/create',
77
+ # :object => TheCity::WebHook::Objects[:fund],
78
+ # :event => TheCity::WebHook::Events[:create]})
79
+
80
+ # web_hook2 = TheCity::WebHook.new({:callback_uri => 'https://www.somedomain.com/city/callbacks/pledge/create',
81
+ # :object => TheCity::WebHook::Objects[:pledge],
82
+ # :event => TheCity::WebHook::Events[:create]})
39
83
 
40
- web_hook3 = TheCity::WebHook.new({:callback_uri => 'https://www.somedomain.com/city/callbacks/donation/create',
41
- :object => TheCity::WebHook::Objects[:donation],
42
- :event => TheCity::WebHook::Events[:create]})
84
+ # web_hook3 = TheCity::WebHook.new({:callback_uri => 'https://www.somedomain.com/city/callbacks/donation/create',
85
+ # :object => TheCity::WebHook::Objects[:donation],
86
+ # :event => TheCity::WebHook::Events[:create]})
43
87
 
44
- puts web_hook1.save ? 'Web Hook saved' : 'Web Hook failed'
45
- puts web_hook2.save ? 'Web Hook saved' : 'Web Hook failed'
46
- puts web_hook3.save ? 'Web Hook saved' : 'Web Hook failed'
88
+ # puts web_hook1.save ? 'Web Hook saved' : 'Web Hook failed'
89
+ # puts web_hook2.save ? 'Web Hook saved' : 'Web Hook failed'
90
+ # puts web_hook3.save ? 'Web Hook saved' : 'Web Hook failed'
47
91
 
48
92
  # web_hooks = TheCity::WebHookList.new({:page => 1})
49
93
  # web_hooks.each do |hook|
@@ -93,7 +137,7 @@ puts web_hook3.save ? 'Web Hook saved' : 'Web Hook failed'
93
137
 
94
138
  # group_list.each do |group|
95
139
  # count += 1
96
- # puts "#{count}) #{group.name}"
140
+ # puts "#{count}) #{group.name} [#{group.group_type}]"
97
141
  # end
98
142
 
99
143
  # if group_list.total_pages <= page
@@ -123,6 +167,17 @@ puts web_hook3.save ? 'Web Hook saved' : 'Web Hook failed'
123
167
  # end
124
168
  # end
125
169
 
170
+ # tag_list = TheCity::TagList.new({:page => page})
171
+ # tag = tag_list[0]
172
+
173
+ # puts tag.name
174
+ # tag.name = "Wes Hays #{Random.rand(99999)}"
175
+ # if tag.save
176
+ # puts "TAG SAVED"
177
+ # else
178
+ # puts "TAG FAILED TO SAVE: #{tag.error_messages}"
179
+ # end
180
+
126
181
 
127
182
 
128
183
 
@@ -132,6 +187,16 @@ puts web_hook3.save ? 'Web Hook saved' : 'Web Hook failed'
132
187
  # puts "-----------------------------"
133
188
 
134
189
 
190
+ # wes = TheCity::User.load_by_id(746076)
191
+
192
+ # wes.first = "Jim"
193
+ # if wes.save
194
+ # puts "Wes Saved"
195
+ # else
196
+ # puts "WES FAILED TO SAVE: #{wes.error_messages}"
197
+ # end
198
+
199
+
135
200
  # user_list = TheCity::UserList.new
136
201
 
137
202
  # user_list.each do |u|
data/lib/api/group.rb CHANGED
@@ -1,20 +1,36 @@
1
1
  module TheCity
2
2
 
3
3
  class Group < ApiObject
4
- tc_attr_accessor :admin_url,
5
- :api_url,
6
- :created_at,
7
- :external_description,
8
- :group_type,
9
- :id,
10
- :internal_url,
11
- :name,
12
- :nickname,
13
- :parent_id,
14
- :plaza_url,
15
- :smart_large_profile_pic,
4
+ tc_attr_accessor :campus_name,
5
+ :last_engaged,
6
+ :default_invitation_custom_message,
7
+ :archive_scheduled,
8
+ :time_zone,
9
+ :campus_id,
10
+ :group_type,
11
+ :parent_id,
12
+ :target_size,
13
+ :nearest_neighborhood_name,
14
+ :admin_url,
15
+ :deletion_scheduled,
16
+ :plaza_url,
17
+ :updated_at,
18
+ :external_description,
19
+ :nickname,
16
20
  :started_as_seed,
17
- :user_ids
21
+ :unlisted,
22
+ :created_at,
23
+ :api_url,
24
+ :profile_pic,
25
+ :inactive,
26
+ :internal_url,
27
+ :secure,
28
+ :nearest_neighborhood_id,
29
+ :name,
30
+ :auto_approve_invites,
31
+ :id,
32
+ :external_id,
33
+ :user_ids
18
34
 
19
35
 
20
36
  # Loads the group by the specified ID.
@@ -3,16 +3,33 @@ module TheCity
3
3
  class GroupExport < ApiObject
4
4
 
5
5
  tc_attr_accessor :id,
6
+ :group_id,
6
7
  :state,
7
8
  :authenticated_s3_url,
8
9
  :created_at
9
10
 
10
11
 
12
+ # Loads the group export by the specified ID.
13
+ #
14
+ # @param group_export_id The ID of the group export to load.
15
+ # @param options A hash of options for requesting data from the server.
16
+ # :: group_id is required
17
+ #
18
+ # Returns a new {GroupExport} object.
19
+ def self.load_by_id(group_export_id, options = {})
20
+ group_reader = GroupExportReader.new(group_export_id, options)
21
+ self.new(group_reader.load_feed)
22
+ rescue
23
+ nil
24
+ end
25
+
26
+
11
27
  # Constructor.
12
28
  #
13
- # @param json_data JSON data of the group export.
14
- def initialize(json_data)
15
- initialize_from_json_object(json_data)
29
+ # @param json_data (optional) JSON data of the group export.
30
+ def initialize(json_data = nil)
31
+ @writer_object = GroupExportWriter
32
+ initialize_from_json_object(json_data) unless json_data.nil?
16
33
  end
17
34
 
18
35
  end
@@ -0,0 +1,25 @@
1
+ module TheCity
2
+
3
+ class GroupExportReader < ApiReader
4
+
5
+ # Constructor.
6
+ #
7
+ # @param group_id The ID of the group to load.
8
+ # @param options A hash of options for requesting data from the server.
9
+ # :: group_id is required
10
+ # @param cacher (optional) The CacheAdapter cacher to be used to cache data.
11
+ def initialize(group_export_id, options = {}, cacher = nil)
12
+ group_id = options[:group_id]
13
+ #@class_key = "group_export_#{group_id}"
14
+ @url_data_path = "/groups/#{group_id}/exports/#{group_export_id}"
15
+ @url_data_params = options
16
+
17
+ # The object to store and load the cache.
18
+ @cacher = cacher unless cacher.nil?
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+
25
+
@@ -11,6 +11,11 @@ module TheCity
11
11
  @url_data_params ||= {}
12
12
  success = true
13
13
 
14
+ if @url_data_path.nil?
15
+ @error_messages = ["#{@url_action.to_s.upcase} not implemented for #{self.class.to_s}"]
16
+ return false
17
+ end
18
+
14
19
  if @updatable_fields and !@updatable_fields.empty?
15
20
  fields_to_remove = @url_data_params.keys - @updatable_fields
16
21
  fields_to_remove.each { |ftr| @url_data_params.delete(ftr) }
@@ -36,6 +41,11 @@ module TheCity
36
41
  def delete_object
37
42
  success = true
38
43
 
44
+ if @url_data_delete_path.nil?
45
+ @error_messages = ["DELETE not implemented for #{self.class.to_s}"]
46
+ return false
47
+ end
48
+
39
49
  begin
40
50
  # @url_data_path should be the same as :put if this object is already
41
51
  # setup and mapped to an object that exists
@@ -0,0 +1,25 @@
1
+ module TheCity
2
+
3
+ class GroupExportWriter < ApiWriter
4
+
5
+ # Constructor.
6
+ #
7
+ # @param data The json data to save.
8
+ def initialize(data)
9
+ if data[:id]
10
+ @url_action = :put
11
+ @url_data_path = nil # not implemented
12
+ else
13
+ @url_action = :post
14
+ @url_data_path = "/groups/#{data[:group_id]}/exports"
15
+ end
16
+ @url_data_delete_path = nil # not implemented
17
+
18
+ @url_data_params = data
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+
25
+
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  PROJECT_GEM = 'the-city-admin'
3
- PROJECT_GEM_VERSION = '0.3.0'
3
+ PROJECT_GEM_VERSION = '0.3.1'
4
4
 
5
5
  s.name = PROJECT_GEM
6
6
  s.version = PROJECT_GEM_VERSION
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
15
15
  s.summary = 'Ruby gem/plugin to interact with The City Admin API (https://api.OnTheCity.org).'
16
16
  s.description = 'Ruby gem/plugin to interact with The City Admin API (https://api.OnTheCity.org). Checkout the project on github for more detail.'
17
17
 
18
- s.add_dependency('typhoeus')
18
+ s.add_dependency('typhoeus', '0.4.2')
19
19
 
20
20
 
21
21
  s.files = `git ls-files`.split("\n")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: the-city-admin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,24 +9,24 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-11 00:00:00.000000000 Z
12
+ date: 2012-11-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: typhoeus
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ! '>='
19
+ - - '='
20
20
  - !ruby/object:Gem::Version
21
- version: '0'
21
+ version: 0.4.2
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
- - - ! '>='
27
+ - - '='
28
28
  - !ruby/object:Gem::Version
29
- version: '0'
29
+ version: 0.4.2
30
30
  description: Ruby gem/plugin to interact with The City Admin API (https://api.OnTheCity.org).
31
31
  Checkout the project on github for more detail.
32
32
  email: wes@onthecity.org
@@ -150,6 +150,7 @@ files:
150
150
  - lib/readers/group_checkin_list_reader.rb
151
151
  - lib/readers/group_event_attendance_list_reader.rb
152
152
  - lib/readers/group_export_list_reader.rb
153
+ - lib/readers/group_export_reader.rb
153
154
  - lib/readers/group_invitation_list_reader.rb
154
155
  - lib/readers/group_list_reader.rb
155
156
  - lib/readers/group_reader.rb
@@ -188,6 +189,7 @@ files:
188
189
  - lib/writers/api_writer.rb
189
190
  - lib/writers/family_writer.rb
190
191
  - lib/writers/group_address_writer.rb
192
+ - lib/writers/group_export_writer.rb
191
193
  - lib/writers/group_writer.rb
192
194
  - lib/writers/metric_measurement_writer.rb
193
195
  - lib/writers/metric_writer.rb