M src/oauth-easy.adb +1 -36
@@ 224,42 224,7 @@ package body OAuth.Easy is
(To_String (Result), Context.Token, Context.Token_Secret);
end Request_Token;
- procedure Access_Token (Context : in out OAuth_Context;
- URL : in String;
- Method : in String;
- Verifier : in String;
- User_Id : out Unbounded_String;
- Name : out Unbounded_String) is
-
- Temp_Token : String := To_String (Context.Token);
- Temp_Secret : String := To_String (Context.Token_Secret);
- Params : OAuth.Parameter_List.List := OAuth.Parameter_List.Empty_List;
- Digest_Val : SHA.Digest;
- Base_Str : Unbounded_String;
- Ctx : HMAC_SHA.HMAC_Context;
- Sig : Unbounded_String;
- H : Unbounded_String;
- Result : Charbuf.Char_Buffer;
- R_Code : Long_Integer;
- begin
- OAuth.Parameter_List.Append (Params, (Key => +"oauth_verifier",
- Value => +Verifier));
- OAuth.Parameter_Sorting.Sort (Params);
- As_Header (Context, URL, Method, Params, H);
-
- -- Put_Line ("Header: " & To_String (H));
- HTTP.Get_Page
- (URL => URL,
- Header_Key => "Authorization",
- Header_Value => To_String (H),
- Contents => Result,
- Response_Code => R_Code);
- -- Put_Line ("Result: " & To_String (Result));
- Parse_Access_Token
- (To_String (Result), Context.Token, Context.Token_Secret,
- User_Id, Name);
- end Access_Token;
-
+ -- OAuth info for access token returned as header suitable for HTTP request
procedure As_Header (Context : in out OAuth_Context;
URL : in String;
Method : in String;
M src/oauth-easy.ads +6 -7
@@ 19,18 19,17 @@ package OAuth.Easy is
procedure Init (Context : out OAuth_Context;
Consumer_Key : in String;
Consumer_Secret : in String);
+
+ procedure Parse_Access_Token (Input : String;
+ Token : out Unbounded_String;
+ Secret : out Unbounded_String;
+ User_Id : out Unbounded_String;
+ Name : out Unbounded_String);
procedure Request_Token (Context : in out OAuth_Context;
URL : in String;
Method : in String);
- procedure Access_Token (Context : in out OAuth_Context;
- URL : in String;
- Method : in String;
- Verifier : in String;
- User_Id : out Unbounded_String;
- Name : out Unbounded_String);
-
procedure As_Header (Context : in out OAuth_Context;
URL : in String;
Method : in String;
M +31 -7
@@ 58,17 58,41 @@ package body Twitter is
PIN : String;
User_Id : in out Unbounded_String;
Name : in out Unbounded_String) is
use OAuth;
Extra_Params : Parameter_List.List := Parameter_List.Empty_List;
Result : Charbuf.Char_Buffer;
OAuth_Header : Unbounded_String;
R_Code : Long_Integer;
Token : Unbounded_String;
Token_Secret : Unbounded_String;
begin
OAuth.Easy.Access_Token
OAuth.Parameter_List.Append
(Extra_Params, (Key => To_Unbounded_String ("oauth_verifier"),
Value => To_Unbounded_String (PIN)));
OAuth.Easy.As_Header
(Context => Manager.C,
URL => Access_Token_URL (Microblog),
Method => "GET",
Verifier => PIN,
User_Id => User_Id,
Name => Name);
Secrets.Set_Token (Microblog, To_String (OAuth.Easy.Get_Token (Manager.C)));
Secrets.Set_Token_Secret
(Microblog, To_String (OAuth.Easy.Get_Token_Secret (Manager.C)));
Parameters => Extra_Params,
Header => OAuth_Header);
HTTP.Get_Page
(URL => Access_Token_URL (Microblog),
Header_Key => "Authorization",
Header_Value => To_String (OAuth_Header),
Contents => Result,
Response_Code => R_Code);
Put_Line ("Access_Token: " & Charbuf.To_String (Result));
OAuth.Easy.Parse_Access_Token
(Input => Charbuf.To_String (Result),
Token => Token,
Secret => Token_Secret,
User_Id => User_Id,
Name => Name);
OAuth.Easy.Set_Token (Manager.C, To_String (Token));
OAuth.Easy.Set_Token_Secret (Manager.C, To_String (Token_Secret));
Secrets.Set_Token (Microblog, To_String (Token));
Secrets.Set_Token_Secret (Microblog, To_String (Token_Secret));
end Auth_Give_PIN;
procedure Homeline (Manager : in out Twitter_Type;