Regression of ESP32 slack code due to memory corruption. Try again later. On to chess!

This commit is contained in:
equant 2021-09-28 21:43:23 -07:00
parent 52b1e8dfc7
commit d18f8a0cc1
13 changed files with 1242 additions and 166 deletions

View File

@ -9,10 +9,31 @@
// If the values of these defines are changed, then they will need to be
// updated within the code that runs on the Apple as well.
//#define COMMAND_GENERIC 0b10000000
#define COMMAND_WIFI_SCAN 111
#define COMMAND_WIFI_CONNECT 112
#define SHARED_RAM_START_ADDRESS 2
#define ACK 0b00000110 // Acknowledge
#define EOT 0b00000100 // End of transmit
#define ERR 0b00000101 // Error
#define MORE_TO_SEND 0b00000111
/*################################################
# GENERIC STATUSES #
################################################*/
#define NOT_FOUND 11
/*################################################
# WIFI #
################################################*/
#define COMMAND_WIFI_SCAN 111
#define COMMAND_WIFI_CONNECT 112
/*################################################
# SLACK (50) #
################################################*/
#define COMMAND_GET_N_CHANNELS 50 // Return number of channels
#define COMMAND_GET_CHANNEL_N 51 // Return info for channel identified by #n
#define COMMAND_GET_CHANNEL_STR 52 // Return info for channel identified by string (id or name)
#define COMMAND_SET_CHANNEL 53
#define COMMAND_SEND_MESSAGE 54
#define COMMAND_GET_MESSAGES 55

View File

@ -16,11 +16,12 @@ ArduinoSlack::ArduinoSlack(Client &client, const char *bearerToken)
int ArduinoSlack::makeGetRequest(const char *command)
{
Serial.println("ArduinoSlack::makeGetRequest()");
client->flush();
client->setTimeout(SLACK_TIMEOUT);
if (!client->connect(SLACK_HOST, portNumber))
{
SLACK_SERIAL_LN(F("Connection failed"));
SLACK_SERIAL_LN(F(" Connection failed"));
return false;
}
@ -56,7 +57,7 @@ int ArduinoSlack::makeGetRequest(const char *command)
if (client->println() == 0)
{
SLACK_SERIAL_LN(F("Failed to send request"));
SLACK_SERIAL_LN(F(" Failed to send request"));
return false;
}
@ -68,11 +69,12 @@ int ArduinoSlack::makeGetRequest(const char *command)
int ArduinoSlack::makePostRequest(const char *command, const char *body, const char *contentType)
{
Serial.println("ArduinoSlack::makePostRequest()");
client->flush();
client->setTimeout(SLACK_TIMEOUT);
if (!client->connect(SLACK_HOST, portNumber))
{
SLACK_SERIAL_LN(F("Connection failed"));
SLACK_SERIAL_LN(F(" Connection failed"));
return false;
}
@ -134,10 +136,9 @@ bool ArduinoSlack::setPresence(const char *presence)
DeserializationError error = deserializeJson(doc, *client);
if (!error)
{
SLACK_DEBUG_SERIAL_LN(F("parsed Json Object: "));
#ifdef SLACK_ENABLE_DEBUG
serializeJson(doc, Serial);
#endif
//SLACK_DEBUG_SERIAL_LN(F("parsed Json Object: "));
//serializeJson(doc, Serial);
okStatus = doc["ok"];
if (!okStatus)
{
@ -165,108 +166,51 @@ bool ArduinoSlack::setPresence(const char *presence)
SlackUsersConversations ArduinoSlack::usersConversations()
{
//char body[300];
//sprintf(body, setConvoHistoryBody, channel, limit);
//SLACK_DEBUG_SERIAL_LN(body);
Serial.println("ArduinoSlack::usersConversations()");
// Get from https://arduinojson.org/v6/assistant/
const size_t bufferSize = profileBufferSize;
SlackUsersConversations conversations;
// This flag will get cleared if all goes well
conversations.error = true;
//SLACK_SERIAL_LN("GET String:");
//SLACK_SERIAL_LN(SLACK_CONVERSATIONS_HISTORY_ENDPOINT);
//SLACK_SERIAL_LN(usersConversationsGET);
//int response = makeGetRequest(SLACK_USERS_CONVERSATIONS_ENDPOINT);
int response = makeGetRequest("/api/users.conversations?exclude_arc=True&limit=17");
//if (makeGetRequest(SLACK_USERS_CONVERSATIONS_ENDPOINT) == 200)
int response = makeGetRequest("/api/users.conversations?exclude_arc=True&limit=5");
if (response == 200)
{
// So it seems for whatever reason every other line is bad. I don't
// know why this is, but this will remove them so they don't break
// the Json...
String chunk;
String payload;
int limit=1;
do {
if (client->connected()) {
yield();
chunk = client->readStringUntil('\n');
//SLACK_DEBUG_SERIAL("CHUNK #");
//SLACK_DEBUG_SERIAL(limit);
//SLACK_DEBUG_SERIAL(": ");
//SLACK_DEBUG_SERIAL_LN(chunk);
if (limit % 2 == 0) {
// skip even lines.
} else {
payload += chunk;
}
}
} while (chunk.length() > 0 && ++limit < 100);
//String payload = client->readString();
//SLACK_DEBUG_SERIAL_LN("Payload!");
//SLACK_DEBUG_SERIAL_LN(payload);
//String payload = stripBadDataFromClientResponse();
char payload[8000];
stripBadDataFromClientResponse(payload);
// Allocate DynamicJsonDocument
DynamicJsonDocument doc(bufferSize);
// Parse JSON object
StaticJsonDocument<200> filter;
filter["channels"][0]["name"] = true;
filter["channels"][0]["id"] = true;
filter["channels"][0]["name"] = true;
filter["channels"][0]["id"] = true;
filter["channels"][0]["is_channel"] = true;
filter["channels"][0]["topic"]["value"] = true;
filter["channels"][0]["purpose"]["value"] = true;
filter["response_metadata"]["next_cursor"] = true;
//StaticJsonDocument<400> doc;
//DeserializationError error = deserializeJson(doc, *client, DeserializationOption::Filter(filter));
DeserializationError error = deserializeJson(doc, payload, DeserializationOption::Filter(filter));
if (!error)
{
SLACK_DEBUG_SERIAL_LN(F("parsed Json Object: "));
#ifdef SLACK_ENABLE_DEBUG
serializeJson(doc, Serial);
#endif
//SLACK_DEBUG_SERIAL_LN(F("parsed Json Object: "));
//serializeJson(doc, Serial);
JsonObject channelsObj = doc["channels"];
conversations.channelsObj = channelsObj;
SLACK_DEBUG_SERIAL_LN(F(""));
SLACK_DEBUG_SERIAL_LN(F("+++++++++++++++++++++++++++++++++"));
SLACK_DEBUG_SERIAL_LN(doc["channels"].size());
SLACK_DEBUG_SERIAL_LN(F(""));
serializeJsonPretty(doc["channels"][0], Serial);
SLACK_DEBUG_SERIAL_LN(F(""));
serializeJsonPretty(doc["channels"][1], Serial);
SLACK_DEBUG_SERIAL_LN(F(""));
serializeJsonPretty(doc["channels"][doc["channels"].size()-1], Serial);
SLACK_DEBUG_SERIAL_LN(F(""));
SLACK_DEBUG_SERIAL_LN(F("+++++++++++++++++++++++++++++++++"));
SLACK_DEBUG_SERIAL_LN(F(""));
//char (*a[2])[14]
//String *channel_names[doc["channels"].size()];
//String *channel_ids[doc["channels"].size()];
//String channel_names[22];
//String channel_ids[22];
for (int ii=0; ii<doc["channels"].size(); ii++) {
//channel_names[ii] = (char *)doc["channels"][ii]["name"].as<char *>();
//channel_ids[ii] = (char *)doc["channels"][ii]["id"].as<char *>();
//channel_names[ii] = doc["channels"][ii]["name"];
//channel_ids[ii] = doc["channels"][ii]["id"];
//conversations.channelNames[ii] = doc["channels"][ii]["name"];
conversations.channelNames[ii] = (char *)doc["channels"][ii]["name"].as<char *>();
for (int i=0; i<doc["channels"].size(); i++) {
conversations.channelNames[i] = (char *)doc["channels"][i]["name"].as<char *>();
conversations.channelIds[i] = (char *)doc["channels"][i]["id"].as<char *>();
conversations.purpose[i] = (char *)doc["channels"][i]["purpose"]["value"].as<char *>();
conversations.topic[i] = (char *)doc["channels"][i]["topic"]["value"].as<char *>();
conversations.n_channels = doc["channels"].size();
}
//conversations.channelNames = (char *)doc[0]["name"].as<char *>();
//conversations.channelIds = (char *)doc[0]["id"].as<char *>();
//channels.text = (char *)doc["text"].as<char *>();
//channels.username = (char *)doc["username"].as<char *>();
//channels.bot_id = (char *)doc["bot_id"].as<char *>();
//channels.type = (char *)doc["type"].as<char *>();
//channels.channelNames = channel_names;
//channels.channelIds = channel_ids;
conversations.error = false;
}
else
@ -283,11 +227,90 @@ SlackUsersConversations ArduinoSlack::usersConversations()
}
SlackMessage ArduinoSlack::postMessage(const char *channel, const char *text)
{
SlackMessages ArduinoSlack::channelHistory(char *channelId) {
Serial.println("ArduinoSlack::channelHistory()");
// Get from https://arduinojson.org/v6/assistant/
const size_t bufferSize = profileBufferSize;
SlackMessages history;
// This flag will get cleared if all goes well
history.error = true;
char endpoint[100];
sprintf(endpoint, getConvHistEndpointArgs, channelId, 20);
Serial.print(" channelId:");
Serial.println(channelId);
Serial.print(" ENDPOINT: ");
Serial.println(endpoint);
//int response = makeGetRequest("/api/conversations.history?channel="+channelId+"&limit=20");
//int response = makeGetRequest("/api/conversations.history?channel=C02EAQECY5A&limit=20");
//SLACK_DEBUG_SERIAL(F("GET: "));
//SLACK_DEBUG_SERIAL_LN(F(endpoint));
int response = makeGetRequest(endpoint);
if (response == 200)
{
//String payload = client->readString();
//String payload = stripBadDataFromClientResponse();
char payload[8000];
stripBadDataFromClientResponse(payload);
// Allocate DynamicJsonDocument
DynamicJsonDocument doc(bufferSize);
// Parse JSON object
StaticJsonDocument<200> filter;
filter["ok"] = true;
filter["messages"][0]["text"] = true;
filter["messages"][0]["user"] = true;
filter["messages"][0]["reactions"][0]["name"] = true;
filter["messages"][0]["reactions"][0]["users"] = true;
filter["messages"][0]["reactions"][0]["count"] = true;
filter["response_metadata"]["next_cursor"] = true;
DeserializationError error = deserializeJson(doc, payload, DeserializationOption::Filter(filter));
if (!error)
{
//SLACK_DEBUG_SERIAL_LN(F("parsed Json Object: "));
//serializeJson(doc, Serial);
SLACK_DEBUG_SERIAL_LN(F(""));
SLACK_DEBUG_SERIAL_LN(F("+++++++++++++++++++++++++++++++++"));
//SLACK_DEBUG_SERIAL_LN(doc["channels"].size());
serializeJsonPretty(doc["messages"][0], Serial);
SLACK_DEBUG_SERIAL_LN(F(""));
SLACK_DEBUG_SERIAL_LN(F("+++++++++++++++++++++++++++++++++"));
SLACK_DEBUG_SERIAL_LN(F(""));
for (int i=0; i<doc["channels"].size(); i++) {
history.messages[i].text = (char *)doc["messages"][i]["text"].as<char *>();
//history.messages[i].userid = (char *)doc["messages"][i]["user"].as<char *>();
//history.messages[i].username = "unknown";
//history.messages[i].type = (char *)doc["messages"][i]["type"].as<char *>();
//history.n_messages = doc["messages"].size();
}
history.error = false;
}
else
{
SLACK_DEBUG_SERIAL(F(" deserializeJson() failed with code "));
SLACK_DEBUG_SERIAL_LN(error.c_str());
}
} else {
SLACK_DEBUG_SERIAL_LN(F(" Didn't get 200"));
SLACK_DEBUG_SERIAL_LN(response);
}
closeClient();
return history;
}
SlackMessage ArduinoSlack::postMessage(const char *channel, const char *text) {
Serial.println("ArduinoSlack::postMessage()");
char body[300];
sprintf(body, setMessageBody, channel, text);
SLACK_DEBUG_SERIAL_LN(body);
Serial.print(" "); Serial.println(body);
// Get from https://arduinojson.org/v6/assistant/
const size_t bufferSize = profileBufferSize;
@ -295,8 +318,9 @@ SlackMessage ArduinoSlack::postMessage(const char *channel, const char *text)
SlackMessage message;
// This flag will get cleared if all goes well
message.error = true;
if (makePostRequest(SLACK_POST_MESSAGE_ENDPOINT, body) == 200)
{
Serial.print(" B4 Post:"); Serial.println(channel);
if (makePostRequest(SLACK_POST_MESSAGE_ENDPOINT, body) == 200) {
Serial.print(" AR Post:"); Serial.println(channel);
// Allocate DynamicJsonDocument
DynamicJsonDocument doc(bufferSize);
@ -304,26 +328,24 @@ SlackMessage ArduinoSlack::postMessage(const char *channel, const char *text)
DeserializationError error = deserializeJson(doc, *client);
if (!error)
{
SLACK_DEBUG_SERIAL_LN(F("parsed Json Object: "));
#ifdef SLACK_ENABLE_DEBUG
serializeJson(doc, Serial);
#endif
JsonObject messageObj = doc["message"];
message.text = (char *)messageObj["text"].as<char *>();
message.username = (char *)messageObj["username"].as<char *>();
message.bot_id = (char *)messageObj["bot_id"].as<char *>();
message.type = (char *)messageObj["type"].as<char *>();
//SLACK_DEBUG_SERIAL_LN(F("parsed Json Object: "));
//serializeJson(doc, Serial);
//JsonObject messageObj = doc["message"];
//message.text = (char *)messageObj["text"].as<char *>();
//message.username = (char *)messageObj["username"].as<char *>();
//message.bot_id = (char *)messageObj["bot_id"].as<char *>();
//message.type = (char *)messageObj["type"].as<char *>();
message.error = false;
}
else
{
SLACK_DEBUG_SERIAL(F("deserializeJson() failed with code "));
SLACK_DEBUG_SERIAL(F(" deserializeJson() failed with code "));
SLACK_DEBUG_SERIAL_LN(error.c_str());
}
}
Serial.print(" BR closeClient:"); Serial.println(channel);
closeClient();
Serial.print(" AR closeClient:"); Serial.println(channel);
return message;
}
@ -349,10 +371,9 @@ SlackProfile ArduinoSlack::setCustomStatus(const char *text, const char *emoji,
DeserializationError error = deserializeJson(doc, *client);
if (!error)
{
SLACK_DEBUG_SERIAL_LN(F("parsed Json Object: "));
#ifdef SLACK_ENABLE_DEBUG
serializeJson(doc, Serial);
#endif
//SLACK_DEBUG_SERIAL_LN(F("parsed Json Object: "));
//serializeJson(doc, Serial);
JsonObject profileObj = doc["profile"];
profile.displayName = (char *)profileObj["display_name"].as<char *>();
@ -365,7 +386,7 @@ SlackProfile ArduinoSlack::setCustomStatus(const char *text, const char *emoji,
}
else
{
SLACK_DEBUG_SERIAL(F("deserializeJson() failed with code "));
SLACK_DEBUG_SERIAL(F(" deserializeJson() failed with code "));
SLACK_DEBUG_SERIAL_LN(error.c_str());
}
}
@ -402,7 +423,7 @@ int ArduinoSlack::getHttpStatusCode()
if (client->find("HTTP/1.1"))
{
int statusCode = client->parseInt();
SLACK_DEBUG_SERIAL(F("Status Code: "));
SLACK_DEBUG_SERIAL(F(" Status Code: "));
SLACK_DEBUG_SERIAL_LN(statusCode);
return statusCode;
}
@ -415,7 +436,42 @@ void ArduinoSlack::closeClient()
if (client->connected())
{
SLACK_DEBUG_SERIAL_LN(F("Closing client"));
//SLACK_DEBUG_SERIAL_LN(F("Closing client"));
client->stop();
}
}
void ArduinoSlack::stripBadDataFromClientResponse(char *payload) {
// So it seems for whatever reason every other line is bad. I don't
// know why this is, but this will remove them so they don't break
// the Json...
String chunk;
int count=1;
//SLACK_DEBUG_SERIAL_LN("PAYLOAD:");
do {
if (client->connected()) {
yield();
chunk = client->readStringUntil('\n');
chunk.remove(-1,1); // Get rid of trailing \n which can often bork things.
if (count % 2 == 0) {
// skip even lines.
//SLACK_DEBUG_SERIAL("SKIP Line #");
//SLACK_DEBUG_SERIAL(limit);
//SLACK_DEBUG_SERIAL(": ");
//SLACK_DEBUG_SERIAL_LN(chunk);
} else {
//SLACK_DEBUG_SERIAL("KEEP Line #");
//SLACK_DEBUG_SERIAL(limit);
//SLACK_DEBUG_SERIAL(": ");
//SLACK_DEBUG_SERIAL(chunk);
//payload += chunk;
strcat(payload, chunk.c_str());
}
}
} while (chunk.length() > 0 && ++count < 100);
SLACK_DEBUG_SERIAL_LN(payload);
SLACK_DEBUG_SERIAL_LN("");
//return payload;
}

View File

@ -57,27 +57,45 @@ struct SlackProfile
bool error;
};
#define NUM_USERS_TO_SUPPORT 100
struct SlackUsers
{
char *id[NUM_USERS_TO_SUPPORT];
char *name[NUM_USERS_TO_SUPPORT];
};
struct SlackMessage
{
char *text;
char *username;
char *bot_id;
char *userid;
char *type;
char *ts;
bool error;
//char *ts;
//char *bot_id;
};
struct SlackUsersConversations
{
struct SlackUsersConversations {
JsonObject channelsObj;
//String channelNames[22];
//String channelIds[22];
char *channelNames[17];
char *channelIds[17];
int n_channels;
char *channelNames[22];
char *channelIds[22];
bool is_channel;
char *purpose[200];
char *topic[200];
bool error;
};
struct SlackMessages {
int n_messages;
struct SlackMessage messages[30];
bool error;
};
class ArduinoSlack
{
public:
@ -88,6 +106,7 @@ public:
SlackProfile setCustomStatus(const char *text, const char *emoji, int expiration = 0);
SlackMessage postMessage(const char *channel, const char *text);
SlackUsersConversations usersConversations();
SlackMessages channelHistory(char *channelId);
bool setPresence(const char *presence);
int portNumber = 443;
int profileBufferSize = 10000;
@ -98,9 +117,10 @@ private:
int getHttpStatusCode();
void skipHeaders(bool tossUnexpectedForJSON = true);
void closeClient();
void stripBadDataFromClientResponse(char *payload);
const char *usersConversationsGET =
R"(%s?exclude_arc=True&limit=1)";
const char *getConvHistEndpointArgs =
R"(/api/conversations.history?channel=%s&limit=%i)";
const char *setConvoHistoryBody =
R"({"channel": "%s", "limit": "%s"})";
const char *setMessageBody =

View File

@ -1,6 +1,25 @@
# ESP32 Slack code for apple2idiot
```
~/.arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/sdkconfig
```
Set `CONFIG_SPIRAM_USE_MALLOC=y` to use SPI Ram for heap memory.
## Notes
Sun Sep 26 2021
```
Sketch uses 885078 bytes (67%) of program storage space. Maximum is 1310720 bytes.
Global variables use 40784 bytes (12%) of dynamic memory, leaving 286896 bytes for local variables. Maximum is 327680 bytes.
Sketch uses 884910 bytes (67%) of program storage space. Maximum is 1310720 bytes.
Global variables use 40784 bytes (12%) of dynamic memory, leaving 286896 bytes for local variables. Maximum is 327680 bytes.
Sketch uses 885222 bytes (67%) of program storage space. Maximum is 1310720 bytes.
Global variables use 40784 bytes (12%) of dynamic memory, leaving 286896 bytes for local variables. Maximum is 327680 bytes.
Sketch uses 883538 bytes (67%) of program storage space. Maximum is 1310720 bytes.
Global variables use 40784 bytes (12%) of dynamic memory, leaving 286896 bytes for local variables. Maximum is 327680 bytes.
```

View File

@ -0,0 +1,7 @@
{"ok":true,"channels":[{"id":"C1J89GVL4","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1466354298,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"U1J75A8PM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"Be excellent to each other. :the_horns:","creator":"U1J75A8PM","last_set":1599072909},"purpose":{"value":"This channel is for team-wide communication and announcements. All team members are in this channel.","creator":"","last_set":0},"previous_names":[]},{"id":"CA77AFDL4","name":"swapmeet","is_channel":true,"is_group":false,"is_im":false,"created":1523884293,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"swapmeet","is_shared":false,"parent_conversation":null,"creator":"U1J75A8PM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":fals
e,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Please keep sales, trades, biz talk here. Thanks!","creator":"U1J75A8PM","last_set":1523884293},"previous_names":[]},{"id":"CA79CS7V3","name":"kansasfest","is_channel":true,"is_group":false,"is_im":false,"created":1523832275,"is_archived":false,"is_general":false,"unlinked":0,"name_normal
ized":"kansasfest","is_shared":false,"parent_conversation":null,"creator":"U1J75A8PM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"KansasFest 2021 (Online only) - July 23-24, 2021 - <https:\/\/www.kansasfest.org\/>","creator":"U1TS7D80Y","last_set":1624817840},"purpose":{"value":"KansasFest 2018!!!","creator":"U1J75A8PM","last_set":1523832275},"previous_names":[]},{"id":"CA7DAGTJ8","name":"hardwarehackers","is_channel":true,"is_group":false,"is_im":false,"created":1523900178,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"hardwarehackers","is_shared":false,"parent_conversation":null,"creator":"U1J75A8PM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"Trying to plug it in? Building something? Got a question? *POW* Bring it in here!","creator":"U1TKU4H52","last_set":1567374624},"purpose":{"value":"Trying to plug it in? Building something? Got a question? *POW* Bring it in here!","creator":"U1J75A8PM","last_set":1523900179},"previous_names":[]},{"id":"CA8AT5886","name":"coding","is_channel":true,"is_group":false,"is_im":false,"created":1523883870,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"coding","is_shared":false,"parent_conversation":null,"creator":"U1J75A8PM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"U1J75A8PM","last_set":1525527970},"purpose":{"value":"Programming, code golf, experiments, questions on coding, all languages.","creator":"U1J75A8PM","last_set":1587554014},"previous_names":["democoders"]},{"id":"CA8LXU4BV","name":"raspberry-ii","is_channel":true,"is_group":false,"is_im":false,"created":1524041980,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"raspberry-ii","is_shared":false,"parent_conversation":null,"creator":"U1TMNSKMX","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Fun ways to use a Raspberry Pi with your Apple II (Raspple II, Apple 2 Pi, etc)","creator":"U1TMNSKMX","last_set":1524439726},"previous_names":[]},{"id":"CABARQ39S","name":"show-and-tell","is_channel":true,"is_group":false,"is_im":false,"created":1524499762,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"show-and-tell","is_shared":false,"parent_conversation":null,"creator":"UA8HABGKG","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Show off your goods!","creator":"UA8HABGKG","last_set":1524499762},"previous_names":[]},{"id":"CABEM8JFK","name":"emulators","is_channel":true,"is_group":false,"is_im":false,"crea
ted":1524560064,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"emulators","is_shared":false,"parent_conversation":null,"creator":"U1TJZNH1B","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Apple II Emulation","creator":"U1TJZNH1B","last_set":1524560069},"previous_names":[]},{"id":"CB52YS4UR","name":"applehistory","is_channel":true,"is_group":false,"is_im":false,"created":1528749885,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"applehistory","is_shared":false,"parent_conversation":null,"creator":"U1TK8V99Q","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[]},{"id":"CPS2TG28L","name":"appleii","is_channel":true,"is_group":false,"is_im":false,"created":1571964280,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"appleii","is_shared":false,"parent_conversation":null,"creator":"UNGDL366N","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Everything Apple II","creator":"UNGD
L366N","last_set":1571964280},"previous_names":[]},{"id":"CPUNLH9ML","name":"fix_or_repair","is_channel":true,"is_group":false,"is_im":false,"created":1571964217,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"fix_or_repair","is_shared":false,"parent_conversation":null,"creator":"UNGDL366N","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Channel for fixing vintage Apple Computers.","creator":"UNGDL366N","last_set":1571964217},"previous_names":[]},{"id":"CQF1PHTFY","name":"joeylib","is_channel":true,"is_group":false,"is_im":false,"created":1573419513,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"joeylib","is_shared":false,"parent_conversation":null,"creator":"UCLBUA2JU","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"Cross-platform game development library and IDE. <https:\/\/joeylib.com>","creator":"UCLBUA2J
U","last_set":1630633667},"purpose":{"value":"To Rule the World.","creator":"UCLBUA2JU","last_set":1596836336},"previous_names":[]},{"id":"C019N82J96Z","name":"prodos","is_channel":true,"is_group":false,"is_im":false,"created":1598719399,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"prodos","is_shared":false,"parent_conversation":null,"creator":"UA8FVE12T","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"ProDOS 8 use\/dev","creator":"UA8FVE12T","last_set":1598719400},"previous_names":[]},{"id":"C01J91LFSQ3","name":"romx","is_channel":true,"is_group":false,"is_im":false,"created":1610079702,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"romx","is_shared":false,"parent_conversation":null,"creator":"U01HJQK9TU3","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"ROMX rom replacement boards (<http:\/\/www.theRomExchange.com|www.theRomExchange.com>)","creator":"U01HJQK9TU3","last_set":1610079703},"previous_names":[]},{"id":"C01NHA835NF","name":"classicmac","is_channel":true,"is_group":false,"is_im":false,"created":1613625903,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"classicmac","is_shared":false,"parent_conversation":null,"creator":"U1TJZNH1B","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"For Classic (Pre-Intel) Mac Discussion","creator":"U1TJZNH1B","
last_set":1613625904},"previous_names":[]},{"id":"C02B4PJ223X","name":"applecorn","is_channel":true,"is_group":false,"is_im":false,"created":1628990910,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"applecorn","is_shared":false,"parent_conversation":null,"creator":"UNE040UAK","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"<https:\/\/github.com\/bobbimanners\/Applecorn>","creator":"UNE040UAK","last_set":1628991004},"purpose":{"value":"Applecorn - run BBC Micro language ROMs on \/\/e Enhanced","creator":"UNE040UAK","last_set":1628990910},"previous_names":[]},{"id":"C02EAQECY5A","name":"equant-test","is_channel":true,"is_group":false,"is_im":false,"created":1631378860,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"equant-test","is_shared":false,"parent_conversation":null,"creator":"U025NNCFL3G","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"All you base are belong to us","creator":"U025NNCFL3G","last_set":1632633537},"purpose":{"value":"A test channel for developing a Slack app to run on the Apple2Idiot card.","creator":"U025NNCFL3G","last_set":1631378861},"previous_names":[]}],"response_metadata":{"next_cursor":""}}

View File

@ -0,0 +1,48 @@
CHUNK #1: {"ok":true,"channels":[{"id":"C1J89GVL4","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1466354298,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"U1J75A8PM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"Be excellent to each other. :the_horns:","creator":"U1J75A8PM","last_set":1599072909},"purpose":{"value":"This channel is for team-wide communication and announcements. All team members are in this channel.","creator":"","last_set":0},"previous_names":[]},{"id":"CA77AFDL4","name":"swapmeet","is_channel":true,"is_group":false,"is_im":false,"created":1523884293,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"swapmeet","is_shared":false,"parent_conversation":null,"creator":"U1J75A8PM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":fals
CHUNK #2: 177
CHUNK #3: e,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Please keep sales, trades, biz talk here. Thanks!","creator":"U1J75A8PM","last_set":1523884293},"previous_names":[]},{"id":"CA79CS7V3","name":"kansasfest","is_channel":true,"is_group":false,"is_im":false,"created":1523832275,"is_archived":false,"is_general":false,"unlinked":0,"name_normal
CHUNK #4: D21
CHUNK #5: ized":"kansasfest","is_shared":false,"parent_conversation":null,"creator":"U1J75A8PM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"KansasFest 2021 (Online only) - July 23-24, 2021 - <https:\/\/www.kansasfest.org\/>","creator":"U1TS7D80Y","last_set":1624817840},"purpose":{"value":"KansasFest 2018!!!","creator":"U1J75A8PM","last_set":1523832275},"previous_names":[]},{"id":"CA7DAGTJ8","name":"hardwarehackers","is_channel":true,"is_group":false,"is_im":false,"created":1523900178,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"hardwarehackers","is_shared":false,"parent_conversation":null,"creator":"U1J75A8PM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"Trying to plug it in? Building something? Got a question? *POW* Bring it in here!","creator":"U1TKU4H52","last_set":1567374624},"purpose":{"value":"Trying to plug it in? Building something? Got a question? *POW* Bring it in here!","creator":"U1J75A8PM","last_set":1523900179},"previous_names":[]},{"id":"CA8AT5886","name":"coding","is_channel":true,"is_group":false,"is_im":false,"created":1523883870,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"coding","is_shared":false,"parent_conversation":null,"creator":"U1J75A8PM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"U1J75A8PM","last_set":1525527970},"purpose":{"value":"Programming, code golf, experiments, questions on coding, all languages.","creator":"U1J75A8PM","last_set":1587554014},"previous_names":["democoders"]},{"id":"CA8LXU4BV","name":"raspberry-ii","is_channel":true,"is_group":false,"is_im":false,"created":1524041980,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"raspberry-ii","is_shared":false,"parent_conversation":null,"creator":"U1TMNSKMX","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Fun ways to use a Raspberry Pi with your Apple II (Raspple II, Apple 2 Pi, etc)","creator":"U1TMNSKMX","last_set":1524439726},"previous_names":[]},{"id":"CABARQ39S","name":"show-and-tell","is_channel":true,"is_group":false,"is_im":false,"created":1524499762,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"show-and-tell","is_shared":false,"parent_conversation":null,"creator":"UA8HABGKG","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Show off your goods!","creator":"UA8HABGKG","last_set":1524499762},"previous_names":[]},{"id":"CABEM8JFK","name":"emulators","is_channel":true,"is_group":false,"is_im":false,"crea
CHUNK #6: 65F
CHUNK #7: ted":1524560064,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"emulators","is_shared":false,"parent_conversation":null,"creator":"U1TJZNH1B","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Apple II Emulation","creator":"U1TJZNH1B","last_set":1524560069},"previous_names":[]},{"id":"CB52YS4UR","name":"applehistory","is_channel":true,"is_group":false,"is_im":false,"created":1528749885,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"applehistory","is_shared":false,"parent_conversation":null,"creator":"U1TK8V99Q","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[]},{"id":"CPS2TG28L","name":"appleii","is_channel":true,"is_group":false,"is_im":false,"created":1571964280,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"appleii","is_shared":false,"parent_conversation":null,"creator":"UNGDL366N","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Everything Apple II","creator":"UNGD
CHUNK #8: 4DB
CHUNK #9: L366N","last_set":1571964280},"previous_names":[]},{"id":"CPUNLH9ML","name":"fix_or_repair","is_channel":true,"is_group":false,"is_im":false,"created":1571964217,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"fix_or_repair","is_shared":false,"parent_conversation":null,"creator":"UNGDL366N","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Channel for fixing vintage Apple Computers.","creator":"UNGDL366N","last_set":1571964217},"previous_names":[]},{"id":"CQF1PHTFY","name":"joeylib","is_channel":true,"is_group":false,"is_im":false,"created":1573419513,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"joeylib","is_shared":false,"parent_conversation":null,"creator":"UCLBUA2JU","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"Cross-platform game development library and IDE. <https:\/\/joeylib.com>","creator":"UCLBUA2J
CHUNK #10: 7BA
CHUNK #11: U","last_set":1630633667},"purpose":{"value":"To Rule the World.","creator":"UCLBUA2JU","last_set":1596836336},"previous_names":[]},{"id":"C019N82J96Z","name":"prodos","is_channel":true,"is_group":false,"is_im":false,"created":1598719399,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"prodos","is_shared":false,"parent_conversation":null,"creator":"UA8FVE12T","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"ProDOS 8 use\/dev","creator":"UA8FVE12T","last_set":1598719400},"previous_names":[]},{"id":"C01J91LFSQ3","name":"romx","is_channel":true,"is_group":false,"is_im":false,"created":1610079702,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"romx","is_shared":false,"parent_conversation":null,"creator":"U01HJQK9TU3","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"ROMX rom replacement boards (<http:\/\/www.theRomExchange.com|www.theRomExchange.com>)","creator":"U01HJQK9TU3","last_set":1610079703},"previous_names":[]},{"id":"C01NHA835NF","name":"classicmac","is_channel":true,"is_group":false,"is_im":false,"created":1613625903,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"classicmac","is_shared":false,"parent_conversation":null,"creator":"U1TJZNH1B","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"For Classic (Pre-Intel) Mac Discussion","creator":"U1TJZNH1B","
CHUNK #12: 5E3
CHUNK #13: last_set":1613625904},"previous_names":[]},{"id":"C02B4PJ223X","name":"applecorn","is_channel":true,"is_group":false,"is_im":false,"created":1628990910,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"applecorn","is_shared":false,"parent_conversation":null,"creator":"UNE040UAK","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"<https:\/\/github.com\/bobbimanners\/Applecorn>","creator":"UNE040UAK","last_set":1628991004},"purpose":{"value":"Applecorn - run BBC Micro language ROMs on \/\/e Enhanced","creator":"UNE040UAK","last_set":1628990910},"previous_names":[]},{"id":"C02EAQECY5A","name":"equant-test","is_channel":true,"is_group":false,"is_im":false,"created":1631378860,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"equant-test","is_shared":false,"parent_conversation":null,"creator":"U025NNCFL3G","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"All you base are belong to us","creator":"U025NNCFL3G","last_set":1632633537},"purpose":{"value":"A test channel for developing a Slack app to run on the Apple2Idiot card.","creator":"U025NNCFL3G","last_set":1631378861},"previous_names":[]}],"response_metadata":{"next_cursor":""}}
CHUNK #14: 0
CHUNK #15:
CHUNK #16:
deserializeJson() failed with code InvalidInput

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,5 @@
{"ok":true,"channels":[{"id":"C1J89GVL4","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1466354298,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"U1J75A8PM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"Be excellent to each other. :the_horns:","creator":"U1J75A8PM","last_set":1599072909},"purpose":{"value":"This channel is for team-wide communication and announcements. All team members are in this channel.","creator":"","last_set":0},"previous_names":[]},{"id":"CA77AFDL4","name":"swapmeet","is_channel":true,"is_group":false,"is_im":false,"created":1523884293,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"swapmeet","is_shared":false,"parent_conversation":null,"creator":"U1J75A8PM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_priva
te":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Please keep sales, trades, biz talk here. Thanks!","creator":"U1J75A8PM","last_set":1523884293},"previous_names":[]},{"id":"CA79CS7V3","name":"kansasfest","is_channel":true,"is_group":false,"is_im":false,"created":1523832275,"is_archived":false,"is_general":false,"unlinked":0,"name_normal
ized":"kansasfest","is_shared":false,"parent_conversation":null,"creator":"U1J75A8PM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"KansasFest 2021 (Online only) - July 23-24, 2021 - <https:\/\/www.kansasfest.org\/>","creator":"U1TS7D80Y","last_set":1624817840},"purpose":{"value":"KansasFest 2018!!!","creator":"U1J75A8PM","last_set":1523832275},"previous_names":[]},{"id":"CA7DAGTJ8","name":"hardwarehackers","is_channel":true,"is_group":false,"is_im":false,"created":1523900178,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"hardwarehackers","is_shared":false,"parent_conversation":null,"creator":"U1J75A8PM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"Trying to plug it in? Building something? Got a question? *POW* Bring it in here!","creator":"U1TKU4H52","last_set":1567374624},"purpose":{"value":"Trying to plug it in? Building something? Got a question? *POW* Bring it in here!","creator":"U1J75A8PM","last_set":1523900179},"previous_names":[]},{"id":"CA8AT5886","name":"coding","is_channel":true,"is_group":false,"is_im":false,"created":1523883870,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"coding","is_shared":false,"parent_conversation":null,"creator":"U1J75A8PM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"U1J75A8PM","last_set":1525527970},"purpose":{"value":"Programming, code golf, experiments, questions on coding, all languages.","creator":"U1J75A8PM","last_set":1587554014},"previous_names":["democoders"]},{"id":"CA8LXU4BV","name":"raspberry-ii","is_channel":true,"is_group":false,"is_im":false,"created":1524041980,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"raspberry-ii","is_shared":false,"parent_conversation":null,"creator":"U1TMNSKMX","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Fun ways to use a Raspberry Pi with your Apple II (Raspple II, Apple 2 Pi, etc)","creator":"U1TMNSKMX","last_set":1524439726},"previous_names":[]},{"id":"CABARQ39S","name":"show-and-tell","is_channel":true,"is_group":false,"is_im":false,"created":1524499762,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"show-and-tell","is_shared":false,"parent_conversation":null,"creator":"UA8HABGKG","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Show off your goods!","creator":"UA8HABGKG","last_set":1524499762},"previous_names":[]},{"id":"CABEM8JFK","name":"emulators","is_channel":true,"is_group":false,"is_im":false,"created":1524560064,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"emulators","is_shared":false,"parent_conversation":null,"creator":"U1TJZNH1B","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Apple II Emulation","creator":"U1TJZNH1B","last_set":1524560069},"previous_names":[]},{"id":"CB52YS4UR","name":"applehistory","is_channel":true,"is_group":false,"is_im":false,"created":1528749885,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"applehistory","is_shared":false,"parent_conversation":null,"creator":"U1TK8V99Q","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[]},{"id":"CPS2TG28L","name":"appleii","is_channel":true,"is_group":false,"is_im":false,"created":1571964280,"is_archived":false,"is_general":false,"unlinked":0,
"name_normalized":"appleii","is_shared":false,"parent_conversation":null,"creator":"UNGDL366N","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Everything Apple II","creator":"UNGDL366N","last_set":1571964280},"previous_names":[]},{"id":"CPUNLH9ML","name":"fix_or_repair","is_channel":true,"is_group":false,"is_im":false,"created":1571964217,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"fix_or_repair","is_shared":false,"parent_conversation":null,"creator":"UNGDL366N","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Channel for fixing vintage Apple Computers.","creator":"UNGDL366N","last_set":1571964217},"previous_names":[]},{"id":"CQF1PHTFY","name":"joeylib","is_channel":true,"is_group":false,"is_im":false,"created":1573419513,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"joeylib","is_shared":false,"parent_conversation":null,"creator":"UCLBUA2JU","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"Cross-platform game development library and IDE. <https:\/\/joeylib.com>","creator":"UCLBUA2JU","last_set":1630633667},"purpose":{"value":"To Rule the World.","creator":"UCLBUA2JU","last_set":1596836336},"previous_names":[]},{"id":"C019N82J96Z","name":"prodos","is_channel":true,"is_group":false,"is_im":false,"created":1598719399,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"prodos","is_shared":false,"parent_conversation":null,"creator":"UA8FVE12T","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"ProDOS 8 use\/dev","creator":"UA8FVE12T","last_set":1598719400},"previous_names":[]},{"id":"C01J91LFSQ3","name":"romx","is_channel":true,"is_group":false,"is_im":false,"created":1610079702,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"romx","is_shared":false,"parent_conversation":null,"creator":"U01HJQK9TU3","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"ROMX rom replacement boards (<http:\/\/www.theRomExchange.com|www.theRomExchange.com>)","creator":"U01HJQK9TU3","last_set":1610079703},"previous_names":[]},{"id":"C01NHA835NF","name":"classicmac","is_channel":true,"is_group":false,"is_im":false,"created":1613625903,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"classicmac","is_shared":false,"parent_conversation":null,"creator":"U1TJZNH1B","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"For Classic (Pre-Intel) Mac Discussion","creator":"U1TJZNH1B","last_set":1613625904},"previous_names":[]},{"id":"C02B4PJ223X","name":"applecorn","is_channel":true,"is_group":false,"is_im":false,"created":1628990910,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"applecorn","is_shared":false,"parent_conversation":null,"creator":"UNE040UAK","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"<https:\/\/github.com\/bobbimanners\/Applecorn>","creator":"UNE040UAK","last_set":1628991004},"purpose":{"value":"Applecorn - run BBC Micro language ROMs on \/\/e Enhanced","creator":"UNE040UAK","last_set":1628990910},"previous_names":[]},{"id":"C02EAQECY5A","name":"equant-test","is_channel":true,"is_group":false,"is_im":false,"created":1631378860,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"equant-test","is_shared":false,"parent_conversation":null,"creator":"U025NNCFL3G","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"All you base are belon
g to us","creator":"U025NNCFL3G","last_set":1632633537},"purpose":{"value":"A test channel for developing a Slack app to run on the Apple2Idiot card.","creator":"U025NNCFL3G","last_set":1631378861},"previous_names":[]}],"response_metadata":{"next_cursor":""}}

View File

@ -0,0 +1,34 @@
CHUNK #1: {"ok":true,"channels":[{"id":"C1J89GVL4","name":"general","is_channel":true,"is_group":false,"is_im":false,"created":1466354298,"is_archived":false,"is_general":true,"unlinked":0,"name_normalized":"general","is_shared":false,"parent_conversation":null,"creator":"U1J75A8PM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"Be excellent to each other. :the_horns:","creator":"U1J75A8PM","last_set":1599072909},"purpose":{"value":"This channel is for team-wide communication and announcements. All team members are in this channel.","creator":"","last_set":0},"previous_names":[]},{"id":"CA77AFDL4","name":"swapmeet","is_channel":true,"is_group":false,"is_im":false,"created":1523884293,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"swapmeet","is_shared":false,"parent_conversation":null,"creator":"U1J75A8PM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_priva
CHUNK #2: 17F
CHUNK #3: te":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Please keep sales, trades, biz talk here. Thanks!","creator":"U1J75A8PM","last_set":1523884293},"previous_names":[]},{"id":"CA79CS7V3","name":"kansasfest","is_channel":true,"is_group":false,"is_im":false,"created":1523832275,"is_archived":false,"is_general":false,"unlinked":0,"name_normal
CHUNK #4: 11F9
CHUNK #5: ized":"kansasfest","is_shared":false,"parent_conversation":null,"creator":"U1J75A8PM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"KansasFest 2021 (Online only) - July 23-24, 2021 - <https:\/\/www.kansasfest.org\/>","creator":"U1TS7D80Y","last_set":1624817840},"purpose":{"value":"KansasFest 2018!!!","creator":"U1J75A8PM","last_set":1523832275},"previous_names":[]},{"id":"CA7DAGTJ8","name":"hardwarehackers","is_channel":true,"is_group":false,"is_im":false,"created":1523900178,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"hardwarehackers","is_shared":false,"parent_conversation":null,"creator":"U1J75A8PM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"Trying to plug it in? Building something? Got a question? *POW* Bring it in here!","creator":"U1TKU4H52","last_set":1567374624},"purpose":{"value":"Trying to plug it in? Building something? Got a question? *POW* Bring it in here!","creator":"U1J75A8PM","last_set":1523900179},"previous_names":[]},{"id":"CA8AT5886","name":"coding","is_channel":true,"is_group":false,"is_im":false,"created":1523883870,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"coding","is_shared":false,"parent_conversation":null,"creator":"U1J75A8PM","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"U1J75A8PM","last_set":1525527970},"purpose":{"value":"Programming, code golf, experiments, questions on coding, all languages.","creator":"U1J75A8PM","last_set":1587554014},"previous_names":["democoders"]},{"id":"CA8LXU4BV","name":"raspberry-ii","is_channel":true,"is_group":false,"is_im":false,"created":1524041980,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"raspberry-ii","is_shared":false,"parent_conversation":null,"creator":"U1TMNSKMX","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Fun ways to use a Raspberry Pi with your Apple II (Raspple II, Apple 2 Pi, etc)","creator":"U1TMNSKMX","last_set":1524439726},"previous_names":[]},{"id":"CABARQ39S","name":"show-and-tell","is_channel":true,"is_group":false,"is_im":false,"created":1524499762,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"show-and-tell","is_shared":false,"parent_conversation":null,"creator":"UA8HABGKG","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Show off your goods!","creator":"UA8HABGKG","last_set":1524499762},"previous_names":[]},{"id":"CABEM8JFK","name":"emulators","is_channel":true,"is_group":false,"is_im":false,"created":1524560064,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"emulators","is_shared":false,"parent_conversation":null,"creator":"U1TJZNH1B","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Apple II Emulation","creator":"U1TJZNH1B","last_set":1524560069},"previous_names":[]},{"id":"CB52YS4UR","name":"applehistory","is_channel":true,"is_group":false,"is_im":false,"created":1528749885,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"applehistory","is_shared":false,"parent_conversation":null,"creator":"U1TK8V99Q","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"","creator":"","last_set":0},"previous_names":[]},{"id":"CPS2TG28L","name":"appleii","is_channel":true,"is_group":false,"is_im":false,"created":1571964280,"is_archived":false,"is_general":false,"unlinked":0,
CHUNK #6: 12FC
CHUNK #7: "name_normalized":"appleii","is_shared":false,"parent_conversation":null,"creator":"UNGDL366N","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Everything Apple II","creator":"UNGDL366N","last_set":1571964280},"previous_names":[]},{"id":"CPUNLH9ML","name":"fix_or_repair","is_channel":true,"is_group":false,"is_im":false,"created":1571964217,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"fix_or_repair","is_shared":false,"parent_conversation":null,"creator":"UNGDL366N","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"Channel for fixing vintage Apple Computers.","creator":"UNGDL366N","last_set":1571964217},"previous_names":[]},{"id":"CQF1PHTFY","name":"joeylib","is_channel":true,"is_group":false,"is_im":false,"created":1573419513,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"joeylib","is_shared":false,"parent_conversation":null,"creator":"UCLBUA2JU","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"Cross-platform game development library and IDE. <https:\/\/joeylib.com>","creator":"UCLBUA2JU","last_set":1630633667},"purpose":{"value":"To Rule the World.","creator":"UCLBUA2JU","last_set":1596836336},"previous_names":[]},{"id":"C019N82J96Z","name":"prodos","is_channel":true,"is_group":false,"is_im":false,"created":1598719399,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"prodos","is_shared":false,"parent_conversation":null,"creator":"UA8FVE12T","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"ProDOS 8 use\/dev","creator":"UA8FVE12T","last_set":1598719400},"previous_names":[]},{"id":"C01J91LFSQ3","name":"romx","is_channel":true,"is_group":false,"is_im":false,"created":1610079702,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"romx","is_shared":false,"parent_conversation":null,"creator":"U01HJQK9TU3","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"ROMX rom replacement boards (<http:\/\/www.theRomExchange.com|www.theRomExchange.com>)","creator":"U01HJQK9TU3","last_set":1610079703},"previous_names":[]},{"id":"C01NHA835NF","name":"classicmac","is_channel":true,"is_group":false,"is_im":false,"created":1613625903,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"classicmac","is_shared":false,"parent_conversation":null,"creator":"U1TJZNH1B","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"","creator":"","last_set":0},"purpose":{"value":"For Classic (Pre-Intel) Mac Discussion","creator":"U1TJZNH1B","last_set":1613625904},"previous_names":[]},{"id":"C02B4PJ223X","name":"applecorn","is_channel":true,"is_group":false,"is_im":false,"created":1628990910,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"applecorn","is_shared":false,"parent_conversation":null,"creator":"UNE040UAK","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"<https:\/\/github.com\/bobbimanners\/Applecorn>","creator":"UNE040UAK","last_set":1628991004},"purpose":{"value":"Applecorn - run BBC Micro language ROMs on \/\/e Enhanced","creator":"UNE040UAK","last_set":1628990910},"previous_names":[]},{"id":"C02EAQECY5A","name":"equant-test","is_channel":true,"is_group":false,"is_im":false,"created":1631378860,"is_archived":false,"is_general":false,"unlinked":0,"name_normalized":"equant-test","is_shared":false,"parent_conversation":null,"creator":"U025NNCFL3G","is_ext_shared":false,"is_org_shared":false,"shared_team_ids":["T1J8S1LGH"],"pending_shared":[],"pending_connected_team_ids":[],"is_pending_ext_shared":false,"is_private":false,"is_mpim":false,"topic":{"value":"All you base are belon
CHUNK #8: 103
CHUNK #9: g to us","creator":"U025NNCFL3G","last_set":1632633537},"purpose":{"value":"A test channel for developing a Slack app to run on the Apple2Idiot card.","creator":"U025NNCFL3G","last_set":1631378861},"previous_names":[]}],"response_metadata":{"next_cursor":""}}
CHUNK #10: 0
CHUNK #11:
CHUNK #12:

View File

@ -0,0 +1,622 @@
{
"ok": true,
"channels": [
{
"id": "C1J89GVL4",
"name": "general",
"is_channel": true,
"is_group": false,
"is_im": false,
"created": 1466354298,
"is_archived": false,
"is_general": true,
"unlinked": 0,
"name_normalized": "general",
"is_shared": false,
"parent_conversation": null,
"creator": "U1J75A8PM",
"is_ext_shared": false,
"is_org_shared": false,
"shared_team_ids": [
"T1J8S1LGH"
],
"pending_shared": [],
"pending_connected_team_ids": [],
"is_pending_ext_shared": false,
"is_private": false,
"is_mpim": false,
"topic": {
"value": "Be excellent to each other. :the_horns:",
"creator": "U1J75A8PM",
"last_set": 1599072909
},
"purpose": {
"value": "This channel is for team-wide communication and announcements. All team members are in this channel.",
"creator": "",
"last_set": 0
},
"previous_names": []
},
{
"id": "CA77AFDL4",
"name": "swapmeet",
"is_channel": true,
"is_group": false,
"is_im": false,
"created": 1523884293,
"is_archived": false,
"is_general": false,
"unlinked": 0,
"name_normalized": "swapmeet",
"is_shared": false,
"parent_conversation": null,
"creator": "U1J75A8PM",
"is_ext_shared": false,
"is_org_shared": false,
"shared_team_ids": [
"T1J8S1LGH"
],
"pending_shared": [],
"pending_connected_team_ids": [],
"is_pending_ext_shared": false,
"is_private": false,
"is_mpim": false,
"topic": {
"value": "",
"creator": "",
"last_set": 0
},
"purpose": {
"value": "Please keep sales, trades, biz talk here. Thanks!",
"creator": "U1J75A8PM",
"last_set": 1523884293
},
"previous_names": []
},
{
"id": "CA79CS7V3",
"name": "kansasfest",
"is_channel": true,
"is_group": false,
"is_im": false,
"created": 1523832275,
"is_archived": false,
"is_general": false,
"unlinked": 0,
"name_normalized": "kansasfest",
"is_shared": false,
"parent_conversation": null,
"creator": "U1J75A8PM",
"is_ext_shared": false,
"is_org_shared": false,
"shared_team_ids": [
"T1J8S1LGH"
],
"pending_shared": [],
"pending_connected_team_ids": [],
"is_pending_ext_shared": false,
"is_private": false,
"is_mpim": false,
"topic": {
"value": "KansasFest 2021 (Online only) - July 23-24, 2021 - <https://www.kansasfest.org/>",
"creator": "U1TS7D80Y",
"last_set": 1624817840
},
"purpose": {
"value": "KansasFest 2018!!!",
"creator": "U1J75A8PM",
"last_set": 1523832275
},
"previous_names": []
},
{
"id": "CA7DAGTJ8",
"name": "hardwarehackers",
"is_channel": true,
"is_group": false,
"is_im": false,
"created": 1523900178,
"is_archived": false,
"is_general": false,
"unlinked": 0,
"name_normalized": "hardwarehackers",
"is_shared": false,
"parent_conversation": null,
"creator": "U1J75A8PM",
"is_ext_shared": false,
"is_org_shared": false,
"shared_team_ids": [
"T1J8S1LGH"
],
"pending_shared": [],
"pending_connected_team_ids": [],
"is_pending_ext_shared": false,
"is_private": false,
"is_mpim": false,
"topic": {
"value": "Trying to plug it in? Building something? Got a question? *POW* Bring it in here!",
"creator": "U1TKU4H52",
"last_set": 1567374624
},
"purpose": {
"value": "Trying to plug it in? Building something? Got a question? *POW* Bring it in here!",
"creator": "U1J75A8PM",
"last_set": 1523900179
},
"previous_names": []
},
{
"id": "CA8AT5886",
"name": "coding",
"is_channel": true,
"is_group": false,
"is_im": false,
"created": 1523883870,
"is_archived": false,
"is_general": false,
"unlinked": 0,
"name_normalized": "coding",
"is_shared": false,
"parent_conversation": null,
"creator": "U1J75A8PM",
"is_ext_shared": false,
"is_org_shared": false,
"shared_team_ids": [
"T1J8S1LGH"
],
"pending_shared": [],
"pending_connected_team_ids": [],
"is_pending_ext_shared": false,
"is_private": false,
"is_mpim": false,
"topic": {
"value": "",
"creator": "U1J75A8PM",
"last_set": 1525527970
},
"purpose": {
"value": "Programming, code golf, experiments, questions on coding, all languages.",
"creator": "U1J75A8PM",
"last_set": 1587554014
},
"previous_names": [
"democoders"
]
},
{
"id": "CA8LXU4BV",
"name": "raspberry-ii",
"is_channel": true,
"is_group": false,
"is_im": false,
"created": 1524041980,
"is_archived": false,
"is_general": false,
"unlinked": 0,
"name_normalized": "raspberry-ii",
"is_shared": false,
"parent_conversation": null,
"creator": "U1TMNSKMX",
"is_ext_shared": false,
"is_org_shared": false,
"shared_team_ids": [
"T1J8S1LGH"
],
"pending_shared": [],
"pending_connected_team_ids": [],
"is_pending_ext_shared": false,
"is_private": false,
"is_mpim": false,
"topic": {
"value": "",
"creator": "",
"last_set": 0
},
"purpose": {
"value": "Fun ways to use a Raspberry Pi with your Apple II (Raspple II, Apple 2 Pi, etc)",
"creator": "U1TMNSKMX",
"last_set": 1524439726
},
"previous_names": []
},
{
"id": "CABARQ39S",
"name": "show-and-tell",
"is_channel": true,
"is_group": false,
"is_im": false,
"created": 1524499762,
"is_archived": false,
"is_general": false,
"unlinked": 0,
"name_normalized": "show-and-tell",
"is_shared": false,
"parent_conversation": null,
"creator": "UA8HABGKG",
"is_ext_shared": false,
"is_org_shared": false,
"shared_team_ids": [
"T1J8S1LGH"
],
"pending_shared": [],
"pending_connected_team_ids": [],
"is_pending_ext_shared": false,
"is_private": false,
"is_mpim": false,
"topic": {
"value": "",
"creator": "",
"last_set": 0
},
"purpose": {
"value": "Show off your goods!",
"creator": "UA8HABGKG",
"last_set": 1524499762
},
"previous_names": []
},
{
"id": "CABEM8JFK",
"name": "emulators",
"is_channel": true,
"is_group": false,
"is_im": false,
"created": 1524560064,
"is_archived": false,
"is_general": false,
"unlinked": 0,
"name_normalized": "emulators",
"is_shared": false,
"parent_conversation": null,
"creator": "U1TJZNH1B",
"is_ext_shared": false,
"is_org_shared": false,
"shared_team_ids": [
"T1J8S1LGH"
],
"pending_shared": [],
"pending_connected_team_ids": [],
"is_pending_ext_shared": false,
"is_private": false,
"is_mpim": false,
"topic": {
"value": "",
"creator": "",
"last_set": 0
},
"purpose": {
"value": "Apple II Emulation",
"creator": "U1TJZNH1B",
"last_set": 1524560069
},
"previous_names": []
},
{
"id": "CB52YS4UR",
"name": "applehistory",
"is_channel": true,
"is_group": false,
"is_im": false,
"created": 1528749885,
"is_archived": false,
"is_general": false,
"unlinked": 0,
"name_normalized": "applehistory",
"is_shared": false,
"parent_conversation": null,
"creator": "U1TK8V99Q",
"is_ext_shared": false,
"is_org_shared": false,
"shared_team_ids": [
"T1J8S1LGH"
],
"pending_shared": [],
"pending_connected_team_ids": [],
"is_pending_ext_shared": false,
"is_private": false,
"is_mpim": false,
"topic": {
"value": "",
"creator": "",
"last_set": 0
},
"purpose": {
"value": "",
"creator": "",
"last_set": 0
},
"previous_names": []
},
{
"id": "CPS2TG28L",
"name": "appleii",
"is_channel": true,
"is_group": false,
"is_im": false,
"created": 1571964280,
"is_archived": false,
"is_general": false,
"unlinked": 0,
"name_normalized": "appleii",
"is_shared": false,
"parent_conversation": null,
"creator": "UNGDL366N",
"is_ext_shared": false,
"is_org_shared": false,
"shared_team_ids": [
"T1J8S1LGH"
],
"pending_shared": [],
"pending_connected_team_ids": [],
"is_pending_ext_shared": false,
"is_private": false,
"is_mpim": false,
"topic": {
"value": "",
"creator": "",
"last_set": 0
},
"purpose": {
"value": "Everything Apple II",
"creator": "UNGDL366N",
"last_set": 1571964280
},
"previous_names": []
},
{
"id": "CPUNLH9ML",
"name": "fix_or_repair",
"is_channel": true,
"is_group": false,
"is_im": false,
"created": 1571964217,
"is_archived": false,
"is_general": false,
"unlinked": 0,
"name_normalized": "fix_or_repair",
"is_shared": false,
"parent_conversation": null,
"creator": "UNGDL366N",
"is_ext_shared": false,
"is_org_shared": false,
"shared_team_ids": [
"T1J8S1LGH"
],
"pending_shared": [],
"pending_connected_team_ids": [],
"is_pending_ext_shared": false,
"is_private": false,
"is_mpim": false,
"topic": {
"value": "",
"creator": "",
"last_set": 0
},
"purpose": {
"value": "Channel for fixing vintage Apple Computers.",
"creator": "UNGDL366N",
"last_set": 1571964217
},
"previous_names": []
},
{
"id": "CQF1PHTFY",
"name": "joeylib",
"is_channel": true,
"is_group": false,
"is_im": false,
"created": 1573419513,
"is_archived": false,
"is_general": false,
"unlinked": 0,
"name_normalized": "joeylib",
"is_shared": false,
"parent_conversation": null,
"creator": "UCLBUA2JU",
"is_ext_shared": false,
"is_org_shared": false,
"shared_team_ids": [
"T1J8S1LGH"
],
"pending_shared": [],
"pending_connected_team_ids": [],
"is_pending_ext_shared": false,
"is_private": false,
"is_mpim": false,
"topic": {
"value": "Cross-platform game development library and IDE. <https://joeylib.com>",
"creator": "UCLBUA2JU",
"last_set": 1630633667
},
"purpose": {
"value": "To Rule the World.",
"creator": "UCLBUA2JU",
"last_set": 1596836336
},
"previous_names": []
},
{
"id": "C019N82J96Z",
"name": "prodos",
"is_channel": true,
"is_group": false,
"is_im": false,
"created": 1598719399,
"is_archived": false,
"is_general": false,
"unlinked": 0,
"name_normalized": "prodos",
"is_shared": false,
"parent_conversation": null,
"creator": "UA8FVE12T",
"is_ext_shared": false,
"is_org_shared": false,
"shared_team_ids": [
"T1J8S1LGH"
],
"pending_shared": [],
"pending_connected_team_ids": [],
"is_pending_ext_shared": false,
"is_private": false,
"is_mpim": false,
"topic": {
"value": "",
"creator": "",
"last_set": 0
},
"purpose": {
"value": "ProDOS 8 use/dev",
"creator": "UA8FVE12T",
"last_set": 1598719400
},
"previous_names": []
},
{
"id": "C01J91LFSQ3",
"name": "romx",
"is_channel": true,
"is_group": false,
"is_im": false,
"created": 1610079702,
"is_archived": false,
"is_general": false,
"unlinked": 0,
"name_normalized": "romx",
"is_shared": false,
"parent_conversation": null,
"creator": "U01HJQK9TU3",
"is_ext_shared": false,
"is_org_shared": false,
"shared_team_ids": [
"T1J8S1LGH"
],
"pending_shared": [],
"pending_connected_team_ids": [],
"is_pending_ext_shared": false,
"is_private": false,
"is_mpim": false,
"topic": {
"value": "",
"creator": "",
"last_set": 0
},
"purpose": {
"value": "ROMX rom replacement boards (<http://www.theRomExchange.com|www.theRomExchange.com>)",
"creator": "U01HJQK9TU3",
"last_set": 1610079703
},
"previous_names": []
},
{
"id": "C01NHA835NF",
"name": "classicmac",
"is_channel": true,
"is_group": false,
"is_im": false,
"created": 1613625903,
"is_archived": false,
"is_general": false,
"unlinked": 0,
"name_normalized": "classicmac",
"is_shared": false,
"parent_conversation": null,
"creator": "U1TJZNH1B",
"is_ext_shared": false,
"is_org_shared": false,
"shared_team_ids": [
"T1J8S1LGH"
],
"pending_shared": [],
"pending_connected_team_ids": [],
"is_pending_ext_shared": false,
"is_private": false,
"is_mpim": false,
"topic": {
"value": "",
"creator": "",
"last_set": 0
},
"purpose": {
"value": "For Classic (Pre-Intel) Mac Discussion",
"creator": "U1TJZNH1B",
"last_set": 1613625904
},
"previous_names": []
},
{
"id": "C02B4PJ223X",
"name": "applecorn",
"is_channel": true,
"is_group": false,
"is_im": false,
"created": 1628990910,
"is_archived": false,
"is_general": false,
"unlinked": 0,
"name_normalized": "applecorn",
"is_shared": false,
"parent_conversation": null,
"creator": "UNE040UAK",
"is_ext_shared": false,
"is_org_shared": false,
"shared_team_ids": [
"T1J8S1LGH"
],
"pending_shared": [],
"pending_connected_team_ids": [],
"is_pending_ext_shared": false,
"is_private": false,
"is_mpim": false,
"topic": {
"value": "<https://github.com/bobbimanners/Applecorn>",
"creator": "UNE040UAK",
"last_set": 1628991004
},
"purpose": {
"value": "Applecorn - run BBC Micro language ROMs on //e Enhanced",
"creator": "UNE040UAK",
"last_set": 1628990910
},
"previous_names": []
},
{
"id": "C02EAQECY5A",
"name": "equant-test",
"is_channel": true,
"is_group": false,
"is_im": false,
"created": 1631378860,
"is_archived": false,
"is_general": false,
"unlinked": 0,
"name_normalized": "equant-test",
"is_shared": false,
"parent_conversation": null,
"creator": "U025NNCFL3G",
"is_ext_shared": false,
"is_org_shared": false,
"shared_team_ids": [
"T1J8S1LGH"
],
"pending_shared": [],
"pending_connected_team_ids": [],
"is_pending_ext_shared": false,
"is_private": false,
"is_mpim": false,
"topic": {
"value": "",
"creator": "",
"last_set": 0
},
"purpose": {
"value": "A test channel for developing a Slack app to run on the Apple2Idiot card.",
"creator": "U025NNCFL3G",
"last_set": 1631378861
},
"previous_names": []
}
],
"response_metadata": {
"next_cursor": ""
}
}

View File

@ -0,0 +1,44 @@
{
"ok": true,
"channels": [
{
"id": "C1J89GVL4",
"name": "general",
"is_channel": true,
"is_group": false,
"is_im": false,
"created": 1466354298,
"is_archived": false,
"is_general": true,
"unlinked": 0,
"name_normalized": "general",
"is_shared": false,
"parent_conversation": null,
"creator": "U1J75A8PM",
"is_ext_shared": false,
"is_org_shared": false,
"shared_team_ids": [
"T1J8S1LGH"
],
"pending_shared": [],
"pending_connected_team_ids": [],
"is_pending_ext_shared": false,
"is_private": false,
"is_mpim": false,
"topic": {
"value": "Be excellent to each other. :the_horns:",
"creator": "U1J75A8PM",
"last_set": 1599072909
},
"purpose": {
"value": "This channel is for team-wide communication and announcements. All team members are in this channel.",
"creator": "",
"last_set": 0
},
"previous_names": []
}
],
"response_metadata": {
"next_cursor": "dGVhbTpDQTc3QUZETDQ="
}
}

View File

@ -19,10 +19,6 @@ Apple2Idiot a2i = Apple2Idiot();
WiFiClientSecure client;
ArduinoSlack slack(client, SLACK_ACCESS_TOKEN);
#define COMMAND_SET_CHANNEL 200
#define COMMAND_SEND_MESSAGE 201
#define COMMAND_GET_CHANNEL_MESSAGES 202
char wifi_ssid[] = WIFI_SSID; // your network SSID (name)
char wifi_password[] = WIFI_PASSWORD; // your network password
@ -32,11 +28,109 @@ char wifi_password[] = WIFI_PASSWORD; // your network password
SlackUsersConversations conversation;
//const long readLoopInterval = 100; // millis
const long readLoopInterval = 44000; // millis
const long readLoopInterval = 11000; // millis
unsigned long lastReadLoopTime = 0;
byte lastAppleCommand = 0;
//String channel_name = "equant-test";
//C02EAQECY5A
const char current_channel_name = 'equant-test';
const char current_channel_id = 'C02EAQECY5A';
String current_channel_str = "";
String message = "";
int current_channel_n = -1;
/*################################################
# Functions #
################################################*/
int find_channel_number(String channel_str_from_apple) {
Serial.println("find_channel_number()");
for (int i=0; i< conversation.n_channels; i++) {
if (channel_str_from_apple == String(conversation.channelNames[i])) {
Serial.print(" Found:"); Serial.println(conversation.channelNames[i]);
return i;
}
if (channel_str_from_apple == String(conversation.channelIds[i])) {
Serial.print(" Found:"); Serial.println(conversation.channelIds[i]);
return i;
}
}
Serial.println(" No channel found:");
return -1;
}
void get_slack_channels() {
Serial.println("get_slack_channels()");
int slack_attempts=1;
do {
yield();
conversation = slack.usersConversations();
} while (conversation.error && ++slack_attempts < 5);
if (slack_attempts == 5) {
Serial.println(" ERROR: Unable to negotiate usersConversations with Slack API");
} else {
Serial.println("+-+-+-+- CHANNELS -+-+-+-+-+-+-+-+:");
for (int i=0; i< conversation.n_channels; i++) {
Serial.print(conversation.channelNames[i]);
Serial.print(" -> ");
Serial.println(conversation.channelIds[i]);
}
}
}
SlackMessages channelMessages;
void get_channel_messages() {
Serial.println();
Serial.print("get_channel_messages() for channel: ");
Serial.println(current_channel_id);
int slack_attempts=1;
int error=1;
do {
yield();
error = slack.channelHistory(current_channel_id, &channelMessages);
} while (channelMessages.error && ++slack_attempts < 5);
if (slack_attempts == 5) {
Serial.println("ERROR: Unable to negotiate usersConversations with Slack API");
}
}
void send_channel_info(int channel_n) {
Serial.println("send_channel_info()");
int ac = 0;
ac = a2i.write_data(SHARED_RAM_START_ADDRESS, current_channel_n);
ac = a2i.write_string_to_shared_ram(String(conversation.channelNames[current_channel_n]), ac + 1);
ac = a2i.write_string_to_shared_ram(String(conversation.purpose[current_channel_n]), ac + 1);
ac = a2i.write_string_to_shared_ram(String(conversation.topic[current_channel_n]), ac + 1);
a2i.write_data(ESP_COMMAND_ADDRESS, EOT);
}
void send_message_to_channel(String message) {
Serial.println("send_message_to_channel()");
Serial.print(" current_channel_n: "); Serial.println(current_channel_n);
SlackMessage slackMessage;
char m[250];
message.toCharArray(m, 250);
//char c[250];
//channel_name.toCharArray(c, 250);
slackMessage = slack.postMessage(conversation.channelIds[current_channel_n], m);
Serial.print(" current_channel_n: "); Serial.println(current_channel_n);
Serial.print(" message sent to channel: "); Serial.println(conversation.channelIds[current_channel_n]);
find_channel_number("equant-test");
}
/*################################################
# Setup #
################################################*/
@ -63,49 +157,36 @@ void setup() {
Serial.println(WiFi.localIP()); //Show ESP32 IP on serial
client.setCACert(slack_server_cert);
//Serial.println(conversation);
//get_slack_channels();
//current_channel_n = find_channel_number("equant-test");
//yield();
int slack_attempts=1;
do {
yield();
conversation = slack.usersConversations();
} while (conversation.error && ++slack_attempts < 5);
//Serial.println("");
//send_message_to_channel("Insufficient facts always invite danger.");
yield();
Serial.println("+-+-+-+- CHANNELS -+-+-+-+-+-+-+-+:");
//for (int i=0; i< sizeof(conversation.channelNames)-5; i++) {
//for (int i=0; i<5; i++) {
//Serial.print(conversation.channelNames[i]);
//Serial.print(" -> ");
//Serial.println(conversation.channelIds[i]);
//}
yield();
Serial.println(conversation.channelNames[0]);
Serial.println(conversation.channelNames[1]);
Serial.println(conversation.channelNames[2]);
Serial.println(conversation.channelNames[-1]);
//slack.channelHistory(conversation.channelIds[current_channel_n]);
get_channel_messages();
Serial.println("Setup done");
}
/*################################################
# Functions #
################################################*/
/*################################################
# Main #
################################################*/
//String channel_name = "equant-test";
String channel_name = "C02EAQECY5A";
String message = "";
void showthing(char *thing) {
Serial.println(thing);
for (int j=0; j<strlen(thing)+2; j++) {
Serial.print("["); Serial.print(thing[j]); Serial.print("]");
}
Serial.println();
}
void loop() {
if ((millis() - lastReadLoopTime) > readLoopInterval) {
byte command_byte = a2i.read_data(APPLE_COMMAND_ADDRESS);
if (command_byte == RAM_BUSY) {
Serial.println("Command Read: RAM BUSY");
@ -115,36 +196,60 @@ void loop() {
Serial.print("Command Switch command_byte: ");
Serial.println(command_byte);
switch(command_byte) {
case COMMAND_GET_CHANNEL_MESSAGES:
case COMMAND_GET_MESSAGES:
Serial.println("COMMAND_GET_CHANNEL_MESSAGES");
a2i.write_data(ESP_COMMAND_ADDRESS, ACK); // notify Apple IIe we are processing command byte
char cc[250];
channel_name.toCharArray(cc, 250);
conversation = slack.usersConversations();
//char cc[250];
//channel_name.toCharArray(cc, 250);
//conversation.channelIds[current_channel_n];
//conversation = slack.usersConversations();
//serializeJsonPretty(conversation.messageObj, Serial);
a2i.write_data(APPLE_COMMAND_ADDRESS, ACK);
a2i.write_data(ESP_COMMAND_ADDRESS, EOT); // notify Apple IIe we are done processing command byte
break;
case COMMAND_SET_CHANNEL:
Serial.println("COMMAND_SET_CHANNEL");
a2i.write_data(ESP_COMMAND_ADDRESS, ACK); // notify Apple IIe we are processing command byte
channel_name = a2i.read_string_from_ram(SHARED_RAM_START_ADDRESS);
Serial.println("Received: ["+channel_name+"]");
current_channel_str = a2i.read_string_from_ram(SHARED_RAM_START_ADDRESS);
current_channel_n = find_channel_number(current_channel_str);
if (current_channel_n < 0) {
a2i.write_data(ESP_COMMAND_ADDRESS, NOT_FOUND);
Serial.println(" Couldn't find requested channel.");
} else {
Serial.println(" Set channel to: ["+current_channel_str+"]");
send_channel_info(current_channel_n);
a2i.write_data(ESP_COMMAND_ADDRESS, EOT);
}
a2i.write_data(APPLE_COMMAND_ADDRESS, ACK);
a2i.write_data(ESP_COMMAND_ADDRESS, EOT); // notify Apple IIe we are done processing command byte
break;
case COMMAND_GET_CHANNEL_N:
Serial.println("COMMAND_GET_CHANNEL_N");
a2i.write_data(ESP_COMMAND_ADDRESS, ACK);
int requested_n;
requested_n = a2i.read_data(SHARED_RAM_START_ADDRESS);
send_channel_info(requested_n);
a2i.write_data(APPLE_COMMAND_ADDRESS, ACK);
a2i.write_data(ESP_COMMAND_ADDRESS, EOT);
break;
case COMMAND_GET_CHANNEL_STR:
Serial.println("COMMAND_GET_CHANNEL_STR");
//a2i.write_data(ESP_COMMAND_ADDRESS, ACK);
//send_channel_info(current_channel_n);
//a2i.write_data(APPLE_COMMAND_ADDRESS, ACK);
//a2i.write_data(ESP_COMMAND_ADDRESS, EOT);
break;
case COMMAND_SEND_MESSAGE:
Serial.println("COMMAND_SEND_MESSAGE:");
SlackMessage slackMessage;
a2i.write_data(ESP_COMMAND_ADDRESS, ACK); // notify Apple IIe we are processing command byte
message = a2i.read_string_from_ram(SHARED_RAM_START_ADDRESS);
char m[250];
message.toCharArray(m, 250);
char c[250];
channel_name.toCharArray(c, 250);
slackMessage = slack.postMessage(c, m);
send_message_to_channel(message);
a2i.write_data(APPLE_COMMAND_ADDRESS, ACK);
a2i.write_data(ESP_COMMAND_ADDRESS, result); // notify Apple IIe we are done processing command byte
a2i.write_data(ESP_COMMAND_ADDRESS, EOT); // notify Apple IIe we are done processing command byte
break;
}
lastAppleCommand = command_byte;

83
examples/slack/tags Normal file
View File

@ -0,0 +1,83 @@
!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/
!_TAG_PROGRAM_NAME Exuberant Ctags //
!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/
!_TAG_PROGRAM_VERSION 5.9~svn20110310 //
ArduinoSlack ArduinoSlack.cpp /^ArduinoSlack::ArduinoSlack(Client &client, const char *bearerToken)$/;" f class:ArduinoSlack
ArduinoSlack ArduinoSlack.h /^class ArduinoSlack$/;" c
ArduinoSlack_h ArduinoSlack.h 10;" d
CREDENTIALS_H credentials.h 2;" d
NUM_USERS_TO_SUPPORT ArduinoSlack.h 60;" d
SLACK_ACCESS_TOKEN credentials.h 6;" d
SLACK_CONVERSATIONS_HISTORY_ENDPOINT ArduinoSlack.h 48;" d
SLACK_DEBUG_SERIAL ArduinoSlack.h 30;" d
SLACK_DEBUG_SERIAL ArduinoSlack.h 33;" d
SLACK_DEBUG_SERIAL_LN ArduinoSlack.h 31;" d
SLACK_DEBUG_SERIAL_LN ArduinoSlack.h 34;" d
SLACK_ENABLE_DEBUG ArduinoSlack.h 19;" d
SLACK_ENABLE_SERIAL ArduinoSlack.h 16;" d
SLACK_FINGERPRINT ArduinoSlack.h 39;" d
SLACK_HOST ArduinoSlack.h 37;" d
SLACK_POST_MESSAGE_ENDPOINT ArduinoSlack.h 47;" d
SLACK_PRESENCE_AUTO ArduinoSlack.h 43;" d
SLACK_PRESENCE_AWAY ArduinoSlack.h 42;" d
SLACK_SERIAL ArduinoSlack.h 22;" d
SLACK_SERIAL ArduinoSlack.h 25;" d
SLACK_SERIAL_LN ArduinoSlack.h 23;" d
SLACK_SERIAL_LN ArduinoSlack.h 26;" d
SLACK_TIMEOUT ArduinoSlack.h 40;" d
SLACK_USERS_CONVERSATIONS_ENDPOINT ArduinoSlack.h 49;" d
SLACK_USERS_PROFILE_SET_ENDPOINT ArduinoSlack.h 45;" d
SLACK_USERS_SET_PRESENCE_ENDPOINT ArduinoSlack.h 46;" d
SlackMessage ArduinoSlack.h /^struct SlackMessage$/;" s
SlackMessages ArduinoSlack.h /^struct SlackMessages {$/;" s
SlackProfile ArduinoSlack.h /^struct SlackProfile$/;" s
SlackUsers ArduinoSlack.h /^struct SlackUsers$/;" s
SlackUsersConversations ArduinoSlack.h /^struct SlackUsersConversations {$/;" s
WIFI_PASSWORD credentials.h 5;" d
WIFI_SSID credentials.h 4;" d
_bearerToken ArduinoSlack.h /^ const char *_bearerToken;$/;" m class:ArduinoSlack
channelHistory ArduinoSlack.cpp /^SlackMessages ArduinoSlack::channelHistory(char *channelId) {$/;" f class:ArduinoSlack
channelIds ArduinoSlack.h /^ char *channelIds[22];$/;" m struct:SlackUsersConversations
channelNames ArduinoSlack.h /^ char *channelNames[22];$/;" m struct:SlackUsersConversations
channelsObj ArduinoSlack.h /^ JsonObject channelsObj;$/;" m struct:SlackUsersConversations
client ArduinoSlack.h /^ Client *client;$/;" m class:ArduinoSlack
closeClient ArduinoSlack.cpp /^void ArduinoSlack::closeClient()$/;" f class:ArduinoSlack
displayName ArduinoSlack.h /^ char *displayName;$/;" m struct:SlackProfile
error ArduinoSlack.h /^ bool error;$/;" m struct:SlackMessages
error ArduinoSlack.h /^ bool error;$/;" m struct:SlackMessage
error ArduinoSlack.h /^ bool error;$/;" m struct:SlackProfile
error ArduinoSlack.h /^ bool error;$/;" m struct:SlackUsersConversations
getConvHistEndpointArgs ArduinoSlack.h /^ const char *getConvHistEndpointArgs =$/;" m class:ArduinoSlack
getHttpStatusCode ArduinoSlack.cpp /^int ArduinoSlack::getHttpStatusCode()$/;" f class:ArduinoSlack
id ArduinoSlack.h /^ char *id[NUM_USERS_TO_SUPPORT];$/;" m struct:SlackUsers
is_channel ArduinoSlack.h /^ bool is_channel;$/;" m struct:SlackUsersConversations
makeGetRequest ArduinoSlack.cpp /^int ArduinoSlack::makeGetRequest(const char *command)$/;" f class:ArduinoSlack
makePostRequest ArduinoSlack.cpp /^int ArduinoSlack::makePostRequest(const char *command, const char *body, const char *contentType)$/;" f class:ArduinoSlack
messages ArduinoSlack.h /^ SlackMessage messages[30];$/;" m struct:SlackMessages
n_channels ArduinoSlack.h /^ int n_channels;$/;" m struct:SlackUsersConversations
n_messages ArduinoSlack.h /^ int n_messages;$/;" m struct:SlackMessages
n_messages ArduinoSlack.h /^ int n_messages;$/;" m struct:SlackMessage
name ArduinoSlack.h /^ char *name[NUM_USERS_TO_SUPPORT];$/;" m struct:SlackUsers
portNumber ArduinoSlack.h /^ int portNumber = 443;$/;" m class:ArduinoSlack
postMessage ArduinoSlack.cpp /^SlackMessage ArduinoSlack::postMessage(const char *channel, const char *text) {$/;" f class:ArduinoSlack
profileBufferSize ArduinoSlack.h /^ int profileBufferSize = 10000;$/;" m class:ArduinoSlack
purpose ArduinoSlack.h /^ char *purpose[200];$/;" m struct:SlackUsersConversations
setConvoHistoryBody ArduinoSlack.h /^ const char *setConvoHistoryBody =$/;" m class:ArduinoSlack
setCustomStatus ArduinoSlack.cpp /^SlackProfile ArduinoSlack::setCustomStatus(const char *text, const char *emoji, int expiration)$/;" f class:ArduinoSlack
setEndpointBody ArduinoSlack.h /^ const char *setEndpointBody =$/;" m class:ArduinoSlack
setMessageBody ArduinoSlack.h /^ const char *setMessageBody =$/;" m class:ArduinoSlack
setPresence ArduinoSlack.cpp /^bool ArduinoSlack::setPresence(const char *presence)$/;" f class:ArduinoSlack
skipHeaders ArduinoSlack.cpp /^void ArduinoSlack::skipHeaders(bool tossUnexpectedForJSON)$/;" f class:ArduinoSlack
slack_server_cert ArduinoSlackCert.h /^const char *slack_server_cert = "-----BEGIN CERTIFICATE-----\\n"$/;" v
statusEmoji ArduinoSlack.h /^ char *statusEmoji;$/;" m struct:SlackProfile
statusExpiration ArduinoSlack.h /^ int statusExpiration;$/;" m struct:SlackProfile
statusText ArduinoSlack.h /^ char *statusText;$/;" m struct:SlackProfile
stripBadDataFromClientResponse ArduinoSlack.cpp /^void ArduinoSlack::stripBadDataFromClientResponse(char *payload) {$/;" f class:ArduinoSlack
text ArduinoSlack.h /^ char *text;$/;" m struct:SlackMessage
topic ArduinoSlack.h /^ char *topic[200];$/;" m struct:SlackUsersConversations
type ArduinoSlack.h /^ char *type;$/;" m struct:SlackMessage
userid ArduinoSlack.h /^ char *userid;$/;" m struct:SlackMessage
username ArduinoSlack.h /^ char *username;$/;" m struct:SlackMessage
usersConversations ArduinoSlack.cpp /^SlackUsersConversations ArduinoSlack::usersConversations()$/;" f class:ArduinoSlack