openapply 0.3.3 → 0.4.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7f5f9e9dffcc5d31464293631392d8cfca4c89c462f588e9271b9d9975fc585d
4
- data.tar.gz: 50b2a66cc01a5d017246799febb2cde80b905db8f18f33c223cf2531b30f07f9
3
+ metadata.gz: 9a8737224f666de68e77a77cd2b7b5c0a640635bcf6d1ecef71314859aa8b061
4
+ data.tar.gz: fc001a7b77f3d66dbbb8b3c6cf56cf09457b1c3d4fbb86b219995b88ef92dd61
5
5
  SHA512:
6
- metadata.gz: 8aeab600b2b9fb214bdc75b927f83a4ea0d8a64b070cec1193ced7bfdaf7d70538e146259c48239f40994d623a024f55042b5dec87eb586fdbb3df70afb3a1a8
7
- data.tar.gz: c45b4d9b269d2d39ea785236f82bf2df7c964bd2c23959bcbf8061a381806238011009a496b8361bd59729569cb390c9a908d79e4758a367fbe290c0f368c997
6
+ metadata.gz: a99d27d4feed780a81d7d6f1f3699394aab6e4cccc87057b9166021b43baf4ac41470de484f918c978d5a97882ff169a33754cc5324005d6e6ce61cef4b6ae9d
7
+ data.tar.gz: 483cad9cc3d138b92a995fcd5af9a21c766b7abadceab9298fdff380eae3c9e26f363c0d1c291227e7b007da385bac1e6eec1ba38d82d05bc31b336ce44e64c1
@@ -1,5 +1,8 @@
1
1
  ### Openapply CHANGE LOG
2
2
 
3
+ * **v0.4.0** - compatible with 0.3.x - 2018-06-08
4
+ - add put ability for student id and status
5
+
3
6
  * **v0.3.3** - compatible with 0.3.x - 2018-04-20
4
7
  - add more exceptions to catch misconfigs and alert coder
5
8
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- openapply (0.3.3)
4
+ openapply (0.4.0)
5
5
  httparty (~> 0.15)
6
6
  json (~> 2.1)
7
7
 
@@ -16,7 +16,7 @@ GEM
16
16
  crack (0.4.3)
17
17
  safe_yaml (~> 1.0.0)
18
18
  diff-lcs (1.3)
19
- docile (1.3.0)
19
+ docile (1.3.1)
20
20
  hashdiff (0.3.7)
21
21
  httparty (0.16.2)
22
22
  multi_xml (>= 0.5.2)
@@ -47,7 +47,7 @@ GEM
47
47
  json (>= 1.8, < 3)
48
48
  simplecov-html (~> 0.10.0)
49
49
  simplecov-html (0.10.2)
50
- webmock (3.3.0)
50
+ webmock (3.4.2)
51
51
  addressable (>= 2.3.6)
52
52
  crack (>= 0.3.2)
53
53
  hashdiff
@@ -29,3 +29,6 @@ details = @oa.many_students_details_by_ids( kid_ids )
29
29
  # get all student records that have been updated in the last week
30
30
  params = {since_date: "#{Date.today-7}"}
31
31
  updates = @oa.many_ids_updated_time( params )
32
+
33
+ # Update Student ID
34
+ update_id = @oa.update_student_id(533497, 533497)
@@ -53,10 +53,11 @@ module Openapply
53
53
  ENV['OA_RECORD_COUNT'] || '50'
54
54
  end
55
55
 
56
- # @note Does the actual api call to OpenApply & handles API timeouts gracefully
56
+ # @note Does the actual api call(get) to OpenApply & handles API timeouts gracefully
57
57
  # @param url [String] - this is the url to do the call
58
58
  # @param options - see httparty options [http://www.rubydoc.info/github/jnunemaker/httparty]
59
- def oa_api_call(url, options={})
59
+
60
+ def get(url, options={})
60
61
  # add exception if ENV are not set
61
62
  max_retries = 3
62
63
  times_retried = 0
@@ -71,17 +72,51 @@ module Openapply
71
72
  end
72
73
  end
73
74
  end
75
+ alias_method :oa_api_call, :get
76
+
77
+ # @note Does the actual api call(put) to OpenApply & handles API timeouts gracefully
78
+ # @param url [String] - this is the url to do the call
79
+ # @param options - see httparty options [http://www.rubydoc.info/github/jnunemaker/httparty]
80
+
81
+ def put(url, value, options={})
82
+ # add exception if ENV are not set
83
+ # Per emai from Mackenzine on API call formatting, vs what is found on API site
84
+ # curl -X "PUT" "https://las.openapply.com/api/v1/students/OAID" \
85
+ # -H 'Content-Type: application/x-www-form-urlencoded; charset=utf-8' \
86
+ # --data-urlencode "student_id=YOURID" \
87
+ # --data-urlencode "auth_token=YOURTOKEN"
88
+ max_retries = 3
89
+ times_retried = 0
90
+ begin
91
+ query = {auth_token: api_key}.merge(value)
92
+ header = { 'Content-Type' => 'application/x-www-form-urlencoded; charset=utf-8' }
93
+ self.class.put(url,
94
+ query: query,
95
+ headers: header )
96
+ rescue Net::ReadTimeout, Net::OpenTimeout
97
+ if times_retried < max_retries
98
+ times_retried += 1
99
+ retry
100
+ else
101
+ { error: "no response (timeout) from URL: #{url}" }
102
+ end
103
+ end
104
+ end
105
+
74
106
 
75
107
  # @note checks the info for validity & unpacks the json retubed to a JS formatt
108
+ # @note by passing in a value such as student_id or status this will automatically trigger the change form get to put
76
109
  # @param url [String] - this is the url to do the call
110
+ # @param value [Hash] - This is used to update the student_id or status
77
111
  # @param options - see httparty options [http://www.rubydoc.info/github/jnunemaker/httparty]
78
- def oa_answer(url, options={})
112
+ def oa_answer(url, value={}, options={})
79
113
  return { error: 'no url given' } if url.nil? or url.to_s.eql? ""
80
114
  return { error: 'bad url - has space' } if url&.include? " "
81
115
  return { error: 'bad api_path' } unless url&.include? "#{api_path}"
82
116
  return { error: 'bad auth_token' } unless url&.include? "auth_token=#{api_key}"
83
117
 
84
- api_answer = oa_api_call(url, options)
118
+ api_answer = send(:get, url, options) if value.empty?
119
+ api_answer = send(:put, url, value, options) unless value.empty?
85
120
 
86
121
  return api_answer unless api_answer.respond_to? "response"
87
122
  return { error: 'no response' } if api_answer.response.nil?
@@ -1,5 +1,32 @@
1
+ require 'json'
2
+
1
3
  module Openapply
4
+ # OpenApply API Page
5
+ # https://dev.faria.co/oa/#resources-reference
2
6
  module Put
3
7
 
8
+ # @note Update one student's Student ID (Field in OpenApply must be currently Blank)
9
+ # @param oa_id - (Integer) - id of student to update
10
+ # @param student_id - (Integer) - id to put in student_id field
11
+ # PUT https://<school_subdomain>.openapply.com/api/v1/students/1/student_id
12
+ # PUT Data student_id=123456
13
+ def update_student_id(oa_id, student_id)
14
+ # url = "#{api_path}#{id}?auth_token=#{api_key}"
15
+ url = "#{api_path}#{oa_id}"
16
+ return oa_answer( url, {student_id: student_id})
17
+ end
18
+
19
+ # @note Update one student's status
20
+ # @param oa_id - (Integer) - id of student to update
21
+ # @param status - (string) - status to update for student
22
+ # PUT https://<school_subdomain>.openapply.com/api/v1/students/1/status
23
+ # PUT Data status=Applied
24
+ def update_student_status(oa_id, status)
25
+ # url = "#{api_path}#{id}/status?auth_token=#{api_key}"
26
+ url = "#{api_path}#{oa_id}/status"
27
+ return oa_answer( url, {status: status})
28
+ end
29
+
30
+
4
31
  end
5
32
  end
@@ -1,5 +1,5 @@
1
1
  module Openapply
2
2
  module Version
3
- VERSION = "0.3.3"
3
+ VERSION = "0.4.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openapply
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bill Tihen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-04-20 00:00:00.000000000 Z
11
+ date: 2018-06-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty