src/bin/readPropertiesFromGoogle2.php

 
Procedures Status
getClient Issues 2
expandHomeDirectory Testable
 
 
1. <?php
3. // include your composer dependencies
Code on global space   Code on global space  
4. require_once 'vendor/autoload.php';
Code on global space   Code on global space   Code on global space  
7. $shortopts = "";
Code on global space   Code on global space   Code on global space  
8. $shortopts .= "i:"; // Required - path to incoming duplicate properties directory
Code on global space   Code on global space   Code on global space  
9. $shortopts .= "p:"; // Required - path to property definitions directory
Code on global space   Code on global space   Code on global space  
10. $shortopts .= "c:"; // Required - path to credentials file for Google Drive API
Code on global space   Code on global space   Code on global space   Code on global space   Code on global space  
12. $options = getopt($shortopts);
14. // Incoming errors and duplicates get written here.
Code on global space   Code on global space   Code on global space   Code on global space   Code on global space   Code on global space   Code on global space  
15. $incomingDir = realpath($options['i']);
17. // Properties are stored here.
18. // They can be extended and reused across objects.
Code on global space   Code on global space   Code on global space   Code on global space   Code on global space   Code on global space   Code on global space  
19. $propertyDir = realpath($options['p']);
20. // Create properties directory if needed
Code on global space   Code on global space   Code on global space   Code on global space   Code on global space   Code on global space  
21. if (false === realpath($propertyDir)) {
Code on global space   Code on global space   Code on global space  
22. mkdir($propertyDir);
Code on global space   Code on global space   Code on global space   Code on global space   Code on global space  
23. $propertyDir = realpath($propertyDir);
24. }
Code on global space   Code on global space   Code on global space   Code on global space   Code on global space  
27. define('APPLICATION_NAME', 'Google Sheets API PHP Quickstart');
Code on global space   Code on global space   Code on global space   Code on global space   Code on global space  
28. define('CREDENTIALS_PATH', './credentials/sheets.googleapis.com.json');
Code on global space   Code on global space   Code on global space   Code on global space   Code on global space  
29. define('CLIENT_SECRET_PATH', './credentials/client_secret.json');
30. // If modifying these scopes, delete your previously saved credentials
31. // at ~/.credentials/sheets.googleapis.com-php-quickstart.json
Code on global space   Code on global space   Code on global space   Code on global space   Code on global space   Code on global space   Code on global space   Code on global space   Code on global space  
32. define('SCOPES', implode(' ', array(
Code on global space   Code on global space  
33. Google_Service_Sheets::SPREADSHEETS_READONLY)
34. ));
Code on global space   Code on global space   Code on global space   Code on global space  
36. if (php_sapi_name() != 'cli') {
Code on global space   Code on global space   Code on global space   Code on global space  
37. throw new Exception('This application must be run on the command line.');
38. }
40. /**
41. * Returns an authorized API client.
42. * @return Google_Client the authorized client object
43. */
44. function getClient() {
New instance (Google_Client)  
45. $client = new Google_Client();
46. $client->setApplicationName(APPLICATION_NAME);
47. $client->setScopes(SCOPES);
48. $client->setAuthConfig(CLIENT_SECRET_PATH);
49. $client->setAccessType('offline');
51. //$client->setRedirectUri('http://izzup.com/oauth2callback.php');
54. // Load previously authorized credentials from a file.
Global function call (expandHomeDirectory)  
55. $credentialsPath = expandHomeDirectory(CREDENTIALS_PATH);
56. if (file_exists($credentialsPath)) {
57. $accessToken = json_decode(file_get_contents($credentialsPath), true);
58. } else {
59. // Request authorization from the user.
60. $authUrl = $client->createAuthUrl();
61. printf("Open the following link in your browser:\n%s\n", $authUrl);
62. print 'Enter verification code: ';
63. $authCode = trim(fgets(STDIN));
65. // Exchange authorization code for an access token.
66. $accessToken = $client->fetchAccessTokenWithAuthCode($authCode);
68. // Store the credentials to disk.
69. if(!file_exists(dirname($credentialsPath))) {
70. mkdir(dirname($credentialsPath), 0700, true);
71. }
72. file_put_contents($credentialsPath, json_encode($accessToken));
73. printf("Credentials saved to %s\n", $credentialsPath);
74. }
75. $client->setAccessToken($accessToken);
77. // Refresh the token if it's expired.
78. if ($client->isAccessTokenExpired()) {
79. $client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
80. file_put_contents($credentialsPath, json_encode($client->getAccessToken()));
81. }
82. return $client;
83. }
85. /**
86. * Expands the home directory alias '~' to the full path.
87. * @param string $path the path to expand.
88. * @return string the expanded path.
89. */
90. function expandHomeDirectory($path) {
91. $homeDirectory = getenv('HOME');
92. if (empty($homeDirectory)) {
93. $homeDirectory = getenv('HOMEDRIVE') . getenv('HOMEPATH');
94. }
95. return str_replace('~', realpath($homeDirectory), $path);
96. }
98. // Get the API client and construct the service object.
Code on global space   Code on global space   Code on global space  
99. $client = getClient();
Code on global space   Code on global space   Code on global space   Code on global space   Code on global space  
100. $service = new Google_Service_Sheets($client);
Code on global space   Code on global space   Code on global space  
102. var_dump($service);
104. // Prints the names and majors of students in a sample spreadsheet:
105. // https://docs.google.com/spreadsheets/d/17Eh19JUUKSuk9SLOv-ydiEBjG0GUv_CzA87PuUZIakw/edit
Code on global space   Code on global space   Code on global space  
106. $spreadsheetId = '1kcclfnDGn94cVt9UzHCSQbF1LUyhpBEIiHqHuJ1CfC8';
Code on global space   Code on global space   Code on global space  
107. $range = 'Properties!A1:c1000';
Code on global space   Code on global space   Code on global space   Code on global space   Code on global space   Code on global space   Code on global space   Code on global space   Code on global space  
108. $response = $service->spreadsheets_values->get($spreadsheetId, $range);
Code on global space   Code on global space   Code on global space   Code on global space  
109. $values = $response->getValues();
Code on global space   Code on global space   Code on global space   Code on global space   Code on global space   Code on global space  
111. if (count($values) == 0) {
Code on global space   Code on global space  
112. print "No data found.\n";
Code on global space  
113. } else {
Code on global space   Code on global space  
114. print "property, type, description:\n";
Code on global space   Code on global space   Code on global space  
115. foreach ($values as $row) {
116. // Print columns A and E, which correspond to indices 0 and 4.
Code on global space   Code on global space   Code on global space   Code on global space   Code on global space   Code on global space   Code on global space   Code on global space   Code on global space   Code on global space   Code on global space   Code on global space   Code on global space   Code on global space   Code on global space  
117. printf("%s, %s, %s\n", $row[0], $row[1], $row[2]);
 
Generated Thu, 11 Jan 2018 21:56:06 -0800 by PHP_Testability