Skip to content

Commit 0cb01cb

Browse files
authored
Merge pull request #9 from EiffelWebFramework/pg_dev
Pg dev
2 parents 3ee7fed + 1119e1a commit 0cb01cb

File tree

3 files changed

+102
-141
lines changed

3 files changed

+102
-141
lines changed

sheets/esheets.ecf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<setting name="total_order_on_reals" value="false"/>
1616
<setting name="dead_code_removal" value="feature"/>
1717
<capability>
18-
<concurrency support="none"/>
18+
<concurrency support="scoop"/>
1919
</capability>
2020
<library name="base" location="$ISE_LIBRARY\library\base\base.ecf"/>
2121
<library name="cypress_consumer" location="$ISE_LIBRARY\contrib\library\web\authentication\oauth\cypress\consumer\consumer.ecf" readonly="false"/>

sheets/src/eg_sheets_api.e

Lines changed: 8 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ feature -- Spreedsheets Operations
146146
end
147147
end
148148

149-
append_with_id (a_spreadsheet_id: attached like spreadsheet_id; a_data: detachable ARRAY[ARRAY[STRING]]): detachable like last_response.body
149+
append_with_id_raw (a_spreadsheet_id: attached like spreadsheet_id; a_range, a_raw_data: STRING): detachable like last_response.body
150150
note
151151
EIS:"name=append.spreedsheets", "src=https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/append", "protocol=uri"
152152
require
@@ -160,14 +160,14 @@ feature -- Spreedsheets Operations
160160
url_encoder: URL_ENCODER
161161
do
162162
l_range := ""
163-
logger.write_information ("append-> spreadsheed_id:" + a_spreadsheet_id)
163+
logger.write_information ("append_with_id_raw-> spreadsheed_id:" + a_spreadsheet_id)
164164
-- path params
165165
l_path_params_s := a_spreadsheet_id
166166
l_path_params_s.append ("/values/") -- spreadsheets/{spreadsheetId}/values/{range}:append
167167

168168
-- TODO add url encode to the query parameters.
169169
create url_encoder
170-
l_path_params_s.append (url_encoder.encoded_string ("Sheet1!A1:B5")) -- range ex. A1:B2 or namedRanges TRY: Sheet1!A:A | last not null index could be: =index(J:J,max(row(J:J)*(J:J<>"")))
170+
l_path_params_s.append (url_encoder.encoded_string (a_range)) -- range ex. A1:B2 or namedRanges TRY: Sheet1!A:A | last not null index could be: =index(J:J,max(row(J:J)*(J:J<>"")))
171171

172172
l_path_params_s.append (":append")
173173
-- qry params
@@ -181,7 +181,8 @@ feature -- Spreedsheets Operations
181181
-- l_qry_params.extend ("SERIAL_NUMBER", "responseDateTimeRenderOption") -- SERIAL_NUMBER|FORMATTED_STRING https://developers.google.com/sheets/api/reference/rest/v4/DateTimeRenderOption
182182

183183

184-
l_post_data := impl_append_post_data2
184+
l_post_data := a_raw_data
185+
logger.write_debug ("append_with_id_raw -> post data are:" + l_post_data + "-----")
185186

186187
-- Google API append require body parameter instead of upload data.
187188
api_post_call (sheets_url ("spreadsheets/" + l_path_params_s, Void), l_qry_params, l_post_data, Void)
@@ -203,9 +204,9 @@ feature -- Spreedsheets Operations
203204
-- l_file.put_string (l_body)
204205
-- l_file.close
205206
elseif l_response.status = {HTTP_STATUS_CODE}.not_found then
206-
logger.write_error ("get_from_id-> Not found:" + l_response.status.out + " %NBody: " + l_body)
207+
logger.write_error ("append_with_id_raw-> Not found:" + l_response.status.out + " %NBody: " + l_body)
207208
else
208-
logger.write_error ("get_from_id-> Status code invalid:" + l_response.status.out + " %NBody: " + l_body)
209+
logger.write_error ("append_with_id_raw-> Status code invalid:" + l_response.status.out + " %NBody: " + l_body)
209210
end
210211
end
211212
end
@@ -513,7 +514,7 @@ feature {NONE} -- Implementation
513514
data_file: detachable PLAIN_TEXT_FILE
514515

515516

516-
impl_append_post_data: TUPLE[data:PATH; content_type: STRING]
517+
impl_append_post_data_sample_2: TUPLE[data:PATH; content_type: STRING]
517518
require
518519
not attached data_file
519520
local
@@ -552,82 +553,6 @@ feature {NONE} -- Implementation
552553
attached data_file
553554
end
554555

555-
impl_append_post_data2: STRING
556-
local
557-
l_res: JSON_OBJECT
558-
l_jsa_main,
559-
l_jsa_line: JSON_ARRAY
560-
j_array: JSON_ARRAY
561-
562-
--{
563-
-- "range": string,
564-
-- "majorDimension": enum (Dimension),
565-
-- "values": [
566-
-- array
567-
-- ]
568-
--}
569-
--// "values": [
570-
-- // [
571-
-- // "Item",
572-
-- // "Cost"
573-
-- // ],
574-
-- // [
575-
-- // "Wheel",
576-
-- // "$20.50"
577-
-- // ],
578-
-- // [
579-
-- // "Door",
580-
-- // "$15"
581-
-- // ],
582-
-- // [
583-
-- // "Engine",
584-
-- // "$100"
585-
-- // ],
586-
-- // [
587-
-- // "Totals",
588-
-- // "$135.50"
589-
-- // ]
590-
-- // ]
591-
592-
do
593-
create l_res.make_with_capacity (5)
594-
l_res.put_string ("Sheet1!A1:B5", "range")
595-
l_res.put_string ("ROWS", "majorDimension") -- "DIMENSION_UNSPECIFIED", "ROWS", "COLUMNS"
596-
597-
create l_jsa_main.make (10)
598-
599-
create j_array.make (1)
600-
create l_jsa_line.make (2)
601-
l_jsa_line.extend (create {JSON_STRING}.make_from_string ("Item"))
602-
l_jsa_line.extend (create {JSON_STRING}.make_from_string ("Cost"))
603-
j_array.add (l_jsa_line)
604-
605-
create l_jsa_line.make (2)
606-
l_jsa_line.extend (create {JSON_STRING}.make_from_string ("Wheel"))
607-
l_jsa_line.extend (create {JSON_STRING}.make_from_string ("$20.50"))
608-
j_array.add (l_jsa_line)
609-
610-
create l_jsa_line.make (2)
611-
l_jsa_line.extend (create {JSON_STRING}.make_from_string ("Door"))
612-
l_jsa_line.extend (create {JSON_STRING}.make_from_string ("$15"))
613-
j_array.add (l_jsa_line)
614-
615-
create l_jsa_line.make (2)
616-
l_jsa_line.extend (create {JSON_STRING}.make_from_string ("Engine"))
617-
l_jsa_line.extend (create {JSON_STRING}.make_from_string ("$100"))
618-
j_array.add (l_jsa_line)
619-
620-
create l_jsa_line.make (2)
621-
l_jsa_line.extend (create {JSON_STRING}.make_from_string ("Totals"))
622-
l_jsa_line.extend (create {JSON_STRING}.make_from_string ("$135.50"))
623-
j_array.add (l_jsa_line)
624-
625-
626-
l_res.put (j_array, "values")
627-
628-
Result := l_res.representation
629-
logger.write_debug ("impl_append_body-> Result: '" + Result.out + "'")
630-
end
631556

632557
end
633558

sheets/test/test_sheets_api.e

Lines changed: 93 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,16 @@ feature -- {NONE}
1919
do
2020
-- TODO improve this code so we can select which integration test we want to run.
2121
logger.write_information ("make-> ======================> Starting application")
22-
23-
set_from_json_credentials_file_path (create {PATH}.make_from_string (CREDENTIALS_PATH))
22+
set_from_json_credentials_file_path (create {PATH}.make_from_string ("/home/pg/data/solarity/sit-dev/etc/opt/solarity/EGSheets-itadmin-api-project-credentials.json"))
2423
retrieve_access_token
2524
-- test_create_sheet
26-
-- test_get_sheet ("1j5CTkpgOc6Y5qgYdA_klZYjNhmN2KYocoZAdM4Y61tw")
27-
test_get_sheet_with_params_range ("1j5CTkpgOc6Y5qgYdA_klZYjNhmN2KYocoZAdM4Y61tw")
28-
-- test_append_sheet ("19cKCmQBWJoMePX0Iy6LueHRw0sS2bMcyP1Auzbkvj6M") --pg
29-
-- test_append_sheet ("1j5CTkpgOc6Y5qgYdA_klZYjNhmN2KYocoZAdM4Y61tw") --jv
30-
31-
-- set_from_json_credentials_file_path (create {PATH}.make_from_string (CREDENTIALS_PATH))
32-
-- retrieve_access_token
3325
-- test_get_sheet ("1v1N4nRa6mmLcP9rUuyQPiCnLuUcBQFDEC7E0CDg3ASI")
26+
test_append_sheet ("19cKCmQBWJoMePX0Iy6LueHRw0sS2bMcyP1Auzbkvj6M", impl_append_post_data_sample) --pg
27+
--test_append_sheet ("1j5CTkpgOc6Y5qgYdA_klZYjNhmN2KYocoZAdM4Y61tw") --jv
3428

29+
-- set_from_json_credentials_file_path (create {PATH}.make_from_string (CREDENTIALS_PATH))
30+
retrieve_access_token
31+
test_get_sheet ("1v1N4nRa6mmLcP9rUuyQPiCnLuUcBQFDEC7E0CDg3ASI")
3532
end
3633

3734

@@ -74,12 +71,12 @@ feature -- Tests
7471
end
7572
end
7673

77-
test_get_sheet (an_id: attached like {EG_SHEETS_API}.spreadsheet_id)
74+
test_get_sheet (a_sheet_id: attached like {EG_SHEETS_API}.spreadsheet_id)
7875
local
7976
l_esapi: EG_SHEETS_API
8077
do
8178
create l_esapi.make (last_token.token)
82-
if attached l_esapi.get_from_id2 (an_id) as l_spreedsheet_get_result then
79+
if attached l_esapi.get_from_id (a_sheet_id) as l_spreedsheet_get_result then
8380
if l_esapi.has_error then
8481
-- debug ("test_create_sheet")
8582
print ("test_create_sheet-> Error %N" )
@@ -108,56 +105,15 @@ feature -- Tests
108105
end
109106
end
110107

111-
test_get_sheet_with_params_range (an_id: attached like {EG_SHEETS_API}.spreadsheet_id)
108+
test_append_sheet (a_sheet_id: attached like {EG_SHEETS_API}.spreadsheet_id; a_data: STRING)
112109
local
113110
l_esapi: EG_SHEETS_API
114-
l_qry: EG_SPREADSHEET_PARAMETERS
115-
111+
l_range: STRING
116112
do
117-
create l_qry.make (1)
118-
l_qry.include_ranges (create {ARRAYED_LIST [STRING]}.make_from_array (<<"Sheet1!A1:B1">>))
119-
l_qry.include_grid_data (True)
120113
create l_esapi.make (last_token.token)
121-
if attached l_esapi.get_from_id (an_id, l_qry) as l_spreedsheet_get_result then
122-
if l_esapi.has_error then
123-
-- debug ("test_create_sheet")
124-
print ("test_create_sheet-> Error %N" )
125-
print ("test_create_sheet-> Error: msg:" + l_esapi.error_message)
126-
print ("test_create_sheet-> See codes here: https://developers.google.com/maps-booking/reference/rest-api-v3/status_codes")
127-
print ("%N")
128-
-- end
129-
check
130-
cannot_create_the_spreedsheet: False
131-
end
132-
else
133-
check Json_Field_spreadsheetId: l_spreedsheet_get_result.has_substring ("spreadsheetId") end
134-
check Json_Field_properties: l_spreedsheet_get_result.has_substring ("properties") end
135-
check Json_Field_sheets: l_spreedsheet_get_result.has_substring ("sheets") end
136-
check Json_Field_spreadsheetUrl: l_spreedsheet_get_result.has_substring ("spreadsheetUrl") end
137-
-- developerMetadata and namedRanges are optional.
138-
-- debug ("test_create_sheet")
139-
logger.write_debug ("test_get_sheet-> success. Result:%N")
140-
logger.write_debug (l_spreedsheet_get_result + "%N")
141-
logger.write_debug ("test_get_sheet-> success. ")
142-
-- end
143-
end
144-
else
145-
-- Bad scope. no connection, etc
146-
check Unexptected_Behavior: False end
147-
end
148-
end
114+
l_range := "Sheet1" + "!A1:A"
149115

150-
test_append_sheet (an_id: attached like {EG_SHEETS_API}.spreadsheet_id)
151-
local
152-
l_esapi: EG_SHEETS_API
153-
l_data: ARRAY[ARRAY[STRING]]
154-
do
155-
l_data := <<
156-
<<"test1", "test2">>,
157-
<<"test3", "test4">>
158-
>>
159-
create l_esapi.make (last_token.token)
160-
if attached l_esapi.append_with_id (an_id, l_data) as l_spreedsheet_get_result then
116+
if attached l_esapi.append_with_id_raw (a_sheet_id, l_range, a_data) as l_spreedsheet_get_result then
161117
if l_esapi.has_error then
162118
-- debug ("test_create_sheet")
163119
print ("test_append_sheet-> Error %N" )
@@ -195,6 +151,86 @@ feature -- Tests
195151

196152
feature {NONE} -- Implementations
197153

198-
CREDENTIALS_PATH: STRING="credentials.json"
154+
CREDENTIALS_PATH: STRING="credentials.json" -- get this file from https://console.developers.google.com/
199155
-- Credentials path to json file.
156+
157+
158+
159+
impl_append_post_data_sample: STRING
160+
local
161+
l_res: JSON_OBJECT
162+
l_jsa_main,
163+
l_jsa_line: JSON_ARRAY
164+
j_array: JSON_ARRAY
165+
166+
--{
167+
-- "range": string,
168+
-- "majorDimension": enum (Dimension),
169+
-- "values": [
170+
-- array
171+
-- ]
172+
--}
173+
--// "values": [
174+
-- // [
175+
-- // "Item",
176+
-- // "Cost"
177+
-- // ],
178+
-- // [
179+
-- // "Wheel",
180+
-- // "$20.50"
181+
-- // ],
182+
-- // [
183+
-- // "Door",
184+
-- // "$15"
185+
-- // ],
186+
-- // [
187+
-- // "Engine",
188+
-- // "$100"
189+
-- // ],
190+
-- // [
191+
-- // "Totals",
192+
-- // "$135.50"
193+
-- // ]
194+
-- // ]
195+
196+
do
197+
create l_res.make_with_capacity (5)
198+
l_res.put_string ("Sheet1!A1:B5", "range")
199+
l_res.put_string ("ROWS", "majorDimension") -- "DIMENSION_UNSPECIFIED", "ROWS", "COLUMNS"
200+
201+
create l_jsa_main.make (10)
202+
203+
create j_array.make (1)
204+
create l_jsa_line.make (2)
205+
l_jsa_line.extend (create {JSON_STRING}.make_from_string ("Item"))
206+
l_jsa_line.extend (create {JSON_STRING}.make_from_string ("Cost"))
207+
j_array.add (l_jsa_line)
208+
209+
create l_jsa_line.make (2)
210+
l_jsa_line.extend (create {JSON_STRING}.make_from_string ("Wheel"))
211+
l_jsa_line.extend (create {JSON_STRING}.make_from_string ("$20.50"))
212+
j_array.add (l_jsa_line)
213+
214+
create l_jsa_line.make (2)
215+
l_jsa_line.extend (create {JSON_STRING}.make_from_string ("Door"))
216+
l_jsa_line.extend (create {JSON_STRING}.make_from_string ("$15"))
217+
j_array.add (l_jsa_line)
218+
219+
create l_jsa_line.make (2)
220+
l_jsa_line.extend (create {JSON_STRING}.make_from_string ("Engine"))
221+
l_jsa_line.extend (create {JSON_STRING}.make_from_string ("$100"))
222+
j_array.add (l_jsa_line)
223+
224+
create l_jsa_line.make (2)
225+
l_jsa_line.extend (create {JSON_STRING}.make_from_string ("Totals"))
226+
l_jsa_line.extend (create {JSON_STRING}.make_from_string ("$135.50"))
227+
j_array.add (l_jsa_line)
228+
229+
230+
l_res.put (j_array, "values")
231+
232+
Result := l_res.representation
233+
logger.write_debug ("impl_append_body-> Result: '" + Result.out + "'")
234+
end
235+
200236
end

0 commit comments

Comments
 (0)