Replace twitter app with generic http-post-auth
Twitter removed http basic auth from the api in august 2010, but this underlying code is a good example of doing http basic auth in contiki. The app has been renamed, and some fixes applied to make it build cleanly.
This commit is contained in:
parent
96e85cc69a
commit
7345579ad6
2
apps/http-post-auth/Makefile.http-post-auth
Normal file
2
apps/http-post-auth/Makefile.http-post-auth
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
http-post-auth_src = http-post-auth.c
|
||||||
|
http-post-auth_dsc =
|
|
@ -32,16 +32,15 @@
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \file
|
* \file
|
||||||
* Contiki interface to posting Twitter messages
|
* Contiki interface to post to http basic auth services
|
||||||
* \author
|
* \author
|
||||||
* Adam Dunkels <adam@sics.se>
|
* Adam Dunkels <adam@sics.se>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "contiki.h"
|
#include "contiki.h"
|
||||||
#include "contiki-net.h"
|
#include "contiki-net.h"
|
||||||
#include "shell.h"
|
|
||||||
|
|
||||||
#include "twitter.h"
|
#include "http-post-auth.h"
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -50,7 +49,9 @@
|
||||||
#define MAX_MESSAGE 160
|
#define MAX_MESSAGE 160
|
||||||
#define MAX_LENGTH 10
|
#define MAX_LENGTH 10
|
||||||
|
|
||||||
struct twitter_state {
|
#define HOST_NAME "api.example.org"
|
||||||
|
|
||||||
|
struct http_post_auth_state {
|
||||||
unsigned char timer;
|
unsigned char timer;
|
||||||
struct psock sin, sout;
|
struct psock sin, sout;
|
||||||
char lengthstr[MAX_LENGTH];
|
char lengthstr[MAX_LENGTH];
|
||||||
|
@ -60,9 +61,11 @@ struct twitter_state {
|
||||||
uip_ipaddr_t addr;
|
uip_ipaddr_t addr;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct twitter_state conn;
|
struct http_post_auth_state conn;
|
||||||
|
|
||||||
|
#ifndef DEBUG
|
||||||
#define DEBUG 0
|
#define DEBUG 0
|
||||||
|
#endif
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#define PRINTF(...) printf(__VA_ARGS__)
|
#define PRINTF(...) printf(__VA_ARGS__)
|
||||||
|
@ -70,7 +73,7 @@ struct twitter_state conn;
|
||||||
#define PRINTF(...)
|
#define PRINTF(...)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
PROCESS(twitter_process, "Twitter client");
|
PROCESS(http_post_auth_process, "HTTP POST auth client");
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static uint8_t
|
static uint8_t
|
||||||
base64_encode_6bits(uint8_t c)
|
base64_encode_6bits(uint8_t c)
|
||||||
|
@ -123,15 +126,15 @@ base64_encode_24bits(const uint8_t inputdata[], char outputdata[], int len)
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
int
|
int
|
||||||
twitter_post(const uint8_t *username_password, const char *msg)
|
http_post_auth(const uint8_t *username_password, const char *msg)
|
||||||
{
|
{
|
||||||
int len;
|
int len;
|
||||||
int i, j;
|
int i, j;
|
||||||
struct twitter_state *s;
|
struct http_post_auth_state *s;
|
||||||
|
|
||||||
process_exit(&twitter_process);
|
process_exit(&http_post_auth_process);
|
||||||
|
|
||||||
/* s = (struct twitter_state *)memb_alloc(&conns);*/
|
/* s = (struct http_post_auth_state *)memb_alloc(&conns);*/
|
||||||
s = &conn;
|
s = &conn;
|
||||||
if(s == NULL) {
|
if(s == NULL) {
|
||||||
PRINTF("Could not allocate memory for the tweet\n");
|
PRINTF("Could not allocate memory for the tweet\n");
|
||||||
|
@ -159,12 +162,12 @@ twitter_post(const uint8_t *username_password, const char *msg)
|
||||||
PRINTF("message '%s'\n", s->message);*/
|
PRINTF("message '%s'\n", s->message);*/
|
||||||
|
|
||||||
/* Spawn process to deal with TCP connection */
|
/* Spawn process to deal with TCP connection */
|
||||||
process_start(&twitter_process, (char *)s);
|
process_start(&http_post_auth_process, (char *)s);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static int
|
static int
|
||||||
handle_output(struct twitter_state *s)
|
handle_output(struct http_post_auth_state *s)
|
||||||
{
|
{
|
||||||
PSOCK_BEGIN(&s->sout);
|
PSOCK_BEGIN(&s->sout);
|
||||||
/* Send POST header */
|
/* Send POST header */
|
||||||
|
@ -178,7 +181,7 @@ handle_output(struct twitter_state *s)
|
||||||
|
|
||||||
/* Send Agent header */
|
/* Send Agent header */
|
||||||
PSOCK_SEND_STR(&s->sout, "User-Agent: Contiki 2.x\r\n");
|
PSOCK_SEND_STR(&s->sout, "User-Agent: Contiki 2.x\r\n");
|
||||||
PSOCK_SEND_STR(&s->sout, "Host: twitter.com\r\n");
|
PSOCK_SEND_STR(&s->sout, "Host: " HOST_NAME "\r\n");
|
||||||
PSOCK_SEND_STR(&s->sout, "Accept: */*\r\n");
|
PSOCK_SEND_STR(&s->sout, "Accept: */*\r\n");
|
||||||
|
|
||||||
/* Send Content length header */
|
/* Send Content length header */
|
||||||
|
@ -202,7 +205,7 @@ handle_output(struct twitter_state *s)
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static int
|
static int
|
||||||
handle_input(struct twitter_state *s)
|
handle_input(struct http_post_auth_state *s)
|
||||||
{
|
{
|
||||||
PSOCK_BEGIN(&s->sin);
|
PSOCK_BEGIN(&s->sin);
|
||||||
|
|
||||||
|
@ -212,26 +215,26 @@ handle_input(struct twitter_state *s)
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
handle_connection(struct twitter_state *s)
|
handle_connection(struct http_post_auth_state *s)
|
||||||
{
|
{
|
||||||
handle_input(s);
|
handle_input(s);
|
||||||
handle_output(s);
|
handle_output(s);
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
PROCESS_THREAD(twitter_process, ev, data)
|
PROCESS_THREAD(http_post_auth_process, ev, data)
|
||||||
{
|
{
|
||||||
struct twitter_state *s = data;
|
struct http_post_auth_state *s = data;
|
||||||
struct uip_conn *conn;
|
struct uip_conn *conn;
|
||||||
|
|
||||||
PROCESS_BEGIN();
|
PROCESS_BEGIN();
|
||||||
|
|
||||||
/* Lookup host "twitter.com" */
|
/* Lookup host */
|
||||||
|
|
||||||
/* XXX for now, just use 128.121.146.228 */
|
/* XXX for now, just use 128.121.146.228 */
|
||||||
uip_ipaddr(&s->addr, 128,121,146,228);
|
uip_ipaddr(&s->addr, 128,121,146,228);
|
||||||
|
|
||||||
|
|
||||||
/* Open a TCP connection to port 80 on twitter.com */
|
/* Open a TCP connection to port 80 */
|
||||||
conn = tcp_connect(&s->addr, uip_htons(80), s);
|
conn = tcp_connect(&s->addr, uip_htons(80), s);
|
||||||
if(conn == NULL) {
|
if(conn == NULL) {
|
||||||
PRINTF("Could not open TCP connection\n");
|
PRINTF("Could not open TCP connection\n");
|
||||||
|
@ -243,7 +246,7 @@ PROCESS_THREAD(twitter_process, ev, data)
|
||||||
PROCESS_WAIT_EVENT();
|
PROCESS_WAIT_EVENT();
|
||||||
|
|
||||||
if(ev == tcpip_event) {
|
if(ev == tcpip_event) {
|
||||||
struct twitter_state *s = (struct twitter_state *)data;
|
struct http_post_auth_state *s = (struct http_post_auth_state *)data;
|
||||||
|
|
||||||
if(uip_closed() || uip_aborted() || uip_timedout()) {
|
if(uip_closed() || uip_aborted() || uip_timedout()) {
|
||||||
if(uip_closed()) {
|
if(uip_closed()) {
|
|
@ -30,9 +30,13 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __TWITTER_H__
|
#ifndef __HTTP_POST_AUTH_H__
|
||||||
#define __TWITTER_H__
|
#define __HTTP_POST_AUTH_H__
|
||||||
|
|
||||||
int twitter_post(const uint8_t *username_password, const char *message);
|
#include "contiki-net.h"
|
||||||
|
|
||||||
#endif /* __TWITTER_H__ */
|
PROCESS_NAME(http_post_auth_process);
|
||||||
|
|
||||||
|
int http_post_auth(const uint8_t *username_password, const char *message);
|
||||||
|
|
||||||
|
#endif /* __HTTP_POST_AUTH_H__ */
|
|
@ -1,2 +0,0 @@
|
||||||
twitter_src = twitter.c
|
|
||||||
twitter_dsc =
|
|
Loading…
Reference in a new issue